rstatix 包 anova_test 函数给出了部分 eta 平方,尽管设置了effect.size = 'ges'

问题描述 投票:0回答:2

当我使用

rstatix::anova_test
时,我无法获得 eta 平方,只能获得部分 eta 平方。

鸢尾花数据集的示例:

首先使用

aov

aov <- aov(Sepal.Length ~ Sepal.Width + Species, data = iris)
summary(aov)
             Df Sum Sq Mean Sq F value  Pr(>F)    
Sepal.Width   1   1.41    1.41   7.363 0.00746 ** 
Species       2  72.75   36.38 189.651 < 2e-16 ***
Residuals   146  28.00    0.19      

然后使用

sjstats::eta_sq
,如果我选择
partial = TRUE
FALSE
,我会得到不同的效果大小,正如我所期望的。

eta_sq(aov, partial = FALSE) 
         term etasq
1 Sepal.Width 0.014
2     Species 0.712

eta_sq(aov, partial = TRUE)
         term partial.etasq
1 Sepal.Width         0.048
2     Species         0.722

但是,当我在

anova_test
中执行相同操作时,无论效果大小是 pes 还是 ges,我都会两次得到部分 eta 平方,两次都是部分 eta 平方:

aov_pes <- iris %>% anova_test(Sepal.Length ~ Sepal.Width + Species,
                               detailed = T,
                               effect.size = "pes")
get_anova_table(aov_pes)

       Effect    SSn    SSd DFn DFd       F        p p<.05
1 Sepal.Width 10.953 28.004   1 146  57.102 4.19e-12     *
2     Species 72.752 28.004   2 146 189.651 2.56e-41     *
    pes
1 0.281
2 0.722

aov_ges <- iris %>% anova_test(Sepal.Length ~ Sepal.Width + Species,
                               detailed = T,
                               effect.size = "ges")
get_anova_table(aov_ges)

       Effect    SSn    SSd DFn DFd       F        p p<.05
1 Sepal.Width 10.953 28.004   1 146  57.102 4.19e-12     *
2     Species 72.752 28.004   2 146 189.651 2.56e-41     *
    ges
1 0.281
2 0.722

有谁知道这是为什么吗?谢谢!

r anova rstatix
2个回答
0
投票

回答

rstatix::anova_test
好像计算有错误!我会非常非常小心地使用这个功能。

请注意,

eta_sq
已弃用,应使用
effectsize::eta_squared


正确计算

我们有三个 SS 值:1.412238、72.752431 和 28.003665。我们可以计算 pes 和 ge:

  • 价格:1.412238 / (1.412238 + 28.003665)
  • 几何数:1.412238 / (1.412238 + 72.752431 + 28.003665)

anova_测试

在底层,

anova_test
调用两个函数进行 pes 和 ges 计算:

  • pes:
    rstatix:::add_partial_eta_squared
  • ges:
    rstatix:::add_generalized_eta_squared

通过

anova_test

计算 pes
res.anova.summary$ANOVA %>% mutate(pes = .data$SSn/(.data$SSn + .data$SSd))

这确实按照我们的预期计算了 pes。


通过

anova_test

进行ges计算
aov.table <- res.anova.summary$ANOVA
aov.table %>% mutate(ges = .data$SSn/(.data$SSn + sum(unique(.data$SSd)) + obs.SSn1 - obs.SSn2))

在这里,我们遇到了一个问题。这段代码看起来明显不正确。它只是将每个平方和值除以自身 + 剩余平方和 (28.004)。那是 pes,不是 ge。

您可以联系软件包的维护者 (

maintainer("rstatix")
) 或在
rstatix
软件包这里创建新问题。


0
投票

据我了解,当只有独立的受试者间变量,并且您没有指定其中任何一个是“观察到的”(或测量的,即非操纵的)时, pes 和 ges 都是相等的。

参见 Lakens (2013) 的引文:“当参与者之间操纵所有因素时,η2G 和 η2p 是相同的。” https://www.frontiersin.org/journals/psychology/articles/10.3389/fpsyg.2013.00863/full

如果你想要这里提到的计算: ges:1.412238 / (1.412238 + 72.752431 + 28.003665)

您应该指定“物种”作为观察(测量)变量:

aov_ges <- iris %>% anova_test(Sepal.Length ~ Sepal.Width + Species,
                               detailed = T,
                               effect.size = "ges", observed = "Species")
get_anova_table(aov_ges)

无测量变量的ges:0.2811500

以物种作为测量变量:0.09804556

© www.soinside.com 2019 - 2024. All rights reserved.