热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单因素方差分析graphpad_R笔记:单因素方差分析|事后两两多重比较|趋势方差分析...

转自个人微信公众号【Memo_Cleon】的统计学习笔记:R笔记:单因素方差分析|事后两两多重比较|趋势方差分析。示例来源:李康,贺佳等.

转自个人微信公众号【Memo_Cleon】的统计学习笔记:R笔记:单因素方差分析 | 事后两两多重比较 | 趋势方差分析。

示例来源:李康,贺佳等.医学统计学(第6版).北京:人民卫生出版社,2013.

评价某药物耐受性及安全性的I期临床实验中,将符合纳入标准的30名健康自愿者随机分为3组,每组10名,各组注射剂量分别为0.5U、1U、2U,观察49小时部分凝血活酶时间(s)。不同剂量组的部分凝血活酶时间是否不同?

很明显,剂量可以看做是研究因素,有3个水平,这种完全随机设计的资料首先考虑的就是方差分析。如果方差分析有统计学意义,我们可能还会进一步通过两两比较考察到底是那两组有统计学差异。此外,本例中分组因素为有序变量,我们可能还想知道部分凝血活酶时间是否会随着给药剂量的增加而呈现某种变化趋势,此时我们可以进行趋势检验,检验是否满足线性、二次、三次等多项式变化。对于分组变量和因变量都是分类资料的趋势检验,我们曾在[线性趋势检验]中做过介绍,当前示例是分组变量有序、结局变量为连续的资料,我们可以采用趋势方差检验,即在方差分析中采用多项式对比检验。当然,方差分析也有自己的适用条件:独立性、正态性(各水平因变量服从正态分布,准确地说应该是模型残差服从正态分布)、方差齐性(各水平的总体具有相同的方差),需要进行评估。​

当前示例R操作使用了RStudio,下载地址:https://rstudio.com/products/rstudio/download/。RStudio是R语言的一种集成开发环境(IDE),可以更方便的实现R语言操作并增添了很多功能,使用前要首先安装R。

f9ed6e53620453561c74a1a5786eafda.png

【1】数据导入。不同类型的数据载入涉及到不同的程序包,相同数据类型的导入也有不同的包,excel数据的载入可参见《为什么是R?》,SPSS数据的载入可参见《方差齐性检验》《正态分布的检验》,STATA数据的载入可参见《描述性统计分析》。本例我们使用的是RStudio,导入可以使用菜单操作

Files >> Import Dataset >> From Excel…

eab9603151676ae582d36daa6f0a3cb3.png

自动生成相应命令如下:

library(readxl)

fdata <- read_excel("D:/Temp/fdata.xlsx")


【2】单因素方差分析。R中方差分析有两类方法&#xff0c;一种是采用直接使用方差分析&#xff0c;另外一种是采用线性回归模型。

方差分析的函数比较经典的是aov {stats}&#xff1a;aov(formula, data &#61; NULL, projections &#61; FALSE, qr &#61; TRUE,contrasts &#61; NULL, ...)

本例命令清单如下&#xff1a;

library(stats)

