r语言中mpg数据_R语言数据实战 | 统计检验

发布时间:2023-09-04 11:00

原标题:R语言数据实战 | 统计检验

1、单个总体均值的t检验

1. 什么是检验?

检验(test)是统计学中最重要的概念之一,在科学研究和实际业务中都有着广泛的应用。用一句话来概括就是:人们希望通过掌握的数据和其他背景知识确认某个假设是否成立(比如某种药物是否有效,股票是否有上扬的趋势,一种汽车的油耗是否为15mpg,一组病人血压的均值是否大于120mmHg)。

考虑一个只有赢或者输两种情况的赌局,每次获胜的概率p是未知的。一个赌徒想要确认在这个赌局中每次获胜的概率是否是0.5,或者说他希望确认这是否是一个公平的赌局。如果每次获胜的概率不是(更严格地说是小于等于)0.5,那么这名赌徒就不希望进入这个对他不利的赌局。在这里,这个未知的参数p是关键。假如这名赌徒旁观了其他人参加这个赌局获胜的情况,其他人一共赌了100局,其中获胜30次,那么如何通过这组数据(样本)来判断获胜概率是否是0.5呢?

在这个例子中,我们掌握了赌100次的获胜情况(数据),并且知道这个赌局只有输赢两种情况,每次获胜的概率p都是一样的(背景知识),我们希望确认p=0.5这个假设是否成立。统计学中解决此类问题的思路是:假设未知参数(p)是特定的值,然后通过数据判断这个假设是否合理(建立检验统计量等)。如果不合理,可以拒绝这个假设;如果合理,那么持保留意见,不去拒绝假设。

这里,假设p=0.5,统计学中也常常写作:p=0.5,也就是原假设:p=0.5。

如果这个赌局是公平的,那么一个人赌100局却只赢30局甚至更少的概率是多少呢?通过计算可知,这个概率大概是,也就是说,在一个公平的赌局下,一个人输那么惨,或者比这还惨的可能性是(小概率事件),这看起来不太可能。更可能是因为这个赌局本身就是不公平的(p不是0.5)才导致这个人输得那么惨。在这种情况下,我们认为之前的假设是不对的,统计学中也称作拒绝原假设。因此,认为这个赌局并不是公平的,也就是说拒绝了p=0.5这个假设。

2. 学生t检验

对于不同的假设和问题,统计学上有不同的检验来处理,以上的例子只是检验的一个特例而已。下面介绍的是非常常用的单个总体均值的假设检验,也称为学生t检验。学生t检验简称t检验,最早由William Sealy Gosset于1908年提出。Gosset受雇于都柏林的健力士酿酒厂担任统计学家, 他提出了t检验以降低啤酒质量监控的成本,并于1908年在Biometrika期刊上公布t检验,但因为商业机密的原因而被迫使用笔名Student,因此这个检验就叫做学生t检验。那么t检验通常用来解决哪类问题呢?

如果有一组从正态总体(背景知识)中抽出的样本(数据),但总体的平均水平未知,希望通过这组样本确认总体的平均水平是多少,那么t检验就大有作为了。下面通过著名的Iris数据来说明t检验的思想和在R语言中的实现。

Iris数据测量了三种鸢(yuan,一声)尾花卉的一些值,我们只看山鸢尾(setosa)这种植物的花萼长度的测量。首先在R中取出下面的数据集:

Iris数据集对50个setosa的花萼进行了测量,假设每个花萼的长度都是来自一个正态分布,但这个正态分布的总体均值(位置参数)和总体方差(尺度参数)都是不知道的。如果这时有个植物学家跑来跟你说,他对基因组的分析表明,这种植物花萼的总体均值是4.5cm,而我们想通过数据来看一看他的分析是否值得信赖。在这里,假设:=4.5cm。R可以计算最后的结果,也就是我们是否应该同意是4.5cm。

结果看起来有一些杂乱,下面教给读者查看结果最快的两种方式,这两种方式是等价的,可选用任何一种方式,但这两种方法也忽略了一些其他信息,稍后再做说明。

