t检验和wilcoxon秩和检验是用于检验两独立样本定量资料的常用方法。t检验是参数方法,需要资料满足正态性和方差齐性的假设,而Wilcoxon秩和检验是非参数方法。我一直感觉,参数方法比非参数方法检验效能更高。其实,我忘掉了一个前提,这个结论只有在资料符合t检验假设的情况下才成立。当资料不符合正态性和方差齐性时,t检验的。
R里面,做t检验和wilcoxon秩和检验的函数分别是:t.test, wilcox.test
其中t.test的帮助文件中举了这样一个有趣的例子:
t.test(1:10,y=c(7:20))
Welch Two Sample t-test data: 1:10 and c(7:20)
t = -5.4349, df = 21.982, p-value = 1.855e-05
alternative hypothesis: true difference in means is not equal to 0
t.test(1:10,y=c(7:20,200))
Welch Two Sample t-test data: 1:10 and c(7:20, 200)
t = -1.6329, df = 14.165, p-value = 0.1245
alternative hypothesis: true difference in means is not equal to 0
首先注意到自由度不为整数,事实上,t.test默认的是用Welch modification来修正t统计量和自由度的计算,《卫生统计学》(赵耐青,陈峰主编)P97 中也有介绍。
那么我们来看这两个检验:第二个检验中y仅仅比第一个中的y多了一个200,这样y的均数肯定是增加了,感觉和x的差异也更大了,但是检验反而不显著了。因为增加的200大大地增大了方差,从而t大大缩小了。同样的例子,我们用wilcox.test:
> wilcox.test(1:10,y=c(7:20,200))
Wilcoxon rank sum test with continuity correction data: 1:10 and c(7:20, 200) W = 8, p-value = 0.0002229 alternative hypothesis: true location shift is not equal to 0
alternative hypothesis: true difference in means is not equal to 0
可以看出检验结果显著。
因此,在数据呈严重偏态分布或有离群值的时候,可不要用t检验。它可能检验不出很明显的均数差异。
进哥哥,提供一个我看到的例子供参考:
x <- c(100, 200, 300)
y 0.05变成了p<0.01, 而秩和检验没有变化。如果我们只能拿到TPM或log2TPM的数据,那在这个基础上做差异分析所能用的统计检验方法就建议是无参方法,例如wilcoxon秩和检验。尽管log2转换会让偏倚的数据更符合钟形曲线(正态分布),但你不能在基础上用t-test。
受教了,谢谢啦