为什么我的重复阶乘 aov 无法识别我的样本量?

Why does my repeated factorial aov not recognise my sample size?

我有一个示例数据框,如下所示:

DV IV1 IV2 ID
6 x a 1
3 x a 2
4 x a 3
9 x b 1
2 x b 2
4 x b 3
8 y a 1
4 y a 2
3 y a 3
2 y b 1
1 y b 2
5 y b 3
9 z a 1
7 z a 2
8 z a 3
9 z b 1
4 z b 2
3 z b 3

我尝试使用此代码运行 重复测量阶乘方差分析:

model <- aov(DV ~ IV1*IV2 + Error(ID/IV1*IV2), data=my_data)

虽然代码有效,但输出是错误的。我怀疑这是因为 R 无法识别我的数据中有 3 个参与者(我的 ID 自由度始终为 1)。因此,对于这个示例数据,我的错误 df 是 6 而不是 4。

请问我做错了什么吗?

将要在 aov 中使用的分类变量转换为因子总是有用的,这对您的情况也有效:

  my_data <- readr::read_tsv(
    'DV     IV1     IV2     ID
6   x   a   1
3   x   a   2
4   x   a   3
9   x   b   1
2   x   b   2
4   x   b   3
8   y   a   1
4   y   a   2
3   y   a   3
2   y   b   1
1   y   b   2
5   y   b   3
9   z   a   1
7   z   a   2
8   z   a   3
9   z   b   1
4   z   b   2
3   z   b   3')
  
  my_data$ID <- factor(my_data$ID)
  
  model <- aov(DV ~ IV1*IV2 + Error(ID/(IV1*IV2)), data=my_data)
  summary(model)
#> 
#> Error: ID
#>           Df Sum Sq Mean Sq F value Pr(>F)
#> Residuals  2  43.11   21.56               
#> 
#> Error: ID:IV1
#>           Df Sum Sq Mean Sq F value Pr(>F)  
#> IV1        2 25.444  12.722   8.642 0.0353 *
#> Residuals  4  5.889   1.472                 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Error: ID:IV2
#>           Df Sum Sq Mean Sq F value Pr(>F)  
#> IV2        1  9.389   9.389   10.56 0.0831 .
#> Residuals  2  1.778   0.889                 
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Error: ID:IV1:IV2
#>           Df Sum Sq Mean Sq F value Pr(>F)
#> IV1:IV2    2  10.11   5.056   0.802   0.51
#> Residuals  4  25.22   6.306

reprex package (v0.3.0)

于 2021 年 1 月 11 日创建

顺便说一下,在@Max Teflon 方法的版本中,我发现“ez”包也达到了相同的结果。

install.packages("ez")
library(ez)
ezANOVA(test, dv=.(dv), wid=.(ID), within=.(iv1,iv2), detailed=TRUE)