对于 ANOVA,可以很容易地得到部分 eta 平方 ( np2
) 效应大小effectsize::eta_squared
:
> model <- aov(mpg ~ factor(cyl), data = mtcars)
> effectsize::eta_squared(model)
For one-way between subjects designs, partial eta squared is equivalent to eta squared.
Returning eta squared.
# Effect Size for ANOVA
Parameter | Eta2 | 90% CI
---------------------------------
factor(cyl) | 0.73 | [0.57, 0.82]
此外,在 SPSS 中进行MANOVAnp2
时,只需选中“Estimates of effect size”框即可轻松获得每个 DV。
但是,尝试获取np2
R 中的每个 DV:
> model <- manova(cbind(mpg, hp) ~ factor(cyl), data = mtcars)
> effectsize::eta_squared(model)
# Effect Size for ANOVA (Type I)
Parameter | Eta2 (partial) | 90% CI
-------------------------------------------
factor(cyl) | 0.46 | [0.28, 0.57]
或者:
> heplots::etasq(model)
eta^2
factor(cyl) 0.4564352
只输出一个np2
(对于全局模型?),而不是每个 DV 的单独效果大小。
注释文档?eta_squared
:
对于 mlm / maov 模型,分别为每个响应计算效果大小
但这显然是注意这里的情况。然而,当我检查对象的类时,它包括类maov
:
> class(model)
[1] "manova" "maov" "aov" "mlm" "lm"
当然,可以通过定义单独的模型为每个效应大小重新运行方差分析:
> model <- aov(mpg ~ factor(cyl), data = mtcars)
> effectsize::eta_squared(model)
Parameter | Eta2 | 90% CI
---------------------------------
factor(cyl) | 0.73 | [0.57, 0.82]
> model <- aov(hp ~ factor(cyl), data = mtcars)
> effectsize::eta_squared(model)
Parameter | Eta2 | 90% CI
---------------------------------
factor(cyl) | 0.71 | [0.55, 0.80]
或者lapply
为每个模型写一个调用:
aov.list <- list(model1 <- aov(mpg ~ factor(cyl), data = mtcars),
model2 <- aov(hp ~ factor(cyl), data = mtcars))
lapply(aov.list, effectsize::eta_squared)
[[1]]
Parameter | Eta2 | 90% CI
---------------------------------
factor(cyl) | 0.73 | [0.57, 0.82]
[[2]]
Parameter | Eta2 | 90% CI
---------------------------------
factor(cyl) | 0.71 | [0.55, 0.80]
但这似乎不是最有效的。当然,有一种方法可以做到这一点effectsize::eta_squared
?
问题
如何以正确的方式为每个 DV 在 R 中获得 MANOVA 的部分 eta 平方?