问题
两组分别来自两个群体的样本。要判断这两组样本的均值是否一致。
解决方案
调用t.test函数做t检验:
代码
> t.test(x, y)
默认情况下,t.test会假设数据是不成对的。如果观察是成对的(即每一个Xi都对应一个Yi),应该设置paired=TRUE:
代码
> t.test(x, y, paired=TRUE)
无论是哪种情况,t.test都会计算出一个P值。通常来说,如果P值小于0.05,就认为是有明显差异;如果P值大于0.05则可以认为差异不显著:
若样本较小,那么总体必须是正态分布。这里的小通常是小于20个数据点。
若两个总体的方差一致,应该设置var.equal=TRUE得到不保守检验(less conservative test)(译者注:这个说法没遇到过)
讨论
我经常用t检验快速地查看两个总体的均值是否有差异。这需要样本较大,其中的观察应不少于20个,或者总体是正态分布的。这里并不严格要求“正态分布”。数据的分布大概呈钟型即可。这里一个重要的问题是,数据中的观察是否是成对的,这将会导致不同的结论。假设我们想知道早上喝咖啡是否能提高SAT成绩。我们有两种实验方式:
随机选择一组人。让他们参加两次SAT考试,一次早上喝咖啡,另一次没喝咖啡。每个人就会有两个SAT成绩。这是成对观察。
随机选择两组人。一组人早上喝咖啡后去参加SAT考试。另一组直接参加考试。每个人都会有一个成绩,但这些成绩是不成对的。
从统计学上来说,这两个实验是完全不同的。第一个实验中,每个人有两个观察(喝咖啡和没喝咖啡),这两个在统计上是不独立的。而在实验2中,数据是独立的。
如果将成对观察(实验1)的结果错误地当作非成对观察(实验2)的结果进行分析,就会得到P值是0.9867:
代码
> t.test(x,y)
Welch Two Sample t-test
data: x and y
t = -0.0166, df = 198, p-value = 0.9867
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-30.56737 30.05605
sample estimates:
mean of x mean of y
501.2008 501.4565
P值比较大,可以推断出这两组间没有显著差别。同样的数据,但现在我们将样本设为成对的:
代码
> t.test(x, y, paired=TRUE)
Paired t-test
data: x and y
t = -2.3636, df = 99, p-value = 0.02005
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.4702824 -0.0410375
sample estimates:
mean of the differences
-0.2556599
P值约为0.02005,我们得到了完全相反的结论。
扩展阅读
如果总体不是正态分布(钟状),或者是样本太小,就不适合使用t检验。遇到这种情况可以考虑Wilcoxon-Mann-Whitney检验,相应的函数是wilcox.test。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。