[程式] [R]用R軟體算spearman相關係數

看板Statistics作者 (囧)時間13年前 (2013/02/17 01:35), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/1
[軟體程式類別]: R軟體 [程式問題]: 手算spearman相關係數與R軟體算出者不同 [軟體熟悉度]: 低(1~3個月) [問題敘述]: 資料如下: x: 19,20,21,23,23,24,25,25,28 y: 4.8,5.3,6.2,7,9,5.4,6,10.3,8.5 使用R軟體和手算(搭配Excel計算)結果不相同。 手算結果: 0.616666667 R軟體計算結果: Spearman's rank correlation rho data: x and y S = 46.384, p-value = 0.07892 alternative hypothesis: true rho is not equal to 0 sample estimates: rho 0.613467 警告訊息: In cor.test.default(x, y, method = "spearman") : Cannot compute exact p-values with ties [程式範例]: R語言程式碼如下: x <- c(19,20,21,23,23,24,25,25,28) y <- c(4.8,5.3,6.2,7,9,5.4,6,10.3,8.5) cor.test(x,y,method="spearman") Excel計算過程如下: x y rank_x rank_y di di^2 19 4.8 1 1 0 0 20 5.3 2 2 0 0 21 6.2 3 5 -2 4 23 7 4.5 6 -1.5 2.25 23 9 4.5 8 -3.5 12.25 24 5.4 6 3 3 9 25 6 7.5 4 3.5 12.25 25 10.3 7.5 9 -1.5 2.25 28 8.5 9 7 2 4 sum of di^2=46 9*(9^2-1)=720 1-[6*46/720]=0.616666667 請問R出現錯誤訊息代表什麼意思? 又為何兩者計算結果有些微差異? 感謝指教! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.22.135 ※ 編輯: anovachen 來自: 111.255.22.135 (02/17 01:38)

02/17 01:50, , 1F
我根據wiki的spearman的公式算出來和R的結果相符
02/17 01:50, 1F

02/17 01:51, , 2F
接續你定義的x, y:
02/17 01:51, 2F

02/17 01:51, , 3F
x.mu <- rank(x) - mean(rank(x))
02/17 01:51, 3F

02/17 01:52, , 4F
y.mu <- rank(y) - mean(rank(y))
02/17 01:52, 4F

02/17 01:52, , 5F
sum(x.mu * y.mu) / sqrt( sum(x.mu^2) * sum(y.mu^2) )
02/17 01:52, 5F
我手算用的公式是 rho=1-{6sum(di^2)/[n(n^2-1)]} 也就是wiki寫的"simple procedure",也是大部分生統書上寫的公式。 所以...這題用兩種算法答案會有出入?! (這是之前朋友請我驗算標準答案的題目, 是某校期末考題... 沒想到竟然有兩種解法,答案不同但都能算對? 可是當時只有一個標準答案而已= =)

02/17 13:25, , 6F
"警告訊息"是因為你的資料有相同值且樣本數較少,你可以
02/17 13:25, 6F

02/17 13:26, , 7F
看一下?cor.test中的參數"exact=NULL"說明
02/17 13:26, 7F

02/17 13:27, , 8F
基本上不影響相關係數的計算,只是p-value不準而已
02/17 13:27, 8F
以上感謝回答! ※ 編輯: anovachen 來自: 111.255.22.135 (02/17 14:08)
文章代碼(AID): #1H7yDdgA (Statistics)