我正在 rstudio 中运行双向重复测量方差分析,我发现分析的输出产生了一些奇怪的自由度,我担心分析结果不准确。当我认为残差应该小于 30 时,我的残差是 352,尽管有 12 个时间点,但输出的“点”部分的 df 只是 1。
上下文:我正在尝试比较 3 个条件下超过 12 个时间点的中毒分数。我的数据集有 30 个主题,每个主题有 12 个条目对应 12 个时间点。我相信这个问题是由 R 将 360 行解释为单独的组引起的,并且也没有认识到“点”因子有 12 个级别。
我的 RM 方差分析的输出如下所示:
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
Point 1 15.4 15.444 14.774 0.000144 ***
Condition 2 36.8 18.410 17.611 5.13e-08 ***
Point:Condition 2 0.4 0.176 0.169 0.844842
Residuals 352 368.0 1.045
我的数据集的片段
ID Condition Day Intox_score Point
2341 T 1 0 1
2341 T 1 1 2
2341 T 1 0 3
2341 T 2 3 4
2341 T 2 2 5
2341 T 2 3 6
2341 T 3 0 7
2341 T 3 2 8
2341 T 3 3 9
2341 T 4 2 10
2341 T 4 1 11
2341 T 4 1 12
我想补充一点,我是一个非常缺乏经验的用户,并且到目前为止已经使用基础 R 完成了所有可能的分析。如果仍然可以使用基本 R 来解决问题,那就更好了。我纠正问题的时间有限,我担心学习使用另一个包并重新进行分析。我也可能误解了此处自由度的统计组成部分,但我认为无论哪种方式我都能够产生可靠的结果。
我尝试使用 aov() 函数,我相信它是 R 的基础,我的代码如下所示:
behint_rm_anova <- aov(Intox_score ~ Point * Condition + Error(ID/Point), data = Behavioral_intox_data_v4_for_R)
summary(behint_rm_anova)
我预计“点”的自由度是因子 (12) 减去 1 = 11 的水平 相反,我的输出仅显示自由度 1。
我还预计我的残差为 27(30 个受试者 - 3 组),但我的输出显示 352。
我尝试将代码中的错误术语更改为:“Error(ID/DAY)”,并尝试将其全部删除,认为这可能会改变 R 解释这些事物的方式,但这并没有改变我的自由度。
非常感谢您的反馈/帮助,非常感谢。
我怀疑您没有将
Point
(可能还有 ID
)列编码为 factor()
。
set.seed(42)
data <- data.frame(
ID = rep(1:30, each = 12),
Condition = rep(LETTERS[1:3], each = 120),
Point = rep(1:12, 30)
)
data$Intox_score[data$Condition == "A"] <- 1 + 0.09 * data$Point[data$Condition == "A"] + rnorm(120)
data$Intox_score[data$Condition == "B"] <- 2 + 0.09 * data$Point[data$Condition == "B"] + rnorm(120)
data$Intox_score[data$Condition == "C"] <- 3 + 0.09 * data$Point[data$Condition == "C"] + rnorm(120)
with(
data,
interaction.plot(
Point, Condition, Intox_score
)
)
m_1 <- aov(Intox_score ~ Point * Condition + Error(ID/Point), data)
summary(m_1)
#>
#> Error: ID
#> Df Sum Sq Mean Sq
#> Condition 1 204.1 204.1
#>
#> Error: ID:Point
#> Df Sum Sq Mean Sq
#> Point 1 29.4 29.4
#>
#> Error: Within
#> Df Sum Sq Mean Sq F value Pr(>F)
#> Point 1 14.0 13.964 14.998 0.000128 ***
#> Condition 2 27.6 13.788 14.809 6.68e-07 ***
#> Point:Condition 2 0.1 0.070 0.075 0.927833
#> Residuals 352 327.7 0.931
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
data$ID <- factor(data$ID)
data$Point <- factor(data$Point)
m_2 <- aov(Intox_score ~ Point * Condition + Error(ID/Point), data)
summary(m_2)
#>
#> Error: ID
#> Df Sum Sq Mean Sq F value Pr(>F)
#> Condition 2 231.70 115.85 116.9 5.04e-14 ***
#> Residuals 27 26.75 0.99
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Error: ID:Point
#> Df Sum Sq Mean Sq F value Pr(>F)
#> Point 11 48.32 4.393 4.799 8.31e-07 ***
#> Point:Condition 22 24.37 1.108 1.210 0.237
#> Residuals 297 271.83 0.915
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
创建于 2024-05-15,使用 reprex v2.1.0