方差分析LMER 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

我使用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"))

fm1tl;dr

  • 从理论上讲,计算混合模型的eta平方可能比较困难,例如(它确实为计算混合模型的R^2值提供了一些方法,这可能会满足您对效果大小的需求)
  • 实际上,最近的问题似乎是
    sjstats
    中的eta平方计算在内部要求
    anova()
    方法返回一个包含与剩余方差相对应的行的表<代码>?anova.lmerModLmerTest
返回一个表,其中只包含与固定效应项(而不是剩余方差)相对应的行
  • 在任何情况下,对于没有非平凡固定效应(即仅固定效应截距)的模型,您可能会在计算eta平方时遇到困难

  • 这可能更适合于,但我将使用这个空间来分享我到目前为止得出的结论

    • 拟合仅截距模型会产生类似的错误,即使它只是一个
      lm()
      fit(如果有任何情况发生,这应该会起作用):
    错误:结果2必须是单双精度向量,而不是长度为0的双精度向量
    运行
    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")