原标题: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返回搜狐,查看更多

责任编辑:

r语言中mpg数据_R语言数据实战 | 统计检验相关推荐

  1. R语言中dim函数_R语言中的方差分析方法汇总

    方差分析,是统计中的基础分析方法,也是我们在分析数据时经常使用的方法.下面我总结一下R语言如何对常用的方差分析进行操作. 1. 方差分析的假定 上面这个思维导图,也可以看出,方差分析有三大假定:正态, ...

  2. R语言中dim函数_R语言--向量化计算(apply族函数)

    R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色.apply族函数是由apply.sapply.lapply.mapply.tapply等函数组成的.熟练使用apply族函数 ...

  3. R语言中dim函数_R语言 常见函数知识点梳理与解析 | 精选分析

    目 录 1.str() 显示数据集和变量类型,并简要展示数据集情况 2.subset()  取子集 3.which.min(), which.max()和which() 4.pmin( )/ pmax ...

  4. r语言中paste函数_R中的paste()函数-简要指南

    r语言中paste函数 Using the paste() function in R will be straight and simple. In this tutorial let's see ...

  5. r语言中mpg数据_R语言数据筛选整理包dplyr

    dplyr软件包是R中功能最强大,最受欢迎的软件包之一.该软件包由最受欢迎的R程序员Hadley Wickham编写,他编写了许多有用的R软件包,如ggplot2,tidyr等.本文包括一些示例和如何 ...

  6. r语言中mpg数据_R语言常用的数据处理的包(1)

    在R中有很多的内置函数,比如transform().rbind().cbind()等函数,这些函数我们可以直接使用,除此之外,还有常见的几种包在处理数据的时候非常好用. dplyr包 dplyr包是H ...

  7. r语言中mpg数据_零基础生信入门第一课——R语言数据清洗,超详细讲解,建议收藏!...

    小伙伴们大家好!今天我要用一篇推文精要概括数据清洗中的最基本最关键的步骤,对于零基础的学员一定会有很大收获!数据清洗是完成一篇生信文章最基本但也是最终要的准备工作,如果不会数据清洗,就要错过很多优质数 ...

  8. r语言中mpg数据_R语言数据分析系列之五

    R语言数据分析系列之五 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. 这是一张用R语言生成的,虚拟的wordcloud云图,详细实现细节请參见我的github项目:https://gith ...

  9. r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化

    本文内容原创,未经作者许可禁止转载! 目录 一.前言 二.摘要 三.关键词 四.算法原理 五.经典应用 六.R建模 1.载入相关包(内含彩蛋): 1.1 library包载入 1.2 pacman包载 ...

最新文章

  1. 24 个你应该了解的 PHP 库
  2. hive窗口函数分组排序并取第一个值_Hive(七)Hive分析窗口函数
  3. Android Studio通过JNI调用NDK程序
  4. #{}不自动改参数类型_ORT-260电动打包机常规参数
  5. linux如何退出python编辑器_centos linux 终端已经调成python3,怎么安装python3的IDLE编译器,...
  6. 再不自动化就晚啦!优云教你4步打造基于CentOS的产品镜像
  7. django-模型类的修改-添加与删除字段
  8. CMOS Sensor的调试经验分享(转)
  9. M1 Mac禁用电池运行状况管理,打开/关闭优化电池和充电方法有哪些?
  10. Google gae部署php简单说明
  11. ubuntu13.10 归档管理器解压zip文件中文乱码问题的解决(亲测成功)
  12. 23.方法重写的本质与虚方法表的使用
  13. 多颗微粒的阵列光镊系统设计
  14. 快速爬取腾讯招聘信息
  15. 计算机英语 自我介绍,计算机专业英文自我介绍
  16. 尼古拉·特斯拉,到底有多神?
  17. 基于神经网络的语音频带扩展
  18. ps切片工具里没有html,PS切片工具怎么用?PS切片工具的使用方法
  19. npm打包报错ERROR in ./src/main/webapp/app/core解决方法
  20. 电容电流状态观测器的三相LCL型PWM变流器控制

热门文章

  1. linux下mysql降权处理,Windows下降权MYSQL和apche的运行级别
  2. 一文详解电商直播四大平台的优劣势
  3. Meltdown漏洞和KPTI补丁如何影响机器学习性能?
  4. 高质蓝牙音乐方案解决蓝牙立体声耳机4个难题
  5. 居家办公必备的5款功能强大且免费的软件
  6. qq计算机丢失msvcp100,Windows7系统msvcr100.dll丢失怎么办?
  7. 华硕主板BIOS 不能选择某个硬盘的启动项 的解决
  8. 绪论——假设空间、归纳偏好、发展历程
  9. 毛书卿3.24纸白银原油今晚行情涨跌独家分析-黄金操作指导
  10. TrendNET路由器权限绕过漏洞(CVE-2018-7034)