ANOVA在R |一个完整的一步一步的指南与例子

方差分析是一个统计检验用于估计如何定量因变量根据一个或多个分类的级别而变化独立变量.方差分析检验在自变量的每一水平上是否存在组间均值的差异。

零假设(H0)为均值无差异,而备择假设(H一个)是方法是不同的。

在本指南中,我们将引导您完成一个单向方差分析(一个自变量)和a双向方差分析(两个自变量)。

我们的样本数据集包含了对肥料类型和种植密度对作物产量影响的假想研究的观察结果。

单向方差分析例子
在单因素方差分析中,我们测试了3种肥料对作物产量的影响。
双向方差分析实例
在双向方差分析中,我们添加了一个额外的自变量:种植密度。我们测试了3种肥料和2种不同种植密度对作物产量的影响。

我们还将包括如何使用交互项执行和解释双向方差分析以及使用阻塞变量的方差分析的示例。

方差分析样本数据集

从R开始

如果您以前没有使用过R,请从下载开始R而且R工作室.下载完这两个程序后,打开R Studio并单击文件>新文件>R脚本

现在,您可以将本例其余部分的代码复制并粘贴到您的脚本中。要运行代码,突出显示要运行的行然后点击运行按钮在文本编辑器的右上方(或按CTRL + enter在键盘上)。

安装和加载包

首先,安装分析所需的软件包(这只需要做一次):

安装。p一个ckages(c("ggplot2", "ggpubr", "tidyverse", "broom", "AICcmodavg"))

然后将这些包加载到R环境中(每次重新启动R程序时都这样做):

库(ggplot2)
库(ggpubr)
库(tidyverse)
库(扫帚)
库(AICcmodavg)

步骤1:将数据加载到R中

请注意,这些数据是为这个例子生成的,它不是来自真实的实验。

在本演练中,我们将对所有示例使用相同的数据集。不同分析之间的唯一区别是我们包含了多少自变量,以及我们以何种组合包含它们。

将数据集导入r时,通常会将因子读取为定量变量read.csv ()命令读入数据,在命令中指定每个变量应该是定量的(“数字”)还是分类的(“因子”)。

使用下面的代码,替换/ /你/文件路径文本与您的文件的实际路径:

作物。data <- read.csv("path/to/your/file/crop.data.csv", header = TRUE, colClasses = c("factor", "factor", "factor", "numeric"))

将数据读入R

在继续之前,您可以检查数据是否已正确读入:

总结(crop.data)

作物数据汇总

您应该看到“密度”、“块”和“肥料”被列为分类变量,并在每个级别上列出了观测值的数量(即密度1处有48个观测值,密度2处有48个观测值)。

' Yield '应该是一个具有数字摘要的定量变量(最小值,中位数的意思是、最大)。

第二步:进行方差分析检验

方差分析通过检查每个单独组的方差与数据的总体方差,来检验是否有任何组的均值与数据的总体均值不同。如果一个或多个组落在预测的变化范围之外零假设(所有组均值相等),那么检验是统计上显著

我们可以在R中使用自动阀()函数。这将计算检验统计量进行方差分析,并确定由自变量水平组成的组之间是否存在显著差异。

单向方差分析

单向方差分析例如,我们将作物产量建模为所使用肥料类型的函数。首先我们将使用自动阀()来运行模型,然后我们将使用总结()要打印总结模型的。

一个。Way <- aov(产量~肥料,data = crop.data) summary(one.way)

单向方差分析总结

模型摘要首先列出了模型中被测试的自变量(在这种情况下,我们只有一个,“肥料”)和模型残差(“残差”)。所有不能被自变量解释的变化称为剩余方差。

输出表中的其余值描述了自变量和残差:

  • Df列显示自由度对于自变量(变量的水平数减去1),残差的自由度(观察总数减去1,再减去自变量的水平数)。
  • 平方之和列显示平方和(也就是组均值和总体均值之间的总变化)。
  • 意思是平方列是平方和的平均值,通过将平方和除以每个参数的自由度来计算。
  • F价值列是检验统计量F测试。这是每个自变量的均方除以残差的均方。越大F值越大,由自变量引起的变化就越有可能是真实的,而不是偶然的。
  • 公关(F >)列是p价值F统计。这表明,它是多么有可能F如果组均值之间无差异的原假设为真,则从检验中计算出的值将会发生。

