R中的双向重复测量方差分析
Two-way repeated measures ANOVA in R
我一直在尝试在 R 中对一个虚构的数据集进行双向重复测量方差分析以学习统计数据。我以前问过这个问题,但我不得不调整我的数据集,因为我犯了一些关键错误。它代表两名学生,他们在两年内对两个测试变体的测试进行了评分。尽管练习应该很简单,但我不断收到错误消息。这是我的数据集:
ID Score Time Group
<fct> <int> <fct> <fct>
1 10 1 1
1 15 2 1
2 2 1 1
2 5 2 1
3 7 1 1
3 8 2 1
4 6 1 2
4 8 2 2
5 9 1 2
5 4 2 2
6 3 1 2
6 12 2 2
我试过几种方法:
aov<- df %>% anova_test(Score~ Time*Group+ Error(ID/(Time*Group)))
ezANOVA(
data = df, dv = Score, wid = ID,
within = .(Time, Group), type = 3)
resaov <- anova_test(
data = df, dv = Score, wid = ID,
within = c(Time, Group))
我收到的错误信息是:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
我应该以不同的方式格式化我的数据吗?如果是这样,它应该看起来如何?
问题是 组 是一个 between-subject 因素(每个 ID 要么在组 1 中,要么在组 2 中,但不在两者中),但你威胁它作为within-subject 方差分析调用中的因素。错误消息告诉您指定设计的数据不完整。
如果您将 Group 的设计指定为 between-factor。
#packages
library(tidyr)
library(ez)
library(rstatix)
#create your data frame (with random Score values)
df <- tibble(ID = as.factor(rep(1:6, each = 2)),
Score = sample(1:15, 12, replace = TRUE),
Time = as.factor(rep(1:2, times = 6)),
Group = as.factor(rep(1:2, each = 6)))
#ezANOVA
ezANOVA(
data = df, dv = Score, wid = ID,
within = Time, between = Group, type = 3)
$ANOVA
Effect DFn DFd F p p<.05 ges
2 Group 1 4 0.1290323 0.7375971 0.02787456
3 Time 1 4 4.1290323 0.1119574 0.10289389
4 Group:Time 1 4 0.5806452 0.4885138 0.01587302
#anova_test #1
anova_test(data = df, formula = Score ~ Time*Group + Error(ID/Time))
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Group 1 4 0.129 0.738 0.028
2 Time 1 4 4.129 0.112 0.103
3 Group:Time 1 4 0.581 0.489 0.016
#anova_test #2
df %>% anova_test(Score~ Time*Group+ Error(ID/Time))
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Group 1 4 0.129 0.738 0.028
2 Time 1 4 4.129 0.112 0.103
3 Group:Time 1 4 0.581 0.489 0.016
我一直在尝试在 R 中对一个虚构的数据集进行双向重复测量方差分析以学习统计数据。我以前问过这个问题,但我不得不调整我的数据集,因为我犯了一些关键错误。它代表两名学生,他们在两年内对两个测试变体的测试进行了评分。尽管练习应该很简单,但我不断收到错误消息。这是我的数据集:
ID Score Time Group
<fct> <int> <fct> <fct>
1 10 1 1
1 15 2 1
2 2 1 1
2 5 2 1
3 7 1 1
3 8 2 1
4 6 1 2
4 8 2 2
5 9 1 2
5 4 2 2
6 3 1 2
6 12 2 2
我试过几种方法:
aov<- df %>% anova_test(Score~ Time*Group+ Error(ID/(Time*Group)))
ezANOVA(
data = df, dv = Score, wid = ID,
within = .(Time, Group), type = 3)
resaov <- anova_test(
data = df, dv = Score, wid = ID,
within = c(Time, Group))
我收到的错误信息是:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
我应该以不同的方式格式化我的数据吗?如果是这样,它应该看起来如何?
问题是 组 是一个 between-subject 因素(每个 ID 要么在组 1 中,要么在组 2 中,但不在两者中),但你威胁它作为within-subject 方差分析调用中的因素。错误消息告诉您指定设计的数据不完整。
如果您将 Group 的设计指定为 between-factor。
#packages
library(tidyr)
library(ez)
library(rstatix)
#create your data frame (with random Score values)
df <- tibble(ID = as.factor(rep(1:6, each = 2)),
Score = sample(1:15, 12, replace = TRUE),
Time = as.factor(rep(1:2, times = 6)),
Group = as.factor(rep(1:2, each = 6)))
#ezANOVA
ezANOVA(
data = df, dv = Score, wid = ID,
within = Time, between = Group, type = 3)
$ANOVA
Effect DFn DFd F p p<.05 ges
2 Group 1 4 0.1290323 0.7375971 0.02787456
3 Time 1 4 4.1290323 0.1119574 0.10289389
4 Group:Time 1 4 0.5806452 0.4885138 0.01587302
#anova_test #1
anova_test(data = df, formula = Score ~ Time*Group + Error(ID/Time))
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Group 1 4 0.129 0.738 0.028
2 Time 1 4 4.129 0.112 0.103
3 Group:Time 1 4 0.581 0.489 0.016
#anova_test #2
df %>% anova_test(Score~ Time*Group+ Error(ID/Time))
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Group 1 4 0.129 0.738 0.028
2 Time 1 4 4.129 0.112 0.103
3 Group:Time 1 4 0.581 0.489 0.016