从技术上讲,参考类别和测试方向取决于因子变量的编码方式。使用您的玩具数据:
> wilcox.test(x ~ y, data=data, alternative="greater")
Wilcoxon rank sum test with continuity correction
data: x by y
W = 52, p-value = 1
alternative hypothesis: true location shift is greater than 0
> wilcox.test(x ~ y, data=data, alternative="less")
Wilcoxon rank sum test with continuity correction
data: x by y
W = 52, p-value < 2.2e-16
alternative hypothesis: true location shift is less than 0
请注意,两种情况下的 W 统计量是相同的,但测试使用的是采样分布的相反尾部。现在让我们看一下因子变量:
> levels(data$y)
[1] "A" "B"
我们可以对其进行重新编码以使“B”成为第一级:
> data$y <- factor(data$y, levels=c("B", "A"))
现在我们有:
> levels(data$y)
[1] "B" "A"
请注意,我们并没有更改数据本身,只是在“幕后”对分类变量进行编码:
> head(data)
x y
1 0.4395244 A
2 0.7698225 A
3 2.5587083 A
4 1.0705084 A
5 1.1292877 A
6 2.7150650 A
> aggregate(data$x, by=list(data$y), mean)
Group.1 x
1 B 5.292817
2 A 1.034404
但是现在测试的方向颠倒了:
> wilcox.test(x ~ y, data=data, alternative="greater")
Wilcoxon rank sum test with continuity correction
data: x by y
W = 2448, p-value < 2.2e-16
alternative hypothesis: true location shift is greater than 0
W 统计量不同,但p值alternative="less"
与具有原始顺序的类别的测试相同。对于原始数据,可以解释为“从 B 到 A 的位置偏移小于 0”,对于重新编码的数据,它可以解释为“从 A 到 B 的位置偏移大于 0”,但这实际上是相同的假设(但请参阅 Glen_b 对问题的评论以获得正确的解释)。
因此,在您的情况下,您想要的测试似乎是alternative="less"
(或者,等效地,alternative="greater"
使用重新编码的数据)。这有帮助吗?