如何在 R 中执行 ANCOVA

机器算法验证 r 安乔娃
2022-01-18 15:01:08

我想对有关植物附生植物密度的数据进行 ANCOVA 分析。起初,我想知道一个N和一个S两个斜坡之间的植物密度是否有任何差异,但是我有其他数据,例如海拔,冠层开放度和寄主植物的高度。我知道我的协变量必须是两个斜率(N 和 S)。我构建了这个在 R 中运行的模型,虽然我不知道它是否表现良好。另外我想知道如果我使用符号+或有什么区别*

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1
3个回答

基本工具是lm请注意,这aovlm.

特别是,如果您有一些分组变量(因子),g, 和一个连续协变量x,该模型y ~ x + g将拟合主效应 ANCOVA 模型,同时y ~ x * g拟合包含与协变量交互的模型。aov将采用相同的公式。

要特别注意Note帮助上的aov

至于+vs *, russellpierce 几乎涵盖了它,但我建议你看一下,?lm尤其?formula是手册的第 11.1 节An Introduction to R that come with R (或者如果你还没有弄清楚如何,你可以在网上找到它在您的计算机上找到它;最容易的是,这涉及在 R 或 RStudio 中找到“帮助”下拉菜单)。

我建议使用 R by Field获取和阅读Discovering Statistics 。他对 ANCOVA 有一个很好的部分。

要在 R 中运行 ANCOVA,请加载以下包:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

如果您使用lmor aov(我使用aov),请确保在执行aovor之前使用“对比度”功能设置对比度lmR 默认使用非正交对比,这会在 ANCOVA 中搞砸一切。如果要设置正交对比,请使用:

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

然后运行你的模型

model.1=aov(dv~covariate+factorvariable, data=dataname)

要查看模型,请使用:

Anova(model.1, type="III") 

确保在此处使用大写字母“A”Anova而不是anova. 这将给出使用 III 型 SS 的结果。

summary.lm(model.1)将给出另一个总结并包括 R-sq。输出。

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

如果要测试回归斜率的同质性,还可以包括 IV 和协变量的交互项。那将是:

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

如果交互项显着,那么您就没有同质性。

这是@Butorovich建议的程序的补充文档http://goo.gl/yxUZ1R 。此外,我的观察是,当协变量是二进制时,使用 summary(lm.object) 将给出与 Anova(lm.object, type="III") 生成的相同的 IV 估计。