我使用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(am, partial = FALSE, ci.lvl = NULL, n = 1000, method = c("dist", "quantile"))错误:结果2不是长度1的原子向量。 此外:警告消息:在tidy.anova(模型)中: ANOVA输出中的下列列名未被识别或转换: NumDF,DenDF
发布于 2020-03-07 22:38:55
tl;博士
sjstats中的eta平方计算期望anova()方法返回一个包含与剩余方差相对应的行的表。?anova.lmerModLmerTest返回一个只有与固定效果项对应的行(而不是剩余方差)的表。这可能更适合于sjstats问题清单,但我将使用这个空间来分享我到目前为止已经发现的信息。
lm()拟合(如果有任何情况的话,这应该会起作用):fm0 <- lm(Yield ~ 1 , Dyestuff)
am0 <- anova(fm0, test="F")
eta_sq(am0)错误:结果2必须是一个双倍,而不是长度为0的双向量。 运行
rlang::last_error()以查看错误发生的位置。
lmer(Test)模型也失败了:fm2 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
am2 <- anova(fm2, test="F")
eta_sq(am2)错误:结果2必须是一个双倍,而不是长度为0的双向量。 运行
rlang::last_error()以查看错误发生的位置。 此外:警告消息:在tidy.anova(模型)中: ANOVA输出中的下列列名未被识别或转换: NumDF,DenDF
(据我所知,警告信息实际上是无害的。)
这个问题的最近原因似乎是内部sjstats:::aov_stat_summary()函数返回一个只有一行的表,因为SSQ/MSQ/等是由于Days而产生的;它还应该有一个行作为剩余的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),这在这里是没有意义的。
将其与使用1+Days的lm()模型进行比较
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()结果报告方式的直接后果:
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 发布于 2020-08-27 14:29:40
我认为,如果您使用sjstats包中的函数anova_stats,它可以工作。
fm2 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
am2 <- anova_stats(fm2, test="F")https://stackoverflow.com/questions/60581497
复制相似问题