方差分析LMER Eta平方
我使用lmer软件包运行混合模型,当我使用anova函数检索anova结果时,一切正常。然而,当我尝试计算eta平方时,我始终得到下面的误差。有什么想法吗方差分析LMER Eta平方,r,lme4,anova,R,Lme4,Anova,我使用lmer软件包运行混合模型,当我使用anova函数检索anova结果时,一切正常。然而,当我尝试计算eta平方时,我始终得到下面的误差。有什么想法吗 Dyestuff是随lmerTest软件包提供的数据集。我 使用包“lme4”版本1.1-21。包'lmerTest'版本3.1-0和包'sjstats'版本0.17.7 fm1 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff) am <- anova(fm1, test="F") eta_sq(a
Dyestuff
是随lmerTest
软件包提供的数据集。我
使用包“lme4”版本1.1-21。包'lmerTest'版本3.1-0和包'sjstats'版本0.17.7
fm1 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff)
am <- anova(fm1, test="F")
eta_sq(am, partial = FALSE, ci.lvl = NULL, n = 1000, method = c("dist", "quantile"))
fm1tl;dr
- 从理论上讲,计算混合模型的eta平方可能比较困难,例如(它确实为计算混合模型的R^2值提供了一些方法,这可能会满足您对效果大小的需求)
- 实际上,最近的问题似乎是
sjstats
中的eta平方计算在内部要求anova()
方法返回一个包含与剩余方差相对应的行的表<代码>?anova.lmerModLmerTest
返回一个表,其中只包含与固定效应项(而不是剩余方差)相对应的行
这可能更适合于,但我将使用这个空间来分享我到目前为止得出的结论
- 拟合仅截距模型会产生类似的错误,即使它只是一个
fit(如果有任何情况发生,这应该会起作用):lm()
运行
rlang::last_error()
查看错误发生的位置。此外:警告信息: 方差分析(模型): ANOVA输出中的下列列名未被识别或转换:NumDF、DenDF (据我所知,警告信息实际上是无害的。) 这个问题的最接近的原因似乎是内部的
sjstats:::aov_stat_summary()
函数返回了一个只有一行的表,用于SSQ/MSQ/etc,原因是天
;它还应该有一行用于剩余SSQ/MSQ/etc
sjstats:::aov_stat_summary(am3)
## term sumsq meansq NumDF DenDF statistic p.value
## 1 Days 30030.94 30030.94 1 16.99998 45.85296 3.263825e-06
问题是术语的数量在内部计算为(nrow(aov.sum)-1
),这在这里没有意义
使用lm()
,将其与1天以上的模型进行比较:
注:没有“残差”行。相比之下:
anova(fm3)
## Analysis of Variance Table
## Response: Reaction
## Df Sum Sq Mean Sq F value Pr(>F)
## Days 1 162703 162703 71.464 9.894e-15 ***
## Residuals 178 405252 2277
我认为,如果使用sjstats包中的函数anova_stats,它就可以工作
fm2 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
am2 <- anova_stats(fm2, test="F")
fm2这看起来像是来自sjstats
包。您能给我们一个可复制的例子和sessionInfo()
(或者至少是lme4
,lmerTest
,sjstats
)的结果吗?感谢Ben,很抱歉缺乏透明度,包“lme4”版本1.1-21。包'lmerTest'版本3.1-0和包'sjstats'版本0.17.7。让我试试染料,好吗。任何帮助都将不胜感激。我有点恐慌。iIt是我论文的最后一部分,我有100个混合方法模型,我需要包括一个效应大小。你用什么软件包来计算eta_sq?如果可能,尝试使用omaga squared。sjstats有一个用于估算omega和eta的包,但是我不确定它是否支持lmerpackage“sjstats”版本0.17.7包含sjstats。尽管如此,还是同样的问题。事实上,我感谢你花时间和精力得出答案。这里更广泛的一点是LMM不利于影响大小,因此我需要重新考虑我的方法。我们正在报告该模型的一个系数,因此使用δR2或R2不能代表效果。我在这里迷路了…对不起,我的意思是:am2请你的答案来纠正它。不要将更正作为评论发布,但在答案中留下错误。
fm3 <- lm(Reaction ~ Days , sleepstudy)
am3 <- anova(fm3, test="F")
sjstats:::aov_stat_summary(am3)
## term df sumsq meansq statistic p.value
## 1 Days 1 162702.7 162702.652 71.46442 9.894096e-15
## 2 Residuals 178 405251.6 2276.694 NA NA
anova(fm2)
## Type III Analysis of Variance Table with Satterthwaite's method
## Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
## Days 30031 30031 1 17 45.853 3.264e-06 ***
anova(fm3)
## Analysis of Variance Table
## Response: Reaction
## Df Sum Sq Mean Sq F value Pr(>F)
## Days 1 162703 162703 71.464 9.894e-15 ***
## Residuals 178 405252 2277
fm2 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
am2 <- anova_stats(fm2, test="F")