(前言:我既不是統計學家也不是程序員,我在人文科學工作,所以憐憫我的靈魂)。在歐幾里德距離計算R沒有意義
我需要計算一系列R.點我一直在使用DIST(之間的歐氏距離),具體如下:
> x <- c(0,0)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 10
到目前爲止,一切都很好。但是當我看着我的結果(用實際數字)時,他們很可怕。太多以至於我認爲我的R腳本從錯誤的列中獲取數據。但我檢查過,事實並非如此。
所以我開始玩弄玩具號碼,我很驚喜。上面的例子中(垂直線)正確工作,象以下(水平線):
> x <- c(0,10)
> y <- c(0,0)
> dist(rbind(x,y))
x
y 10
但是,當線的兩個點的形式是對角的,奇異隨之而來:
> x <- c(0,10)
> y <- c(0,10)
> dist(rbind(x,y))
x
y 0
甲距離0?咦?這是不對的。
而當點是相同的(在我的數據很有可能),我們往下走了兔子洞:
> x <- c(0,0)
> y <- c(10,10)
> dist(rbind(x,y))
x
y 14.14214
如果此事爲0?畢竟,這些觀點是相同的,所以它們之間沒有距離。
爲防萬一dist()有問題,我嘗試手動實現公式,由維基百科進行。同樣的結果:
> sqrt(sum((x - y)^2))
[1] 14.14214
正如我前面所說,我的數學背景是最小的,所以我完全相信,這裏的錯誤是我的。如果是這樣,請解釋它是什麼以及如何糾正它。但從我現在的立場來看,似乎有些錯誤。
而最糟糕的是,我無法分析我的數據。
+1對於遵循文檔指南的明確的第一篇文章。 –