Fa<-aov(time~dose,data&#61;fdata)

summary(Fa)

结果显示可以认为3个给药剂量的部分凝血活酶时间不同&#xff08;F&#61;6.524&#xff0c;P&#61;0.00488<0.05&#xff09;。

f059375d0eb92422d48a5b338144c5ce.png

我们也可以采用拟合线性模型的方式来进行方差分析。不论是t检验、方差分析&#xff0c;还是非参数检验&#xff0c;其实都是线性回归的特殊形式而已&#xff0c;感兴趣的可以去阅读Jonas Kristoffer Lindeløv的文章&#xff1a;Common statistical tests are linear models (or: how to teach stats)&#xff0c;我们贴出文章的一张总结表&#xff1a;

51e91b0e2c5fba21416a5deca2acf5f3.png

线性回归用到函数lm&#xff0c;lm {stats}&#xff1a;used to fit linear models. It can be used to carry out regression, single stratum analysis of variance and analysis of covariance (although aov may provide a more convenient interface for these).

Usage:lm(formula, data, subset, weights, na.action, method &#61; "qr", model &#61; TRUE, x &#61; FALSE, y &#61; FALSE, qr &#61; TRUE,singular.ok &#61; TRUE, contrasts &#61; NULL, offset, ...)

本例采用命令

lrfit<-lm(time~dose,data&#61;fdata)

summary(lrfit)

结果如下&#xff0c;剂量0.5U的部分凝血活酶时间平均值为33.62&#xff0c;统计学上不为0&#xff08;t&#61;40.209&#xff0c;P<0.001&#xff09;&#xff1b;1U与0.5U相比&#xff0c;部分凝血活酶时间更长&#xff08;比0.5U长4.21s&#xff09;&#xff0c;具有统计学意义&#xff08;t&#61;3.56&#xff0c;P&#61;0.0014<0.05&#xff09;;2U与0.5U相比&#xff0c;部分凝血活酶时间更长&#xff08;比0.5U长1.48s&#xff09;&#xff0c;但差异没有有统计学意义&#xff08;t&#61;1.252&#xff0c;P&#61;0.2214>0.05&#xff09;。整体分析结果跟上述方差分析结果是一致的&#xff1a;可以认为3个给药剂量的部分凝血活酶时间不同&#xff08;F&#61;6.524&#xff0c;P&#61;0.00488<0.05&#xff09;。

e38b80030429fa7c2a8ec8212a04fe13.png

【3】两两比较。方差分析后如果发现各组之间存在显著的统计学意义&#xff0c;接下来我们可能想知道哪几个组间会存在差异&#xff0c;这就涉及到两两比较&#xff08;或者叫多重比较&#xff09;。多重比较的方法有很多&#xff0c;比如SPSS中提供的两两多重比较方法如下&#xff1a;

1c6988f2ac7293713dcffcc43495abee.png

这些在R中都不是事儿&#xff0c;因为R有包&#xff0c;“包”治百病&#xff01;比如&#xff1a;

pairwise.t.test {stats}&#xff1a;Calculate pairwise comparisons between group levels with corrections for multiple testing.

Usage: pairwise.t.test(x, g, p.adjust.method &#61; p.adjust.methods,pool.sd &#61; !paired, paired &#61; FALSE,alternative &#61; c("two.sided", "less", "greater"),...)

TukeyHSD {stats}&#xff1a;Create a set of confidence intervals on the differences between the means of the levels of a factor with the specified family-wise probability of coverage. The intervals are based on the Studentized range statistic, Tukey&#39;s ‘Honest Significant Difference’ method.

Usage: TukeyHSD(x, which, ordered &#61; FALSE, conf.level &#61; 0.95, ...)

PostHocTest {DescTools}&#xff1a;A convenience wrapper for computing post-hoc test after having calculated an ANOVA.仅用于R3.6.3及以上版本。

Usage: PostHocTest(x, which &#61; NULL,method &#61; c("hsd", "bonferroni", "lsd", "scheffe", "newmankeuls", "duncan"),conf.level &#61; 0.95, ordered &#61; FALSE, ...)

glht {multcomp}&#xff1a;General linear hypotheses and multiple comparisons for parametric models, including generalized linear models, linear mixed effects models, and survival models.

Usage&#xff1a;glht(model, linfct, ...)

我们以aov {stats}方差分析后的两两为例&#xff0c;上述几种方法的命令及结果如下&#xff1a;

pairwise.t.test(fdata$time, fdata$dose, p.adj &#61; "bonf") ##p.adj方法有"holm", "hochberg", "hommel", "bonferroni", "BH", "BY","fdr", "none"&#xff0c;当前命令以bonferroni进行校正

结果显示&#xff0c;给药剂量0.5U与1U相比&#xff0c;部分凝血活酶时间的差异具有统计学意义&#xff08;P&#61;0.0042<0.05&#xff09;,而0.5U与2U、1U与2U剂量相比&#xff0c;差异并不明显。

518c906a1bc84e473a9eed87b2f5e508.png

TukeyHSD(Fa, "dose", ordered &#61; TRUE)

plot(TukeyHSD(Fa, "dose"))

结果显示&#xff0c;只有给药剂量0.5U与1U相比&#xff0c;部分凝血活酶时间的差异具有统计学意义&#xff08;P&#61;0.0039<0.05&#xff09;,95%CI图中&#xff0c;置信区间没有重合的表示有统计学差异。

fa39f5a009867385756ef68c084c355e.png

library(DescTools)

PostHocTest(Fa,,method &#61; c("lsd"))

采用lsd法的两两差异比较结果跟采用bonferroni的结果有所不同&#xff0c;具体结果如下&#xff1a;

a0e07cb1f7d5cecef6cfb5d13c7b14a1.png

glht {multcomp}函数可用于多种模型&#xff0c;如aov、lm、glm等&#xff0c;但需要将要比较的变量指定为因子变量。命令清单与结果如下&#xff0c;具体结果就不再赘述了。

Dose<-factor(fdata$dose) #采用glht函数需要首先将要比较的变量指定为因子变量

Fc<-aov(fdata$time~Dose)

library(multcomp)

summary(glht(Fc, linfct&#61;mcp(Dose&#61;"Tukey")))

8ca3be61fa88290f204971ec92d1cb61.png

上述命令清单也可以用比对系数的形式进行&#xff0c;命令如下&#xff1a;

contrast<-rbind("0.5U vs 1U" &#61; c(1,-1,0),"0.5U vs 2U" &#61; c(1,0,-1),"1U vs 2U" &#61; c(0,1,-1))

multic<-glht(Fc, linfct&#61;mcp(Dose&#61;contrast))

summary(multic)

通过系数的赋值&#xff0c;可以比较任何两个水平&#xff0c;或者一个跟多个水平的和进行比较。如只想比较0.5U和2U的命令为&#xff1a;summary(glht(Fc, linfct&#61;mcp(Dose&#61;rbind("0.5U vs 2U" &#61; c(1,0,-1)))))

glht {multcomp不仅可用于aov方差分析后的两两比较&#xff0c;也可以用于lm、glm等模型后的多重比较。

Dose<-factor(fdata$dose)

lrfitc<-lm(fdata$time~Dose)

summary(glht(lrfitc, linfct&#61;mcp(Dose&#61;"Tukey")))

eb5e9227956e62050e27fb5f29b13fe9.png

【4】趋势方差检验。给药剂量0.5U、1U、2U为有序变量&#xff0c;我们可以考察随着给药剂量的增加&#xff0c;部分凝血活酶时间呈二次项变化趋势还是呈线性趋势。在R中要进行趋势方差分析&#xff0c;需要先将分析的变量设置为有序因子&#xff0c;然后采用正交多项式的对照&#xff0c;就可以进行趋势分析&#xff08;线性、二次、三次等&#xff09;&#xff0c;但比较遗憾的是只能用于等距水平的有序因子。本例实际上不等距&#xff0c;因此仅做演示。在SPSS中&#xff0c;一般线性模型中的单变量分析&#xff08;Univariate&#xff09;的Polynomial也提供了同样的等距有序因子的趋势分析&#xff0c;而One-Way ANOVA的Polynomial比对可进行等距和不等距的因子分析。

Dose_ord<-factor(fdata$dose,order&#61;TRUE,levels&#61;c("0.5U", "1U", "2U")) #设置有序因子

lrfit_ord<-lm(fdata$time~Dose_ord,contrasts &#61; "contr.poly") #contr.poly用于趋势分析&#xff08;线性、二次、三次等&#xff09;和等距水平的有序因子

summary(lrfit_ord)

plot(Dose_ord, fdata$time) #用图形展示变化趋势&#xff0c;或者使用命令&#xff1a;boxplot(time~dose,data&#61;fdata)

69d99fe40e83da29a0a2da21bad23325.png

结果显示二次项(quadratic)结果的系数&#xff08;Dose_ord.Q&#xff09;具有统计学意义&#xff0c;表明二次项的系数不为0&#xff0c;即随着给药剂量的增加&#xff0c;部分凝血活酶时间呈二次项变化趋势&#xff0c;大体呈先升后降的趋势&#xff0c;后面的趋势图也证实的确如此。但需要说明的是本例0.5U、1U、2U并不等距&#xff0c;contr.poly是被就、强制呈等距来进行分析&#xff0c;因此结论应谨慎。


统计分析方法都有自己的适用条件&#xff0c;方差分析要求独立、正态和方差齐同&#xff0c;最后我们评估一下下正态性和方差齐性。

【5】正态分布检验。本例采用shapiro检验&#xff0c;其他方法可参见《正态分布的检验》。

library(stats)

by(fdata$time,fdata$dose,shapiro.test) #对fdata中的time变量按dose分组进行shapiro检验

结果显示3个变量均P均&#xff1e;0.05&#xff0c;都满足正态分布。

d42f2cd636643834bc591a08850b7f0e.png

【6】方差齐性检验。本例采用levene检验&#xff0c;其他方法可参见《方差齐性检验》。

library(car)

library(carData)

leveneTest(time~dose,data&#61;fdata,center&#61;mean) #levene方差齐性检验&#xff0c;默认以中位值进行检测

结果显示两个水平的均值满足方差齐性&#xff08;F&#61;1.85,P&#61;0.177>0.05&#xff09;。结果后面有一条警示信息&#xff0c;group变量被强制定义为因子。

582cfc7e0241d524c2dbcba4c83e7fc2.png

转自个人微信公众号【Memo_Cleon】的统计学习笔记&#xff1a;R笔记&#xff1a;单因素方差分析 | 事后两两多重比较 | 趋势方差分析。

END



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
author-avatar
李敖书-橱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有