2016-11-26 32 views
1

我使用的是內置iris數據集,我已經將數據減少到只有數字列,並創建了一個規模數據集:平方歐氏距離和兩個標準化變量之間的相關性:比例因子?

scaled <- scale(iris[1:4]) 

但我嘗試做以下時,會丟失:

使用dist()函數計算列間的歐幾里德距離scaled 。證明這些歐幾里德距離的平方與(1 - correlation)成正比。這裏比例因子的價值是什麼?

我試着用dist(),但不認爲我得到正確的輸出:

dist(scaled) 

這打印出,我不能完全肯定是做什麼用一個巨大的輸出。我不知道如何解決這個問題。當它詢問比例因子的價值時,我甚至不知道它意味着什麼。我敢肯定的是,它的相關性要我把它比作是

cor(scaled) 
#    Sepal.Length Sepal.Width Petal.Length Petal.Width 
#Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411 
#Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259 
#Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654 
#Petal.Width  0.8179411 -0.3661259 0.9628654 1.0000000 

但我怎麼比較從dist()這大量的輸出?

回答

0

這打印出一個大規模的輸出,我不完全確定該怎麼處理。

你想要dist(t(scaled)),因爲dist()需要行之間的距離。考慮縮放的數據集scaled。列之間的平方歐氏距離矩陣是:

## I have used `c()` outside to coerce it into a plain vector 
d <- c(dist(t(scaled))^2) 
# [1] 333.03580 38.21737 54.25354 425.67515 407.10553 11.06610 

相關矩陣的下三角是(我們要下三角,因爲距離矩陣是給下三角部分):

corr <- cor(scaled)[lower.tri(diag(4))] 
# [1] -0.1175698 0.8717538 0.8179411 -0.4284401 -0.3661259 0.9628654 

然後,我們只是做你的問題問什麼來比較:

d/(1 - corr) 
# [1] 298 298 298 298 298 298 

iris數據集有150行,你應該認識到298 = 2 * (150 - 1)


更新

theoretical justification