格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验

之前详细介绍了利用R语言进行统计描述,详情点击:R语言系列第三期:①R语言单组汇总及图形展示、R语言系列第三期:②R语言多组汇总及图形展示、R语言系列第三期:③R语言表格及其图形展示

从这个部分我们就开始为大家介绍统计推断的内容了,我们将重点放到相关统计函数的特定参数及其输出的解释上。

一些最基础的统计检验基本上都是比较连续数据之间的差异,可能是两个组之间的比较,也可能是单组与特定值或预设值之间的比较,这便是本章的主题了。

首先介绍两个函数:用来进行t检验的t.test()和进行Wilcoxon检验的wilcox.test()。它们能够对单样本、两独立样本与配对样本进行检验。

#Tips:统计推断的部分我们不会把重点放到统计原理上,如果对统计学原理感兴趣的朋友请查阅相关的统计书籍,我们只会把部分必须解释的统计内容呈现出来。

A. 单样本t检验

适用条件:满足正态分布的连续型数据,数据之间保持随机性和独立性。

适用范围:比较当前数据总体与单个预期值的大小。

实例:11位女性的每日摄入能量记录存放到intake变量中:

> intake=c(5260,5470,5640,6180,6390,6515,6805,7515,7516,8230,8770)

我们可以先进行简单的描述再来作推断:

> mean(intake)

[1] 6753.727

> sd(intake)

[1] 1142.19

> quantile(intake)

0%   25%   50%  75%  100%

5260.0  5910.0   6515.0  7515.5  8770.0

也许你想检验一下这些女性的摄入能量是不是与推荐值7725千焦相差甚远。首先,我们需要检验一下正态性,这里介绍一个最简单的正态性检验的方法:用夏皮罗-威尔克(Shapiro-Wilk)法检验数据正态性,即W检验,1965 年提出,适用于样本含量n ≤50 时的正态性检验。shapiro.test()

> shapiro.test(intake)

Shapiro-Wilk normality test

data:  intake

W = 0.95238, p-value = 0.6744

#Tips:重点是p-value的结果,这里的值是0.6744>0.05(检验水准也可以是0.1),满足正态性。如果P值过小的情况下,就不满足正态性了,可以先进行数据转换,比如说对数转换,平方根反正弦变换,倒数变换等等方法,如果都不能满足正态的话,使用非参数的方式计算,比如后文的Wilcoxon。另外检查数据正态性的方法有很多,这里不一一列举,其实前面作图的时候讲过的QQ图也可以用来检验正态性。

我们通过W检验,得知数据服从正态分布,那么我们接下来的要做的就是检验这个分布是否满足μ=7725。

> t.test(intake,mu=7725)

 One Sample t-test

data:  intake

t = -2.8203, df = 10, p-value = 0.01815

alternative hypothesis: true mean is not equal to 7725

95 percent confidence interval:

5986.394 7521.061

sample estimates:

mean of x

6753.727

结果解释:One Sample t-test

这里是对所做的检验类型的描述,告诉我们是单样本的t检验,在这个函数里,如果一个向量参数和一个mu参数,那么做的就是单组独立样本的t检验。

t = -2.8203, df = 10, p-value = 0.01815 

结果显示中t=-2.8203是统计量,df代表自由度,p-value是最终的p值,p=0.01815<0.05,于是在检验水准在0.05的条件下,拒绝零假设,认为数据显著地偏离了原假设中的均值7725千焦。

alternative hypothesis: true mean is not equal to 7725  

两个信息:1.原假设里的均值是7725;2.这是一个双侧检验(not equal to)。

95 percent confidence interval:

5986.394  7521.061

这个是均值的95%置信区间。置信区间也可以作为假设检验的一种方式,查看设定均值在不在这个区间内,如果不在,则可拒绝零假设。

sample estimates:

mean of x

6753.727

这最后一部分就是观测值的均值,是样本均值的点估计结果。

#Tips:这个函数还有几个可选的参数,除了mu设立的零假设的均值,还有alternative设定单侧检验还是双侧检验,默认双侧,如果设定成“greater”和“less”则成为单侧检验。还有一个conf.level=0.99/0.90等,来设定置信区间范围。也可以通过缩写的方式设定参数,比如al=“g”也是可以的。

