ANOVA在R |一个完整的一步一步的指南与例子
方差分析是一个统计检验用于估计如何定量因变量根据一个或多个分类的级别而变化独立变量.方差分析检验在自变量的每一水平上是否存在组间均值的差异。
零假设(H0)为均值无差异,而备择假设(H一个)是方法是不同的。
在本指南中,我们将引导您完成一个单向方差分析(一个自变量)和a双向方差分析(两个自变量)。
我们的样本数据集包含了对肥料类型和种植密度对作物产量影响的假想研究的观察结果。
我们还将包括如何使用交互项执行和解释双向方差分析以及使用阻塞变量的方差分析的示例。
从R开始
如果您以前没有使用过R,请从下载开始R而且R工作室.下载完这两个程序后,打开R Studio并单击文件>新文件>R脚本.
现在,您可以将本例其余部分的代码复制并粘贴到您的脚本中。要运行代码,突出显示要运行的行然后点击运行按钮在文本编辑器的右上方(或按CTRL + enter在键盘上)。
安装和加载包
首先,安装分析所需的软件包(这只需要做一次):
然后将这些包加载到R环境中(每次重新启动R程序时都这样做):
步骤1:将数据加载到R中
请注意,这些数据是为这个例子生成的,它不是来自真实的实验。
在本演练中,我们将对所有示例使用相同的数据集。不同分析之间的唯一区别是我们包含了多少自变量,以及我们以何种组合包含它们。
将数据集导入r时,通常会将因子读取为定量变量read.csv ()
命令读入数据,在命令中指定每个变量应该是定量的(“数字”)还是分类的(“因子”)。
使用下面的代码,替换/ /你/文件路径文本与您的文件的实际路径:
在继续之前,您可以检查数据是否已正确读入:
您应该看到“密度”、“块”和“肥料”被列为分类变量,并在每个级别上列出了观测值的数量(即密度1处有48个观测值,密度2处有48个观测值)。
' Yield '应该是一个具有数字摘要的定量变量(最小值,中位数,的意思是、最大)。
第二步:进行方差分析检验
方差分析通过检查每个单独组的方差与数据的总体方差,来检验是否有任何组的均值与数据的总体均值不同。如果一个或多个组落在预测的变化范围之外零假设(所有组均值相等),那么检验是统计上显著.
我们可以在R中使用自动阀()
函数。这将计算检验统计量进行方差分析,并确定由自变量水平组成的组之间是否存在显著差异。
单向方差分析
在单向方差分析例如,我们将作物产量建模为所使用肥料类型的函数。首先我们将使用自动阀()
来运行模型,然后我们将使用总结()
要打印总结模型的。
模型摘要首先列出了模型中被测试的自变量(在这种情况下,我们只有一个,“肥料”)和模型残差(“残差”)。所有不能被自变量解释的变化称为剩余方差。
输出表中的其余值描述了自变量和残差:
- 的Df列显示自由度对于自变量(变量的水平数减去1),残差的自由度(观察总数减去1,再减去自变量的水平数)。
- 的平方之和列显示平方和(也就是组均值和总体均值之间的总变化)。
- 的意思是平方列是平方和的平均值,通过将平方和除以每个参数的自由度来计算。
- 的F价值列是检验统计量从F测试。这是每个自变量的均方除以残差的均方。越大F值越大,由自变量引起的变化就越有可能是真实的,而不是偶然的。
- 的公关(F >)列是p价值的F统计。这表明,它是多么有可能F如果组均值之间无差异的原假设为真,则从检验中计算出的值将会发生。
的p肥料变量值较低(p< 0.001),因此使用的肥料类型似乎对最终的作物产量有实际影响。
双向方差分析
在双向方差分析例如,我们将作物产量建模为肥料类型和种植密度的函数。首先我们使用自动阀()
为了运行模型,我们使用总结()
打印模型的摘要。
在模型中增加种植密度似乎使模型变得更好:它减少了残差方差(残差平方和由35.89变为30.765),种植密度和施肥均有统计学意义(p值< 0.001)。
添加变量之间的交互
有时,你有理由认为两个自变量具有相互作用效应,而不是相加效应。
例如,在我们的作物产量实验中,种植密度可能会影响植物对肥料的吸收能力。这可能会以一种在双向模型中没有考虑到的方式影响肥料类型的效果。
为了测试两个变量在方差分析中是否具有交互作用,只需在模型中使用星号而不是加号:
在输出表中,' fertilizer:density '变量的平方和值低,平方和值高p值,这意味着没有太多的变化可以解释肥料和种植密度之间的相互作用。
添加一个阻塞变量
如果你把你的实验疗法以某种方式分组,或者如果你有一个混杂变量这可能会影响您感兴趣的测试关系,您应该将该元素作为阻塞变量包含在模型中。最简单的方法就是用“+”将变量添加到模型中。
例如,在许多作物产量研究中,处理是在田间的“块”内进行的,这些块在土壤质地、湿度、日照等方面可能不同。为了控制种植块之间差异的影响,我们在方差分析中添加了第三个术语“块”。
“block”变量的平方和值低(0.486),平方和值高p值(p = 0.48),因此它可能没有向模型添加太多信息。它也不会改变两个自变量的平方和,这意味着它不会影响他们解释的因变量的变化量。
第三步:找到最合适的模特
现在有四种不同的方差分析模型来解释这些数据。你如何决定使用哪一个?通常你会想要使用“最佳拟合”模型——最能解释因变量变化的模型。
的赤池信息标准(AIC)是一个很好的模型拟合检验方法。AIC计算每个模型的信息价值,通过平衡解释的变化与的数量参数使用。
在AIC模型选择中,我们比较每个模型的信息值,选择AIC值最低的模型(数字越低说明解释的信息越多!)
AIC得分最低的模型(表中列在前面)最适合数据:
从这些结果来看,这两个。方式模式是最适合的。双向模型AIC值最低,AIC权值为71%,这意味着它解释了全组模型所能解释的因变量总变异量的71%。
具有阻塞项的模型包含额外15%的AIC权重,但由于它比最好的模型差2 delta-AIC,因此可能不足以包含在您的结果中。
第四步:检查同方差
来检验模型是否符合的假设方差齐性,查看R中的模型诊断图图()
功能:
输出如下所示:
诊断图显示了观测数据范围内无法解释的方差(残差)。
每个图都给出了关于模型拟合的特定信息,但知道代表残差均值的红线应该是水平的,并以0为中心(在标度位置图中,或以1为中心)就足够了,这意味着不存在较大的残差离群值这会导致研究偏见在模型中。
正常的Q-Q图在完全同方差模型的理论残差和模型的实际残差之间绘制回归图,因此斜率越接近1越好。这个Q-Q图非常接近,只有一点点偏差。
从这些诊断图中,我们可以说该模型符合同方差的假设。
如果你的模型不符合同方差假设,你可以尝试Kruskall-Wallis检验。
步骤5:做一个事后测试
方差分析告诉我们组均值之间是否存在差异,但不告诉我们差异是什么。为了找出哪些组在统计上彼此不同,您可以执行Tukey 's honest Significant Difference (Tukey 's HSD)事后测试,进行两两比较:
从事后的测试结果来看,有统计上显著肥料3组与1组、肥料3组与2组之间差异(p < 0.05),但肥料2组与1组之间差异无统计学意义。两种不同种植密度水平之间也存在显著差异。
步骤6:在图表中绘制结果
在绘制模型的结果时,重要的是要显示:
- 原始数据
- 摘要信息,通常是平均值和标准错误对每组进行比较
- 将每组上方的字母或符号进行比较,以表明组间的差异。
找出组间的差异
由方差分析可知,种植密度和肥料类型都是显著变量。为了在图表上显示这些信息,我们需要显示肥料类型+种植密度的组合中哪些在统计上是不同的。
为此,我们可以运行另一个ANOVA + TukeyHSD测试,这一次使用肥料和种植密度的相互作用。我们这样做不是为了找出交互项是否显著(我们已经知道它不显著),而是为了找出哪些组的均值在统计上彼此不同,这样我们就可以将这些信息添加到图表中。
我们将以图的形式打印TukeyHSD结果,而不是以表的形式打印。
显著的组间差异是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)。
用组标签制作一个数据帧
现在我们需要制作一个额外的数据帧,以便将这些分组差异添加到我们的图中。
首先,以肥料种类和种植密度为分组变量,对原始数据进行汇总。
接下来,在数据帧中添加组标签作为新变量。
你的数据帧应该是这样的:
现在我们准备开始为我们的报告制作情节。
绘制原始数据
输出如下所示:
将均值和标准误差添加到图表中
输出如下所示:
这是非常难读的,因为所有不同的肥料类型的分组都是堆叠在一起的。我们将在下一步解决这个问题。
拆分数据
要显示哪些组彼此不同,请使用facet_wrap ()
把数据分成三种肥料。若要添加标签,请使用geom_text ()
,并添加之前创建的mean.yield.data数据框架中的组字母。
输出如下所示:
为发布做好准备
在这一步中,我们将删除灰色背景并添加轴标签。
图的最终版本是这样的:
步骤7:报告结果
除了图表外,陈述方差分析检验的结果也很重要。包括:
- 对测试变量的简要描述
- 的F价值,自由度,以及p每个自变量的值
- 结果意味着什么。
关于方差分析的常见问题
引用这篇Scribbr文章
如果你想引用这个来源,你可以复制和粘贴引用或点击“引用这篇Scribbr文章”按钮,自动添加到我们的免费引用生成器引用。