p肥料变量值较低(p< 0.001),因此使用的肥料类型似乎对最终的作物产量有实际影响。

双向方差分析

双向方差分析例如,我们将作物产量建模为肥料类型和种植密度的函数。首先我们使用自动阀()为了运行模型,我们使用总结()打印模型的摘要。

两个。Way <- aov(产量~肥料+密度,data = crop.data) summary(two.way)

双向ANOVA总结

在模型中增加种植密度似乎使模型变得更好:它减少了残差方差(残差平方和由35.89变为30.765),种植密度和施肥均有统计学意义(p值< 0.001)。

添加变量之间的交互

有时,你有理由认为两个自变量具有相互作用效应,而不是相加效应。

例如,在我们的作物产量实验中,种植密度可能会影响植物对肥料的吸收能力。这可能会以一种在双向模型中没有考虑到的方式影响肥料类型的效果。

为了测试两个变量在方差分析中是否具有交互作用,只需在模型中使用星号而不是加号:

交互<- aov(产量~肥料*密度,data = crop.data)汇总(交互)

交互方差分析总结

在输出表中,' fertilizer:density '变量的平方和值低,平方和值高p值,这意味着没有太多的变化可以解释肥料和种植密度之间的相互作用。

添加一个阻塞变量

如果你把你的实验疗法以某种方式分组,或者如果你有一个混杂变量这可能会影响您感兴趣的测试关系,您应该将该元素作为阻塞变量包含在模型中。最简单的方法就是用“+”将变量添加到模型中。

例如,在许多作物产量研究中,处理是在田间的“块”内进行的,这些块在土壤质地、湿度、日照等方面可能不同。为了控制种植块之间差异的影响,我们在方差分析中添加了第三个术语“块”。

阻塞<- aov(产量~肥料+密度+阻塞,data = crop.data)汇总(阻塞)

分组ANOVA汇总

“block”变量的平方和值低(0.486),平方和值高p值(p = 0.48),因此它可能没有向模型添加太多信息。它也不会改变两个自变量的平方和,这意味着它不会影响他们解释的因变量的变化量。

第三步:找到最合适的模特

现在有四种不同的方差分析模型来解释这些数据。你如何决定使用哪一个?通常你会想要使用“最佳拟合”模型——最能解释因变量变化的模型。

赤池信息标准(AIC)是一个很好的模型拟合检验方法。AIC计算每个模型的信息价值,通过平衡解释的变化与的数量参数使用。

在AIC模型选择中,我们比较每个模型的信息值,选择AIC值最低的模型(数字越低说明解释的信息越多!)

库(AICcmodavg)模型。Set <- list(1。两个。方式,交互,阻塞)model.names <- c("one。方式”、“两个。方式”,“交互”,“阻塞”)aictab(模型。设置,modnames = model.names)

AIC得分最低的模型(表中列在前面)最适合数据:

AIC模型选择

从这些结果来看,这两个。方式模式是最适合的。双向模型AIC值最低,AIC权值为71%,这意味着它解释了全组模型所能解释的因变量总变异量的71%。

具有阻塞项的模型包含额外15%的AIC权重,但由于它比最好的模型差2 delta-AIC,因此可能不足以包含在您的结果中。

第四步:检查同方差

来检验模型是否符合的假设方差齐性,查看R中的模型诊断图图()功能:

Par (mfrow=c(2,2)) plot(two.way) Par (mfrow=c(1,1))

输出如下所示:

方差分析残差

诊断图显示了观测数据范围内无法解释的方差(残差)。

每个图都给出了关于模型拟合的特定信息,但知道代表残差均值的红线应该是水平的,并以0为中心(在标度位置图中,或以1为中心)就足够了,这意味着不存在较大的残差离群值这会导致研究偏见在模型中。

正常的Q-Q图在完全同方差模型的理论残差和模型的实际残差之间绘制回归图,因此斜率越接近1越好。这个Q-Q图非常接近,只有一点点偏差。

从这些诊断图中,我们可以说该模型符合同方差的假设。

如果你的模型不符合同方差假设,你可以尝试Kruskall-Wallis检验。

步骤5:做一个事后测试

方差分析告诉我们组均值之间是否存在差异,但不告诉我们差异是什么。为了找出哪些组在统计上彼此不同,您可以执行Tukey 's honest Significant Difference (Tukey 's HSD)事后测试,进行两两比较:

