我使用R来运行ANOVA
(常见的aov()
代码,它提供以下信息:Df
、Sum Sq
、Mean Sq
、F value
、Pr(>F)
),还有一条信息我无法从这些表中获得:因变量的估计边际均值。
我知道可以在SPSS
中从ANOVA
获得这些额外的信息,但是我无法在R
中复制它。
我使用dput()
的最小数据:
df<-data.frame(dep.variable = c(0.5092, 0.6965, 0.4308, 0.634, 0.4258, 0.3543, 0.6603, 0.5882, 0.3098, 0.5229), ind.v=c(3L, 3L, 4L, 1L, 2L, 2L, 2L, 3L, 4L, 4L)
,Control1=c(1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L), Control2=c(2L, 2L, 5L, 3L, 2L, 2L, 2L, 7L, 4L, 4L))
my_anova <- aov (dep.variable ~ ind.v*Control1*Control2, data = df)
我的自变量是一个具有4
水平的因子,我需要在控制Control1
和Control2
后,自变量每个水平的因值的平均值。
我很感激你的帮助。
3条答案
按热度按时间vu8f3i0k1#
所以当你看this教程的时候,R并没有给予你平均值,就像你看SPSS的时候一样。也许你想尝试一个不同的库来给你更多的信息?你也可以像this教程一样手动操作。他们只是简单的得到每组的平均值:
请注意,您的分类变量需要是二进制的,以单独识别每个类别的影响。(如果需要,创建虚拟变量)
p1tboqfb2#
我生成了一个随机数据集来增加样本量,作为执行
ANCOVA
来生成可估计的效应和均值的说明性示例。(checking model assumptions, choosing the best model, testing independence between covariates and factor variable
)。例如,我们需要验证协变量(Control1,2
)和处理(ind.v
)是相互独立的。因为仅当协变量和治疗效应对应答相互独立时,将协变量项纳入模型才有意义变量。另外,另一点是决定哪个模型是最佳模型。我们需要使用完整模型,还是从完整模型中删除一些没有任何意义的项,将它们包含到模型中。另一点是,看看?aov
,当数据平衡且处理具有相同的重复次数时,函数是合适的。否则,函数如lm()
将更合适。我假设问题所有者提供的完整数据集是balanced
,因此我将考虑aov()
作为ANOVA
。此外,我还想显示ANOVA基础模型(无协变量)和问题所有者指定的完整模型,以比较两个模型估计的平均值和治疗之间的比较。希望这些能有所帮助。为了在控制和不控制协变量的情况下获得调整后的平均值,我们使用来自包
lsmeans
的lsmeans()
。两个模型的估计均值不同,因为我们在第二个模型中包含协变量。最后,我们定义事后比较以进行成对比较。我们在这里使用
Scheffé
或Bonferroni
程序,因为Tukey’s
方法不适用于ANCOVA(Kutner et al. 2005
)。在这里查看p值,我们观察到配对比较均不显著,因为它是随机数据集。这只是尝试显示存在协变量时
ANCOVA
的步骤。5uzkadbs3#
aov()
是lm()
的 Package 器,专门用于提供方差分析所需的常见输出。您可以像使用lm()
输出一样使用coef()
获得系数,或者直接使用lm()
:使用
coef()
获得组平均值:一个二个一个一个
或者直接调用
lm()
:请注意,第一组
'a'
的均值在(Intercept)
项中,'b'
的效应是相对于此截距的差值。实际组均值是'a'
的截距与'b'
的两个系数之和。对于两个以上的因子,效应会受到混淆,并且无法通过模型输出获得组平均值(不是
aov
就是lm
).这样做的原因,我怀疑,这些边际平均值只有在因素之间没有相互作用的情况下才有意义。有一个专门的软件包来处理这个问题,叫做emmeans
。我们必须使用模拟数据集,因为最小示例对于水平数的观测值仍然太少:现在,我们拟合方差分析并求出边际平均值: