【问题标题】:rstatix package anova_test function gives partial eta squared despite setting effect.size = 'ges'尽管设置 effect.size = 'ges',rstatix 包 anova_test 函数仍给出部分 eta 平方
【发布时间】:2021-08-26 15:03:09
【问题描述】:

当我使用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 = TRUEFALSE,我会得到不同的效果大小,正如我所期望的那样。

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


    【解决方案1】:

    回答

    rstatix::anova_test 似乎包含计算错误!我会非常非常小心地使用这个功能。

    请注意,eta_sq 已弃用,应使用 effectsize::eta_squared


    正确计算

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

    • pes: 1.412238 / (1.412238 + 28.003665)
    • ges: 1.412238 / (1.412238 + 72.752431 + 28.003665)

    anova_test

    在后台,anova_test 调用两个函数进行 pes 和 ges 计算:

    • 佩斯: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,不是ges。

    您可以联系包的维护者 (maintainer("rstatix")) 或为 rstatixhere 创建一个新问题。

    【讨论】:

      猜你喜欢
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多