B. Wilcoxon符号秩和检验(单样本)

t检验在数据来自正态分布时比较稳定,在不满足正态分布的数据也不错,尤其是大样本条件下,把握度相对较高。而如果想要使用不依赖数据分布的方法,就需要Wilcoxon这样的方法了,它们往往把数据替换成相应的顺序统计量,比较的是中位数。

对Wilcoxon秩和检验的实际应用基本上与t检验一致(对分布无要求)

> wilcox.test(intake,mu=7725)

Wilcoxon signed rank test

data:  intake

V = 8, p-value = 0.02441

alternative hypothesis: true location is not equal to 7725

#Tips:这里比t.test的输出短,因为一个非参数检验不会出现类似于参数估计以及置信区间的概念。

这里V代表正数对应的秩和。P=0.02441同样拒绝零假设,结论同t检验。

#Tips:除了跟t.test一样有mu和alternative两个参数外,还有一个correct参数,用于指示是否需要连续性校正,默认是校正的(T)。还有exact,用来指示是否精确计算。

C. 两样本t检验

我们以energy数据集作为例子,来比较一下肥胖和消瘦的两组人群的能量消耗是否有差别:

> attach(energy)

> energy

   expend stature

1    9.21   obese

2    7.53    lean

3    7.48    lean

4    8.08    lean

5    8.09    lean

...

17   8.79   obese

18   9.69   obese

19   9.68   obese

20   7.58    lean

21   9.19   obese

22   8.11    lean

这个数据框的两列包含了我们所需要的信息,分类变量stature包含了分组信息,而数值变量expend包含了能量消耗情况。我们只要传递一个模型方程,就能通过R中的t.test和wilcox.test来分析这样格式的数据。

我们的目的是比较两组的能量消耗水平是否有差异,所以我们使用如下的t检验(设定数据满足正态分布):

> t.test(expend~stature)

Welch Two Sample t-test

data:  expend by stature

t = -3.8555, df = 15.919, p-value = 0.001411

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

 -3.459167 -1.004081

sample estimates:

 mean in group lean         mean in group obese

8.066154           10.297778

这里“~”指明expend是通过stature来描述的。其它内容基本上跟之前的单样本t检验一致,95%置信区间是均值之差的,区间估计的检验结果与p值所得结果一致。

#Tips:R里t检验默认不假设两组方差相等。这样也导致了自由度非整数。上面的t检验在统计上叫做t’检验。

为了进行平常我们所用的t检验,需要明确方差相等这个参数,可以通过使参数ver.equal=T来达到这一点。

> t.test(expend~stature,var.equal=T)

 Two Sample t-test

 data:  expend by stature

t = -3.9456, df = 20, p-value = 0.000799

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

 -3.411451 -1.051796

sample estimates:

 mean in group lean        mean in group obese

8.066154           10.297778

#Tips:这个是我们平常使用的t检验,其实差别不是很大。

如果数据存储的形式不是向上述一样的数据框,而是已经区分开来的两个向量。比如说如下的状态,肥胖组和消瘦组的能量消耗情况分别存放在expob和exple两个变量里,就可以通过“,”分隔开两个变量的形式罗列到t.test()的参数里:

> expob=subset(energy$expend,energy$stature=="obese")

> exple=subset(energy$expend,energy$stature=="lean")

> expob

[1]  9.21 11.51 12.79 11.85  9.97  8.79  9.69  9.68  9.19

> exple

 [1]  7.53  7.48  8.08  8.09 10.15  8.40 10.88  6.13  7.90  7.05  7.48

[12]  7.58  8.11

> t.test(expob,exple)

 Welch Two Sample t-test

 data:  expob and exple

t = 3.8555, df = 15.919, p-value = 0.001411

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

 1.004081 3.459167

sample estimates:

mean of x mean of y

10.297778  8.066154

#Tips:这里的结果跟数据框存放的数据计算结果相同,但是需要注意不同的数据存放形式,需要不同的代码。同时wilcoxon检验当前存放方式也适用,下文不赘述。

