为什么我的重复阶乘 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)
我有一个示例数据框,如下所示:
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)