R语言入门秘录14/25:比较两组样本的均值

数据分析网整理自tbkken的《R语言入门25招》,一招招技能带你走进R语言。

问题

两组分别来自两个群体的样本。要判断这两组样本的均值是否一致。

解决方案

调用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」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(0)
上一篇 2016-01-07 14:31
下一篇 2016-01-09 14:34

相关文章

关注我们
关注我们
分享本页
返回顶部