tukey.two.way < -TukeyHSD tukey.two.way (two.way)

图基总结

从事后的测试结果来看,有统计上显著肥料3组与1组、肥料3组与2组之间差异(p < 0.05),但肥料2组与1组之间差异无统计学意义。两种不同种植密度水平之间也存在显著差异。

步骤6:在图表中绘制结果

在绘制模型的结果时,重要的是要显示:

  • 原始数据
  • 摘要信息,通常是平均值和标准错误对每组进行比较
  • 将每组上方的字母或符号进行比较,以表明组间的差异。

找出组间的差异

由方差分析可知,种植密度和肥料类型都是显著变量。为了在图表上显示这些信息,我们需要显示肥料类型+种植密度的组合中哪些在统计上是不同的。

为此,我们可以运行另一个ANOVA + TukeyHSD测试,这一次使用肥料和种植密度的相互作用。我们这样做不是为了找出交互项是否显著(我们已经知道它不显著),而是为了找出哪些组的均值在统计上彼此不同,这样我们就可以将这些信息添加到图表中。

tukey.plot。一个ov<-aov(yield ~ fertilizer:density, data=crop.data)

我们将以图的形式打印TukeyHSD结果,而不是以表的形式打印。

(tukey.plot tukey.plot.test < -TukeyHSD (tukey.plot.aov)阴谋。测试,las = 1)

图基情节

显著的组间差异是95%置信区间不包括零。这是另一种说法p这些两两差异的值< 0.05。

从图中可以看出,化肥+种植密度的组合差异较大,分别为3:1-1:1(读作“三种肥料+种植密度1与一种肥料+种植密度1的对比”)、1:2-1:1、2:2-1:1、3:2-1:1、3:2-1:1、3:2-2:1。

我们可以做三个标签我们的图:A(代表1:1),B(代表所有中间组合),C(代表3:2)。

用组标签制作一个数据帧

现在我们需要制作一个额外的数据帧,以便将这些分组差异添加到我们的图中。

首先,以肥料种类和种植密度为分组变量,对原始数据进行汇总。

Mean.yield.data <- crop。数据%>% group_by(肥料,密度)%>% summary(产量=均值(产量))

接下来,在数据帧中添加组标签作为新变量。

mean.yield。数据元组< - c(“a”、“b”、“b”,“b”,“b”,“c”)mean.yield.data

你的数据帧应该是这样的:

数据帧汇总

现在我们准备开始为我们的报告制作情节。

绘制原始数据

Two.way.plot <- ggplot(crop。数据,aes(x =密度,y =产量,组=肥料))+ geom_point(cex = 1.5, PCH = 1.0,position = position_jitter(w = 0.1, h = 0)) two.way.plot

输出如下所示:

方差分析原始图

将均值和标准误差添加到图表中

Two.way.plot <- Two.way.plot + stat_summary(有趣。Data = 'mean_se', geom = 'errorbar', width = 0.2) + stat_summary(fun。Data = 'mean . se', geom = 'pointrange') + geom_point(Data =mean.yield. yield. Data = 'mean . se')数据,aes(x=密度,y=产量))2 .方式

输出如下所示:

具有均值和标准差的方差分析图

这是非常难读的,因为所有不同的肥料类型的分组都是堆叠在一起的。我们将在下一步解决这个问题。

拆分数据

要显示哪些组彼此不同,请使用facet_wrap ()把数据分成三种肥料。若要添加标签,请使用geom_text (),并添加之前创建的mean.yield.data数据框架中的组字母。

Two.way.plot <- Two.way.plot + geom_text(data=mean.yield。= mean.yield数据标签。Data $group, vjust = -8, size = 5) + facet_wrap(~ fertilizer) two.way.plot