1)p-value:如果小于0.05,那么就拒绝原假设,也就是说我们认为花萼的均值不是4.5cm;如果p-value大于0.05,那么就不能拒绝原假设,也就是说我们认为这名植物学家说的话很可能是正确的,花萼的均值很有可能是4.5cm,我们并不能拒绝这一说法。

2)如果4.5不在95 percent confidence interval的区间里面,也就是说如果4.5不在(4.905824, 5.106176)之间的话,(在0.05的显著性水平下)拒绝原假设,否则的话不能拒绝原假设。

3. t检验进阶

上面就是t检验的思想和应用,下面稍微看一些t检验的变种形式和一些其他的信息。

(1)进行t检验的一个重要前提是数据来自一个正态分布,其中方差未知。如果知道方差的话,那么应该利用这一信息从而获得更佳的结果,这时应该使用z检验(检验统计量服从正态分布)。

(2)如何确认数据是否来自正态分布呢?一般来说有两种方法:第一种是问专家,查看历史情况,这是比较理想的情况。第二种是,如果对这一数据没有太多的背景知识,可以利用Q-Q图或者一些正态性检验(非参数检验方法)来判断数据是否来自正态分布。

(3)如果数据不是来自于正态分布,那怎么办呢?在样本量很大的情况下,还可以继续使用t检验,虽然不是特别精确。当然保守一点的话可以使用非参数的方法,此处不详述。

(4)如果这名植物学家说花萼的长度应该是一个大于4.5cm的数,但是具体是多少不太清楚。在这种情况下只需要调整一个参数就可以(单边假设检验)了。

这里alternative参数是指备择假设(的方向)。

(5)p-value反映了有多大信心去拒绝原假设。比如掷硬币,如果观察到100局中只获胜了10局,那么数据更加倾向于拒绝原假设,也就是说更有信心去拒绝原假设。这种情况下p-value都是很小的。换句话说,p-value越小,越有信心去拒绝原假设。

(6)t.test输出结果中的confidence interval是95%置信区间。假设检验和置信区间存在一一对应的关系,调用函数t.test的时候R会一并给出位置参数的置信区间。对于检验来说,只要假设的数字(这里是4.5)不在置信区间内,就拒绝原假设,否则就不能拒绝原假设。

(7)为什么一定要p-value小于0.05才能拒绝原假设呢?这里就会牵扯出显著性水平这个比较抽象的概念。在此不对显著性追根溯源,只是提醒读者,一般显著性水平会选择0.1、0.05和0.01这三个水平。

4. 总结

当有一组来自未知均值、未知方差的正态分布的样本,想判断它的总体均值是否等于(有时是大于或者小于)某个给定值时,单样本t检验[做单边假设检验时,很可能搞不清哪边做原假设,哪边做备择假设。一般情况下,我们能够控制犯第一类错误的概率(拒真),也就是我们更希望得到拒绝原假设的结论,因此常常把样本支持的证据放在备择假设。]就可以派上用场了。可以在R中调用t.test函数来进行单样本的t检验,t.test的部分参数列表如下:

t.test(x,alternative = c("two.sided", "less", "greater"),

mu = 0, conf.level=0.95,...)

其中,x为待检验的数据集,要求是numeric vector;alternative为备择假设的方向,分别对应双边、左侧和右侧检验;mu为原假设中想要检验的总体均值;conf.level为置信水平,对应着输出的置信区间。

2、两总体均值对比

前文介绍了单个总体均值的检验问题,它是利用样本提供的信息来判断原假设是否成立。只要把数据输入R,然后调出t.test,就能得出结果。下面要讲的是两总体的均值对比。

假如某公司要检验新生产的一批药对改善睡眠效果如何。老板给小王的任务是:检验一下这批药的平均效果。小王该如何做呢?如果老板能提供使用这批药之前的睡眠情况数据,是不是就可以给出这批药的效果呢?这就是今天要讲的两总体均值的t检验。

