使用 Emmenas 进行事后效应量估计

4

有没有一种方法可以直接使用emmeans()获取效应大小(如Cohen's d或最合适的效应大小)?

我无法找到任何使用emmeans()获取效应大小的内容。

post <- emmeans(fit, pairwise~  favorite.pirate | sex)
emmip(fit, ~ favorite.pirate | sex)

请提供您的数据和模型。 - Vitali Avagyan
2个回答

2

没有内置的效应量计算方法,但您可以通过定义自定义对比函数,将每个成对比较除以sigma值来拼凑一个。

mypw.emmc = function(..., sigma = 1) {
  result = emmeans:::pairwise.emmc (...)
  for (i in seq_along(result[1, ]))
    result[[i]] = result[[i]] / sigma
  result
}

这是一个测试运行:

> mypw.emmc(1:3, sigma = 4)
  1 - 2 1 - 3 2 - 3
1  0.25  0.25  0.00
2 -0.25  0.00  0.25
3  0.00 -0.25 -0.25

使用您的模型,误差SD为9.246(查看summary(fit)); 因此,...

> emmeans(fit, mypw ~ sex, sigma = 9.246, name = "effect.size")
NOTE: Results may be misleading due to involvement in interactions
$emmeans
 sex    emmean    SE     df lower.CL upper.CL
 female   63.8 0.434   3.03     62.4     65.2
 male     74.5 0.809  15.82     72.8     76.2
 other    68.8 1.439 187.08     65.9     71.6

Results are averaged over the levels of: favorite.pirate 
Degrees-of-freedom method: kenward-roger 
Confidence level used: 0.95 

$contrasts
 effect.size    estimate     SE  df t.ratio p.value
 female - male    -1.158 0.0996 399 -11.624 <.0001 
 female - other   -0.537 0.1627 888  -3.299 0.0029 
 male - other      0.621 0.1717 981   3.617 0.0009 

Results are averaged over the levels of: favorite.pirate 
Degrees-of-freedom method: kenward-roger 
P value adjustment: tukey method for comparing a family of 3 estimates 

需要注意的是:

  1. 效应大小的标准误(SEs)是具有误导性的,因为它们没有考虑 sigma 的变化。
  2. 这不是一个很好的例子,因为

    a. 因素相互作用(Edward Low在他的个人资料中不同)。此外,请参阅警告消息。

    b. 模型是奇异的(在拟合模型时发出警告),导致 college 的估计方差为零。


非常感谢,这非常有帮助!我知道,这个模型不是最好的例子,因为我正在熟悉emmeans和lmer。因此,SE将是适当的效应大小参数,并且它被解释为Cohen's d规则? - atnplab
对于Cohen的效应量,您不应该使用SE,而应该使用总误差SD。请参阅有关预测的vignette以进行说明。如果您使用SE,则那是t比率,而不是Cohen d。 - Russ Lenth
1
受这个问题的启发,我在一些对比函数中添加了一个“divisor”参数,因此您可以执行emmeans(fit, pairwise ~ sex, divisor = 9.246)。这将在下一个CRAN更新中提供,但现在可以从github网站rvlenth/emmeans获取。 - Russ Lenth
1
当我发现@RussLenth在包中添加了一个相关函数时,我会在此评论中指出:https://rdrr.io/cran/emmeans/man/eff_size.html - Nigini

-1
library(yarrr)
View(pirates)
library(lme4)
library(lmerTest)

fit <- lmer(weight~ favorite.pirate * sex +(1|college), data = pirates)  
anova(fit, ddf = "Kenward-Roger")

post <- emmeans(fit, pairwise~  sex)  
post

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接