作者anovachen (囧)
看板Statistics
标题[程式] [R]用R软体算spearman相关系数
时间Sun Feb 17 01:35:33 2013
[软体程式类别]:
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)
1F:推 Wush978:我根据wiki的spearman的公式算出来和R的结果相符 02/17 01:50
2F:→ Wush978:接续你定义的x, y: 02/17 01:51
3F:→ Wush978:x.mu <- rank(x) - mean(rank(x)) 02/17 01:51
4F:→ Wush978:y.mu <- rank(y) - mean(rank(y)) 02/17 01:52
5F:→ Wush978:sum(x.mu * y.mu) / sqrt( sum(x.mu^2) * sum(y.mu^2) ) 02/17 01:52
我手算用的公式是
rho=1-{6sum(di^2)/[n(n^2-1)]}
也就是wiki写的"simple procedure",也是大部分生统书上写的公式。
所以...这题用两种算法答案会有出入?!
(这是之前朋友请我验算标准答案的题目,
是某校期末考题...
没想到竟然有两种解法,答案不同但都能算对?
可是当时只有一个标准答案而已= =)
6F:→ diplazium:"警告讯息"是因为你的资料有相同值且样本数较少,你可以 02/17 13:25
7F:→ diplazium:看一下?cor.test中的参数"exact=NULL"说明 02/17 13:26
8F:→ diplazium:基本上不影响相关系数的计算,只是p-value不准而已 02/17 13:27
以上感谢回答!
※ 编辑: anovachen 来自: 111.255.22.135 (02/17 14:08)