格兰杰因果关系检验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,一经查实,立即删除!

相关文章

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;举个例…

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

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

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

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

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

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

间接寻址级别不同_被遗忘的利息税,国债与存款的利率区别,同大额存单的4点大不同...

2020年6月10日的储蓄式电子国债发行又一次与理财人擦肩而过&#xff0c;因为疫情管控原因&#xff0c;此次暂时不发行&#xff0c;那么下一个认购国债的窗口&#xff0c;就是7月10日&#xff0c;仍然是储蓄式电子国债&#xff0c;期限还是3年期和5年期两种。那么能如期发行吗&a…

抽象类可以用new创建对象吗_宠物可以用人类的湿巾吗?猫咪有泪痕可以用纸巾擦掉吗?...

宠物还有专用的湿巾&#xff1f;当然喽&#xff01;不养宠物的小伙伴可能是无法理解的&#xff0c;人类的生活条件好了&#xff0c;宠物的生活条件在很多方面比人类还更上一层台阶呢&#xff01;喜欢逛宠物店和宠物展的小伙伴都会有这样的感慨&#xff0c;那就是人生不如喵生狗…

java什么时候需要同步_JAVA中线程在什么时候需要同步和互斥

JAVA中线程在什么时候需要同步和互斥关注:265 答案:6 mip版解决时间 2021-01-27 08:10提问者时光易老2021-01-27 03:32JAVA中线程在什么时候需要同步和互斥?(假如这题是考试题&#xff0c;要怎样回答&#xff1f;)详细点最佳答案二级知识专家樱花雨梦2021-01-27 04:13例如访…

5g虚拟技术旅游_5G造就文旅新时代,驴迹科技探索智慧出行创新领域

随着我国5G技术的成熟与普及&#xff0c;5G为文旅产业提供新的解决方案&#xff0c;使之焕发新的活力。以5G“新基建”为依托&#xff0c;结合VR虚拟实境以及云计算、高清视频等技术交叉应用&#xff0c;对旅游业的发展带来广泛而深刻的影响&#xff0c;给游客更新鲜、更具有科…

分块排序算法 java_十大经典排序算法最强总结(含JAVA代码实现)

转载自&#xff1a;https://www.cnblogs.com/guoyaohua/p/8600214.html0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定&#xff1a;如果a原本在b前面&#xff0c;而ab&#xff0c;排序之后a仍然在b的前面&#xff1b;不稳定&#xff1a;如…

synchronized锁升级_synchronized详解以及锁的膨胀升级过程

点击上方"码之初"关注&#xff0c;选择"设为星标"与精品技术文章不期而遇来源&#xff1a;www.cnblogs.com/cxiaocai/p/12189848.html架构之路远且艰辛&#xff0c;但是学习的脚步始终不能停止&#xff0c;今天聊一聊synchronized。synchronized是jvm内部的…

改变php二维数组的值_php如何修改二维数组中的值?

php修改二维数组中值的方法&#xff1a;1、通过【for($i 0; $i < count(Array()); $i)】语句修改&#xff1b;2、通过foreach($users as &$user)语句修改。php修改二维数组中值的方法&#xff1a;1、二维数组可以通过for($i 0; $i < count(Array()); $i)这种形式…

jlabel字怎么变化_怎样才能把字写好?详解最科学的练字方法及步骤

一&#xff1a;正确的学习之路1&#xff1a;临帖从古到今&#xff0c;临帖是学习书法最基本的方法&#xff0c;没有一个书法家是没有临过帖的。2&#xff1a;专注专注学一个书法家的字&#xff0c;专心致志&#xff0c;认真临写&#xff0c;持之以恒&#xff0c;直到形同神似。…

找不到具有指定id_JAVA如何整合es指定字段不分词搜索?

一、问题在做一个需求的时候&#xff0c;需要按照电话号码查询用户关系&#xff0c;所以我这边先讲相关信息同步到es&#xff0c;但是电话号码是加密的&#xff0c;所以显示的字符串是杂乱的&#xff0c;既有字母&#xff0c;又有斜杠等号等字符&#xff0c;在进行分词查询的时…

vant 项目_vueCli4+vant+router+vuex+移动端适配

教程的开始 各位同学请先安装node、npm、vuecli4 巴拉巴拉...废话不多说立即开始随便找个地方 cmd&#xff0c;powerShell也可以 命令行走起1. 创建vue项目 随便起个名字就叫my-vue吧&#xff0c;傻瓜式回车键就行&#xff0c;也可以根据自己的喜好选择eslint。vue create my-v…

电路结构原理_精密半波、全波整流电路结构原理图解

利用二极管(开关器件)的单向导电特性&#xff0c;和放大器的优良放大性能相结合&#xff0c;可做到对输入交变信号(尤其是小幅度的电压信号)进行精密的整流&#xff0c;由此构成精密半波整流电路。若由此再添加简单电路&#xff0c;即可构成精密全波整流电路。二极管的导通压降…

vlookup两个条件匹配_vlookup,你还是只会基础的单条件查找?

很多数据分析师在简历上都会说自己熟悉excel&#xff0c;但熟练使用excel必须要掌握的核心函数vlookup首当其冲&#xff0c;其次是sumifs、match、index等等。就算熟悉vlookup&#xff0c;很多人也只会基础的单条件查找&#xff0c;其实在工作中能用到vlookup的地方有很多&…

matlab 绘制符号函数,DAY8 MATLAB学习笔记—simulink入门、MATLAB符号函数的图形绘制...

如何打开simulink&#xff1a;启动simulink&#xff1a;先打开MATLAB软件界面第一步打开simulink第二步在command windows输入 simulink然后enter&#xff0c;等待有很多模块库第三步&#xff1a;常用的simulink库打开以后会看到simulink library browser这个界面最常用的就是s…