D. 比较方差

为了给上面的t检验做一个方差齐性的证据,我们可以做一下两组方差检验的F检验:

> var.test(expend~stature)

 F test to compare two variances

 data:  expend by stature

F = 0.78445, num df = 12, denom df = 8, p-value = 0.6797

alternative hypothesis: true ratio of variances is not equal to 1

95 percent confidence interval:

 0.1867876 2.7547991

sample estimates:

ratio of variances

0.784446

这里的计算结果的判断与正态性检验的类似,都是p值大于0.05,则满足正态性或者方差齐性。所以可以使用常规的t检验来比较。

#Tips:方差齐性检验不能用在配对的数据中,只能用在独立的两组数据上。

E. 两样本Wilcoxon检验

使用wilcoxon检验和t.test相似:

> wilcox.test(expend~stature)

 Wilcoxon rank sum test with continuity correction

 data:  expend by stature

W = 12, p-value = 0.002122

alternative hypothesis: true location shift is not equal to 0

Warning message:

In wilcox.test.default(x = c(7.53, 7.48, 8.08, 8.09, 10.15, 8.4,  :

无法精確計算带连结的p值

这里不多解释,适用所有分布类型的样本,结果p-value与检验标准α比较,得出结论。

F. 配对t检验

我们有时会遇到数据之间不独立,两组之间的数据相互关联的情况,比如说用药前用药后的数据,或者一种样本被两种方式检测得出两组数据,这样的数据就可以当成配对的数据进行分析。同时,配对的数据要求两组的样本量是一致的,需要一一对应。

这部分的数据使用ISwR里的intake数据集(能量摄入数据)作为例子。

#Tips:本节前面的部分有一个与intake数据集重名的变量,在索引intake的时候,会优先找出变量intake而不是数据集intake,因此我们可以通过> rm(intake)来先把intake变量删除,方便准确使用intake数据集。

> intake

    pre post

1  5260 3910

2  5470 4220

3  5640 3885

4  6180 5160

5  6390 5645

6  6515 4680

7  6805 5265

8  7515 5975

9  7515 6790

10 8230 6900

11 8770 7335

我们可以计算下11位女性月经前后摄入能量的差值:

> post-pre

 [1] -1350 -1250 -1755 -1020  -745 -1835 -1540 -1540  -725 -1330 -1435

我们可以看出它们都是负数,相比于月经前,所有女性都在月经后有更低的能量摄入。配对t检验可以通过下面代码实现:

> t.test(pre,post,paired=T)

 Paired t-test

 data:  pre and post

t = 11.941, df = 10, p-value = 3.059e-07

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

 1074.072 1566.838

sample estimates:

mean of the differences

1320.455

#Tips:这里注意paired=T的参数是必须的。然后这里的95%置信区间是差值的均值置信区间,而两个独立样本的区间是均值的差值的置信区间,这两个是有本质差别的。

G. 配对Wilcoxon检验

同样,它的参数里paired=T也是必须的。

> wilcox.test(pre,post,paired=T)

 Wilcoxon signed rank test with continuity correct

 data:  pre and post

V = 66, p-value = 0.00384

alternative hypothesis: true location shift is not equal to 0

 Warning message:

In wilcox.test.default(pre, post, paired = T) : 无法精確計算带连结的p值

总结一下。本节介绍了两个方法,t检验和wilcoxon检验,这两个检验很类似,最大区别在于参数检验t检验适用于小样本的正态分布数据,而非参数检验wilcoxon检验对样本的分布无要求。t检验的检验效能高于wilcoxon检验。我们还介绍了正态性检验和方差齐性检验,只有满足两种分布才能使用常规的t检验。随后我们介绍了三种情况,分别是单组独立样本与预设值比较,两组独立样本比较,以及配对样本的比较。

当然并不是所有数据分类都只有两种及以下,当出现三组数据比较的时候我们有应该怎么处理呢,且听下回分解。

fa9265ed2179b816d19f7296ab29411f.gif

参考资料:
1. 《R语言统计入门(第二版)》 人民邮电出版社  Peter Dalgaard著
2. 《R语言初学者指南》 人民邮电出版社  Brian Dennis著
3. Vicky的小笔记本《blooming for you》by Vicky

001091df32017daa1ab955ff1c71ffa7.gif

bc8f37097672419ba1ff05bc826e1eaa.png

生信发文助手

如需生信分析服务请加微信:keyan-zhishi2

d744cff9fa83b4c985cb41f45576a2f1.png

多点好看,少点脱发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据预测代码_手把手教你用Python玩转时序数据,从采样、预测到聚类丨代码...

原标题&#xff1a;手把手教你用Python玩转时序数据&#xff0c;从采样、预测到聚类丨代码原作 Arnaud Zinflou郭一璞 编译时序数据&#xff0c;也就是时间序列的数据。像股票价格、每日天气、体重变化这一类&#xff0c;都是时序数据&#xff0c;这类数据相当常见&#xff0c;…

java 配置jmstemplate_SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解...

1.导入jar包&#xff1a;org.springframework.bootspring-boot-starter-activemqorg.apache.activemqactivemq-pool2.填写配置文件(application.properties)#设置JMS(AMQ)spring.activemq.broker-urltcp://localhost:61616spring.activemq.useradminspring.activemq.passwordad…

切面是异步还是同步操作‘_分布式中采用Logback的MDC机制与AOP切面结合串联日志...

导读&#xff1a;在实际开发中&#xff0c;打印日志是十分重要的。在生产环境中&#xff0c;如果日志打得好可以快速地排查问题&#xff0c;而在分布式的场景下&#xff0c;一个请求会跨越多个节点&#xff0c;既一个业务可能需要多个节点协调配合处理。那么日志将会分散&#…

java 图类_Java集合类,一张图说清楚!

作者&#xff1a;skywang12345https://www.cnblogs.com/skywa...2019-03-23 10:32:24Java集合是java提供的工具包&#xff0c;包含了常用的数据结构&#xff1a;集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*&#xff0c;Java集合主要可以划分为4个部分…

python 取整_马克的Python学习笔记#数字,日期和时间

对数值进行调整在Python中对整数和浮点数进行数字计算是很容易的。但是&#xff0c;如果你需要对分数&#xff0c;数组或者日期和时间进行计算&#xff0c;这就会稍微复杂点。对于简单的取整操作&#xff0c;我们可以使用内建的round(value, ndigits)函数就可&#xff0c;举个例…

java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

byte&#xff1a;Java中最小的数据类型&#xff0c;在内存中占8位(bit)&#xff0c;即1个字节&#xff0c;取值范围-128~127&#xff0c;默认值0short&#xff1a;短整型&#xff0c;在内存中占16位&#xff0c;即2个字节&#xff0c;取值范围-32768~32717&#xff0c;默认值0i…

各路由协议的协议号_厂房转让协议

厂房转让协议转让方(甲方)&#xff1a;________________受让方(乙方)&#xff1a;________________甲乙双方本着平等互利的原则&#xff0c;经协商一致就甲方将其权属的工业用地、厂房等转让与乙方及有关事项达成如下协议:一、工业用地及厂房产权基本情况本协议转让的工业用地位…

java容器怎么封装的_docker怎么把容器打包成镜像

1.首先引用 maven docker插件&#xff0c;打开 java应用jar包&#xff0c;点击package按钮&#xff1b;2.新建一个docker文件夹&#xff0c;将导出的jar包放入到此文件夹中&#xff1b;3.新建一个Dockerfile文件&#xff0c;输入以下打包命令FROM frolvlad/alpine-oraclejdk8:s…

python 异常回溯_关于python:在循环中捕获异常回溯,然后在脚本末尾引发错误...

我正在尝试捕获所有异常错误&#xff0c;然后在脚本结尾处使其引发/显示所有回溯...我有一个主脚本&#xff0c;例如调用我的下标&#xff1a;errors open(MISC/ERROR(S).txt, a)try:execfile("SUBSCRIPTS/Test1.py", {})except Exception:## Spread over two calls…

java web开发常见问题_JavaWeb学习笔记(五)--Web开发其他常见问题

一、把web应用打成war包使用JDK自带jar命令&#xff0c;进入到web应用里面&#xff0c;执行命令&#xff1a;jar -cvf 包名.war . # .表示当前目录所有的文件 直接用jar可查看帮助执行完成后生成一个demo.war文件&#xff0c;把这个文件拷贝到Tomcat的webapps下&#xff0c;Tom…

mysql having in_MySQL中无GROUPBY直接HAVING的问题

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/having_without_groupby_in_mysql.html 今天有同学给我反应&#xff0c;有一张表&#xff0c;id是主键&#xff0c;这样的写法可…

python求线段长度_python微元法计算函数曲线长度的方法

计算曲线长度&#xff0c;根据线积分公式&#xff1a;&#xff0c;令积分函数f(x,y,z) 为1&#xff0c;即计算曲线的长度&#xff0c;将其微元化&#xff1a;其中根据此时便可在python编程实现&#xff0c;给出4个例子&#xff0c;代码中已有详细注释&#xff0c;不再赘述计算曲…

java if 顺序 括号_03-03 java 顺序语句结构,选择结构if语句

/*if语句的格式3&#xff1a;if(比较表达式1) {语句体1;}else if(比较表达式2) {语句体2;}else if(比较表达式3) {语句体3;}...else {语句体n1;}执行流程&#xff1a;首先计算比较表达式1看其返回值是true还是false&#xff0c;如果是true&#xff0c;就执行语句体1&#xff0c…

java 项目部署_java项目部署

本文章只为帮助大家学习项目的发布&#xff0c;为基础篇&#xff0c;在此给大家示范在window环境下的项目部署及运维。以下版本为讲解示例&#xff0c;可自行改至匹配版本。服务器&#xff1a;window service2008 R2 Standard(提前准备好服务器&#xff0c;可以在服务器商家租服…

电气专业学python吗_985大学毕业起薪最高的五个专业,计算机、金融、电气上榜!...

本科毕业生起薪是指本科毕业生第一份工作能够获得的薪资水平&#xff0c;大学毕业生的起薪一般会因为学校、专业、地区的不同而有所差异。一般来说&#xff0c;985大学毕业生的起薪要比普通大学毕业生的起薪高一点&#xff0c;那么&#xff0c;985大学中&#xff0c;哪些专业的…

python核心教程_python核心教程--第四章

第四章讲的是python对象。4.1 python对象所有的python对象都拥有三个特性&#xff1a;身份&#xff0c;类型和值身份&#xff1a;每一个对象都有一个唯一的身份标识自己&#xff0c;任何对象的身份可以使用内建函数id()来得到。这个值可以被认为是该对象的内存地址。类型&#…

uwsgi怎么通过浏览器访问某个脚本_4个Shell小技巧帮你提高机器学习效率:写好脚本,事半功倍...

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI在机器学习的实践过程中&#xff0c;用好Shell能帮你很多节省时间。最近&#xff0c;有位来自ETHZ的学生分享了一些Shell小技巧。对程序员来说&#xff0c;这些技巧更重要的是让你的思维从琐碎小事中解脱出来&#xff0c;大大提高…

java file 字符串_Java读取一个文本文件拼接成一个字符串(readFileToString)

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import org.junit.Test;public class Demo {// 使用示例Testpublic void testName1() throws Exception {String filePath …

pythonselenium上传图片视频_如何用selenium、python上传文件(图片)

我添加了一个答案&#xff0c;任何人想使用处理恼人的msofiledialogs。这是对saravanan提出的解决方案的改进&#xff0c;但对Python来说更加充实。我也遇到过类似的问题&#xff0c;我正在为一家公司做脚本。我试图为一家公司的客户上传文件&#xff0c;但由于他们的网站工作方…

java中的.运算符_java中的各种运算符

1、算术运算符&#xff1b;算术运算符也就是我们小学所学过的&#xff1a; - */&#xff1b;还有取模运算符&#xff1a;%&#xff1b;取模运算符也就是求余的运算&#xff1b;运算形式&#xff1a;操作数 操作数&#xff1b;操作数 - 操作数&#xff1b;操作数 *操作数&#…