R和Python中Wilcoxon测试的区别
问题描述:
我试图在R和python的scipy.stats包中运行Wilcoxon测试。但是我得到不同的结果任何人都可以解释?R和Python中Wilcoxon测试的区别
test = [6.2151308, 4.7956451, 4.7473738, 5.4695828, 6.3181463, 2.8617239, -0.8105824, 3.9456856, 4.6735000, 4.1067193, 5.7656002, 2.2237666, 1.0354143, 4.9547707, 5.3156348, 4.8163154, 3.4024776, 4.2876854, 6.1227500]
z_statistic, p_value = wilcoxon(np.array(test) - np.log(1.0))
print "one-sample wilcoxon-test", p_value
one-sample wilcoxon-test 0.000155095772796
即使他们两人的p值足够低,以拒绝零假设,p值:
我的R中
> des2
[1] 6.2151308 4.7956451 4.7473738 5.4695828 6.3181463 2.8617239
[7] -0.8105824 3.9456856 4.6735000 4.1067193 5.7656002 2.2237666
[13] 1.0354143 4.9547707 5.3156348 4.8163154 3.4024776 4.2876854
[19] 6.1227500
> wilcox.test(des2, mu=0, conf.int = T)
Wilcoxon signed rank test
data: des2
V = 189, p-value = 7.629e-06
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
3.485570 5.160925
sample estimates:
(pseudo)median
4.504883
我的代码在Python代码有3个数量级的差异,我不明白为什么
scipy的文档告诉我们:'因为正常的近似值用于计算,所用的样本应该很大 - 'wilcox.test'的文档说:'默认情况下(如果确切没有指定),如果样本包含少于50个有限值并且没有关系,则计算精确的p值。否则,会使用正常的近似值。“不过,不确定这是否唯一的区别。 – cel
我使用Wilcox,因为我不想要一个正常的近似...因此我应该使用R版本吗? – user1871528
R的测试不接近p值。这对小样本量至关重要。 – cel