我们
在上一篇推文中,我们介绍了两组独立样本的 t 检验。 今天我们将介绍常见实验设计中使用的完整方差分析。
在上一篇推文中,我们介绍了两组独立样本的t检验,因此多组(大于两组)样本的比较需要用到本篇推文中引入的方差分析(ANOVA)。 方差分析广泛应用于各种实验和准实验设计的分析。 接下来,我们将介绍常见研究设计分析中使用的R函数。
在开始阅读之前,建议大家先回去回顾一下方差分析的基础知识,尤其是一些基本术语,这对于后面的学习会有很大的帮助。
温馨提示
1. 这一部分有很多要点。
请务必遵循红色标记。
2.测试数据和代码
见文章末尾。
1. 基本方差分析
虽然方差分析和回归方法(下一条推文的主要内容)是独立开发的,但就函数形式而言,它们都是广义线性模型的特例。 方差分析模型也可以使用学习绘图时使用的函数 lm() 进行分析。 不过,这里我们基本上使用的是函数aov()。 这两个函数的结果是等效的,但 aov() 函数以更易于理解的格式显示结果。 为了保证完整性,最后将提供一个使用函数 lm() 的示例供您参考。
函数 aov() 的用法与我们之前遇到的函数略有不同。 语法为aov(, data=),参数表示方差分析实验设计中要研究的变量之间的关系。 表1和表2分别列出了表达式中的常用符号和常用表达式。
表1:表达式中的常用符号
表2:常用表达式和相应的实验设计。
关键点:表达式右侧的公式不符合“交换律”,即公式右侧变量的顺序很重要。 在以下两种情况下,变量的顺序会产生影响:(1)因素较多且为不平衡设计; (2)存在协变量。 例如,对于双因素方差分析,如果不同处理方法的观测值数量不同,模型y~A*B和模型y~B*A的结果就会不同。 另外,以表达式 y~A+B+A:B 为例,R 默认会理解它(顺序类型): (1) A 对 y 的影响; (2)当控制A时,B对y的影响;(3)当控制A和B的主效应时,A和B的交互作用。(对于任何表达式,有三种理解方式,即序贯类型、层次类型、边界类型。其中,R默认调用顺序类型,而某些统计软件(如SPSS)默认调用边界类型。当必须应用另外两种理解方法时,不用担心, R 提供了许多函数包来处理它们(例如包 car 中的函数 Anova())。)
2.单因素方差分析
从最简单的情况开始,在单向方差分析中,您有兴趣比较由分类因素定义的两个或多个组中因变量的均值。 以包中的数据集为例(实验设计为:50名患者均接受降胆固醇药物治疗(trt)五种疗法中的一种,其中三种治疗条件使用同一种药物3,即20mg一次每天(1次)、10毫克每天两次()和5毫克每天四次()。其余两种方式(drugD和drugE)代表候选药物。哪种药物治疗降低胆固醇(反应变量)最多?) 。 采用单因素方差分析对不同处理进行F检验,结果非常显着(()绘制了组均值图,图中也可以清楚地看出它们之间的差异。)
图 1:单向方差分析,五种处理的平均差异
经过上面的分析,你一定会对哪种治疗方法与其他治疗方法不同感兴趣。 多重比较可以解决这个问题。 () 可以回答你的问题。 使用函数plot() 将多重比较结果绘制为图表。 图中置信区间为0的处理表明差异不显着(p>0.5)。
图2:多重比较示例1
包中的函数 glht() 提供了更全面的多重均值比较方法。 以下是图形分析结果。 在代码中,函数 cld() 中的参数 level 设置所使用的显着性水平(0.05,在本例中是 95% 置信区间)。 具有相同字母的组(由箱线图表示)表示平均差异不显着。 (完成上述工作并不意味着分析结束,必须检查数据满足统计检验假设的程度。在单向方差分析中,我们假设因变量服从正态分布,且各组方差相等,可以使用QQ图(函数())检验正态性假设,使用函数.test()检验方差同质性(背景代码中提供了示例)
图3:多重比较示例2
3、单因素协方差分析
单向协方差分析 (ANOVA) 将单向方差分析 (ANOVA) 扩展到包括一个或多个定量协变量。 下面的示例来自包中的数据集。 怀孕的小鼠被分为四组,每组接受不同剂量(0、5、50 或 500)的药物。 幼犬出生时的平均体重是因变量,妊娠时间是协变量。 F检验表明:(1)妊娠时间与仔犬出生体重有关; (2)控制怀孕时间,药物剂量与出生体重有关。 控制妊娠时间后,我们确实发现每种药物剂量下幼仔的平均出生体重存在差异。 (由于使用了协变量,你可能希望获得调整后的组均值,即去除协变量影响后的组均值。可以使用包中的 () 函数来计算调整后的均值。)
图 4:单向协方差分析示例
与单向方差分析类似,剂量 F 检验显示不同处理中幼仔的平均体重是不同的,但它不能告诉我们哪种处理与其他处理不同。 使用该包对所有方法进行成对比较,或对您感兴趣的对照进行比较分析(代码中提供了未用药和用药条件之间的比较)。 单向协方差分析也需要假设方差的正态性和同质性,其检验方法与单向方差分析相同。 此外,协方差的单向分析还需要假设回归斜率相同,如下例所示。
图 5:协方差单向分析的相同斜率检查
在图5中,我们可以看到交互作用并不显着,支持了等斜率的假设。 如果假设不成立,您可以尝试更改协变量或因变量,或使用独立解释每个斜率的模型,或使用不需要回归斜率同质性假设的非参数方法。 sm 包中的函数 sm.() 提供了后者的示例。 您还可以使用 HH 包中的函数 () 可视化单向协方差分析的结果。 如图 6 所示,除了截距项之外,使用怀孕时间预测出生体重的回归线彼此平行。 随着妊娠期的延长,幼崽的出生体重也会增加。 另外,还可以看出,剂量组0的截距项最大,剂量组5的截距项最小。 (不妨尝试将代码中的(~+dose)改为(~*dose),图中出现了什么变化?)
图 6:单因素协方差分析的可视化
4、二因素方差分析
讨论完单向方差分析后,我们来看看更复杂的情况:双向方差分析和重复测量方差分析。 在双向方差分析中,受试者被分配到双因素跨类别组。 以基础装置中的数据集为例,随机分配60只豚鼠,并使用两种喂养方式(橙汁或维生素C)。 每种喂养方式中抗坏血酸的含量有3个级别(0.5mg、1mg或2mg)。 每种治疗方法的每种方法组合分配了 10 只豚鼠。 其中,齿长是因变量。 可以使用函数 .plot()、包中的 () 或包 HH 中的 () 来可视化分析结果。 () 的示例如下所示。 (三种方法中,更推荐HH包中的函数(),因为它可以显示任何复杂性设计(二因素方差分析、三因素方差分析等)的主效应(箱线图)和交互效应。 code 提供了三种方法的示例,您可以选择您喜欢的方法。)
图 7:() 示例
5. 重复测量方差分析
所谓重复测量方差分析是指对受试者进行多次测量。 该示例来自基础安装包中的CO2数据集,其中包括南北牧草植物Crus-galli的耐寒性研究成果。 在一定浓度二氧化碳的环境下,测量北方植物和非北方植物的光合作用速率。 比较。 因变量是二氧化碳吸收量(),自变量是植物类型和七个级别的二氧化碳浓度(conc)。 另外,Type 是组间因素,conc 是组内因素。 type 已存储为因子变量,而 conc 需要转换为因子变量。 方差分析表显示,在0.01水平上,主效应类型和浓度以及交叉效应类型×浓度均非常显着。 图8展示了通过函数()的交互效果。
图 8:() 结果的可视化
6. 多变量方差分析
我们之前讨论过单个因变量的情况。 当因变量(结果变量)超过一个时,我们可以使用多元方差分析()对它们同时进行分析。 以MASS包中的数据集为例,我们研究了谷物中的热量、脂肪和糖含量是否会因存储架位置不同而发生变化。 卡路里、脂肪和糖含量是因变量,货架是三个水平(1、2、3)的自变量。 函数()可以对组间差异进行多变量检验。 方差分析表中的F值显着,表明三组的营养成分测量值存在差异。 函数.aov()可以对每个变量进行单向方差分析。 (单因素多元方差分析有两个前提假设,一是多元正态性,二是方差和协方差矩阵的同质性。可以使用QQ图来检验假设。也可以使用函数 ap.plot()包测试多元异常值。请参阅方差分析和假设检验代码的背景。)
每次方差分析后的评估假设检验非常重要。 前面的例子都通过了检查,但现实中总会存在不满足假设条件的情况,因此可以考虑使用稳健或非参数版本的检验。 鲁棒单因素可以通过rcov包中的Wilks.test()函数实现。 vegan 包中的 () 提供了非参数等价物。 代码中提供了 Wilks.test() 函数的示例。
最后,让我们兑现教程开头的“承诺”,向您介绍使用回归进行方差分析。 事实上,方差分析和回归是广义线性模型的特例,所有以前的设计都可以使用函数 lm() 进行分析。 以单向方差分析为例,比较五种降胆固醇药物疗法 (trt) 的效果。 结果如下:
图 9:函数 lm() 执行方差分析
概括
本教程内容较多,包括单因素方差分析、单因素方差分析、双向方差分析、重复测量方差分析和多因素方差分析。 除了这些基本分析之外,还介绍了模型的假设检验和应用多重比较程序进行综合检验的方法,并探索了各种结果可视化方法。 下一次的重点将是回归分析。 还在学习的小伙伴们,请努力吧~
本期的干货信息
! R语言方差分析完整指南!
资源获取方式新规定
关注科研猫公众号,后台回复关键词“R11”即可获取此推文链接。 请尽快转移或保存,以免链接过期。