使用data.frame或向量作为输入时,wilcox.test的结果不同

时间:2017-04-12 19:58:11

标签: r

所以我遇到了一个奇怪的差异,这取决于我如何用R中的wilcox.test()函数分析相同的数据。在这个例子中,我比较了两组中的值。我可以将它们作为两个单独的向量提供给wilcox.test函数,或者我可以给函数一个data.frame并使用公式来指定我想要进行的比较。奇怪的是,我最终得到了测试统计量(W)的不同值,具体取决于我使用的输入法。我在下面列举了一个例子(R v3.3.1):

#Prepare test data
wt_exp = c(0.59, 0.56, 0.45, 0.59, 0.54, 0.13, 0.25, 0.10, 0.15)
kd_exp = c(0.27, 0.27, 0.33, 0.25, 0.22, 0.2, 0.16, 0.2, 0.36, 0.58, 0.51)
test.data_frame = 
    data.frame(Expression = c(wt_exp, kd_exp),
               Genotype = rep(c("WT", "KD"),
                              times=c(length(wt_exp), length(kd_exp))))

#Wilcox test using two input vectors
wilcox.test(wt_exp, kd_exp)

# Result:
# Wilcoxon rank sum test with continuity correction
# 
# data:  wt_exp and kd_exp
# W = 55.5, p-value = 0.6756
# alternative hypothesis: true location shift is not equal to 0
# 
# Warning message:
#     In wilcox.test.default(wt_exp, kd_exp) :
#     cannot compute exact p-value with ties

#Wilcox test using data.frame and formula
wilcox.test(Expression ~ Genotype, data=test.data_frame)

# Result:
# Wilcoxon rank sum test with continuity correction
# 
# data:  Expression by Genotype
# W = 43.5, p-value = 0.6756
# alternative hypothesis: true location shift is not equal to 0
# 
# Warning message:
#     In wilcox.test.default(x = c(0.27, 0.27, 0.33, 0.25, 0.22, 0.2,  :
#                                      cannot compute exact p-value with ties

虽然我意识到在这种情况下p值是相同的,但我将会进行数千次这样的测试,我想确定原因,所以我不会这样做。需要对结果进行抽查。想法?

1 个答案:

答案 0 :(得分:2)

如果您有两个样本xy,则此测试的测试统计信息基本上是x值的排名之和。因此,对于测试统计而言,哪一组观察结果为x并且y为{1}}。比较

wilcox.test(wt_exp, kd_exp)
wilcox.test(kd_exp, wt_exp)

请注意,从后者获得的值对应于使用公式语法时获得的值。

请注意,这些都得到相同的p值,因为在生成p值之前,样本大小会对统计量进行归一化。