两总体均值t检验的目的是检验两个正态分布总体的均值之间是否有显著差异。比如,想要比较两个不同品种鸢尾花的花瓣平均长度是否一样,在R里面如何实现呢?回想一下,单样本总体均值检验我们用了t.test,那么这对两个总体是否一样适用呢?答案是肯定的。具体代码如下:

从结果看,p值小于0.05,拒绝原假设,即两个品种花瓣平均长度不等。但问题是,是否考虑正态分布和这两个总体的方差。t.test默认两总体方差是不等的,所以上面所做的检验是基于两总体方差不等的假设而做的检验,如果这两总体方差相等呢?其实也很简单,只要在t.test里添加var.equal=TRUE即可。代码虽然简单,但是做t检验一定要有这个意识,是不是正态,是不是满足方差齐性的假设[在实际数据分析时,往往采取“放弃治疗”的态度,直接做t检验。]。

回到前边药的例子,老板给小王拿来了两组数据:一组是用了这批药的群体的睡眠情况,一组是这群人还没有用这批药之前的睡眠情况。小王想,这很简单,使用t.test就搞定了。假设老板给小王拿来的数据集就是R中自带的sleep数据集。首先在R中调出这个数据集,通过R中的help,可以看到这个数据集第一列代表样本的睡眠情况(睡眠增加时间),第二列是样本所属组别(第一组和第二组可以理解成用药之前和用药之后),第三列是个体的ID,注意到这是同样10个人采取的两组措施。

为了更好地说明是两个总体的样本数据,手动创造两个样本数据集。将group为1的作为第一组,group为2的作为第二组,然后输入t.test。

结果显示,p值是0.07939,(在0.05的显著性水平下)不能拒绝两组均值相等的原假设,也就是说,用药和不用药效果是一样的。但问题是,这两组样本和之前的独立样本能一样吗?老板已经说明:这是同一组人用药前和用药后的数据。注意,是同一组人。其实,这就是两总体均值t检验的第二种类型,两配对总体均值的检验。

需要如何操作呢?只要在t.test里面让paired=TRUE即可。首先看结果,p值小于0.05,答案是拒绝原假设。而且两组均值差异估计是-1.58,第二组的均值要比第一组的大,看来这药有效果。由此可见,检验之前分清是独立总体还是配对总体很重要。

细心的读者可能会发现,这配对样本t检验不就是单样本t检验吗?是的,两个样本数据一做差,就变成一个样本。下面来看看结果是不是一样的。

对比发现,配对总体均值t检验和单总体均值t检验完全等价。

总的来说,在做t检验时,需要注意以下几点:

(1)两总体的t检验,比较的是总体均值。一般情况下,想比较的是两总体均值是否相等,即是否有显著差异,这时原假设是。如果有特定的研究目的,也可以检验它们的差异是否等于某个特定的值,即。

(2)做检验时,一定要弄清楚数据是独立还是配对,两种情况下使用的检验统计量不同,得到的结论也有差异。在t.test中,可以非常容易地用paired=TRUE来指定配对数据的情形。

(3)在学习t检验时,会学习各种假设、各种情形,比如总体是正态分布,两总体方差已知、未知、比值已知等。学习理论知识时,弄清楚这些事情非常有必要,帮你形成完整的知识体系,打下坚实的理论基础。但是在做实际数据分析时,往往就是假设不满足。在大样本的情况下,直接使用这些统计方法即可。

上边详细介绍了两总体t检验,这是在实际中(尤其是医学统计中)经常用到的检验方法。事实上,数据分析中的检验无处不在,比如在回归模型中对于估计系数的检验、模型整体的检验等。它们的原理大同小异,这里不做赘述,而是把重点放在对检验结果的解读上。

购买指南

《R语言:从数据思维到数据实战》

1

京东

2

当当网

3

天猫

https://detail.tmall.com/item.htm?spm=a220z.1000880.0.0.0A6pvS&id=581845865737返回搜狐,查看更多

责任编辑:

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号