输出如下所示:

带标签的方差分析图

为发布做好准备

在这一步中,我们将删除灰色背景并添加轴标签。

two.way.plot <- two.way.plot + theme_classic2() +实验室(title = "作物产量对肥料组合和种植密度的响应",x = "种植密度(1=低密度,2=高密度)",y = "产量(蒲式耳每英亩)")two.way.plot

图的最终版本是这样的:

作物产量方差分析最终图

步骤7:报告结果

除了图表外,陈述方差分析检验的结果也很重要。包括:

  • 对测试变量的简要描述
  • F价值,自由度,以及p每个自变量的值
  • 结果意味着什么。
示例:报告方差分析结果
我们发现两种肥料类型在作物平均产量上有显著的统计学差异(F(2) = 9.018,p< 0.001)及按种植密度(F(1) = 15.316,p< 0.001)。

Tukey事后试验表明,肥料组合3的平均产量高于肥料组合1(0.59蒲式耳/英亩),平均产量高于肥料组合2(0.42蒲式耳/英亩)。种植密度也显著,种植密度2比种植密度1平均增产0.46蒲式耳/英亩。

随后的组间比较显示,种植密度2、肥料组合3的产量增长最强,这表明在我们的实验条件下,这种处理组合对作物生长最有利。

关于方差分析的常见问题

单向方差分析和双向方差分析的区别是什么?

单向和双向方差分析之间的唯一区别是的数量独立变量.单向方差分析有一个自变量,而双向方差分析有两个。

  • 单向方差分析:在马拉松比赛中测试鞋品牌(Nike, Adidas, Saucony, Hoka)与比赛完成时间之间的关系。
  • 双向方差分析:测试鞋品牌(耐克,阿迪达斯,Saucony, Hoka),跑者年龄组(初级,高级,硕士)和马拉松比赛结束时间之间的关系。

所有的方差分析都是为了测试三个或更多组之间的差异。如果您只是测试两组之间的差异,请使用学习任务代替。

什么是阶乘方差分析?

阶乘方差分析是任何使用一个以上的方差分析分类自变量.一个双向方差分析是一种阶乘方差分析。

阶乘方差分析的一些例子包括:

  • 测试疫苗接种(接种或未接种)和健康状况(健康或已有疾病)对人群流感感染率的综合影响。
  • 测试婚姻状况(已婚、单身、离婚、丧偶)、工作状况(受雇、自雇、失业、退休)和家族史(无家族史、有家族史)对人群抑郁症发病率的影响。
  • 测试饲料类型(A型、B型或C型)和鸡舍拥挤程度(不拥挤、有点拥挤、非常拥挤)对商业养殖操作中鸡的最终体重的影响。
方差分析如何计算统计显著性?

在方差分析中,零假设群体均值之间没有差异。如果任何一组显著不同于整个组的平均值,那么方差分析将报告a统计上显著结果。

使用F统计量计算组均值之间的显著差异,F统计量是平均平方和的比值方差由自变量解释)到均方误差(剩余方差)。

如果F统计值高于临界值(与alpha值相对应的F值,通常为0.05),则组间的差异被认为具有统计学意义。

定量变量和分类变量的区别是什么?

定量变量是否有数据表示数量的变量(例如身高、体重或年龄)。

分类变量是否有数据表示组的变量。这包括排名(例如在比赛中获得的名次)、分类(例如谷物的品牌)和二元结果(例如抛硬币)。

你需要知道是什么变量类型您正在为您的数据选择正确的统计测试,并解释您的数据结果

引用这篇Scribbr文章

如果你想引用这个来源,你可以复制和粘贴引用或点击“引用这篇Scribbr文章”按钮,自动添加到我们的免费引用生成器引用。

贝文斯,R.(2022年11月17日)。ANOVA在R |一个完整的一步一步的指南与例子。Scribbr。检索于2022年12月18日,来自//www.charpingshvac.com/statistics/anova-in-r/

这篇文章有用吗?
丽贝卡·贝

丽贝卡正在攻读土壤生态学博士学位,空闲时间用来写作。她很高兴能和大家一起研究统计数据。
Baidu