使用场景:
- 同一组被试在多个时间点的测量:例如,在药物实验中,研究者希望了解某种药物对同一组患者在多个时间点的效果。
- 同一组被试在不同条件下的测量:例如,心理学实验中,研究者可能希望了解同一组被试在不同刺激条件下的反应差异。
使用前提:
- 独立性:要求各组数据相互独立,互不相关
- 正态性:各组数据呈现正态分布
- 方差齐性:各组方差呈现反差齐性
- 球形对称:检验不同测量之间的插值的方差是否相等
准备数据:
- 将数据在Excel中分好组
ID | condition_1 | condition_2 | value |
---|---|---|---|
1 | A1 | B1 | 11 |
2 | A1 | B2 | 12 |
3 | A1 | B1 | 11 |
… | … | … | … |
n | A3 | B3 | 21 |
- 将数据转换为.csv文件
- 导入数据
testvalue <- read.csv("path/data.csv")
- 将所有分类变量设置为因子
testvalue$ID <- as.factor(testvalue$ID)
testvalue$A <- as.factor(testvalue$A)
testvalue$B <- as.factor(testvalue$B)
- 正态性检验
如果所有的点都离直线很近,落在置信区间内则说明正态性良好;
如果不符合正态,那么近似正态也是可以的,或者当受试者数量大于等于30时数据是默认正态的。
不符合正态性,则可以通过数据转换,可参考非正态到正态的转换------打酱油的工程师
install.packages("car")
library(car)
par(mfrow = c(1, 2))#在同一绘图区绘制1行2列的图形
qqPlot(lm(value~condition_1, data = testvalue), simulate = TRUE, main = 'QQ Plot', labels = FALSE)
qqPlot(lm(value~condition_2, data = testvalue), simulate = TRUE, main = 'QQ Plot', labels = FALSE)
par(opar)#还原
- 方差齐性检验
使用 Bartlett 检验进行方差齐性检验(p > 0.05 说明方差齐整)
bartlett.test(value~condition_1, data = testvalue)
bartlett.test(value~condition_2, data = testvalue)
-
球形检验
本处不另外进行检验,以下方法都会带有球形检验 -
重复测量方差分析
- 使用ezANOVA
install.packages("ez")
library(ez)
result_anova <- ezANOVA(
data = testvalue,
dv = .(value),
wid = .(ID), # 指定参与者ID
within = .(condition_1, condition_2), # 指定被试内因素(条件)
detailed = TRUE, # 如果需要详细输出
type = 3 # 方差分析的类型
)
- 使用bruceR
install.packages("emmeans")
install.packages("bruceR")
library(emmeans)
library(bruceR)
result_manova <- MANOVA(
data = testvalue,
dv = "value",
subID = "ID", # 指定参与者ID
within = c("condition_1", "condition_1") # 指定被试内因素(条件)
)
# 成对比较(事后检验)
emmeans_condition_1_by_condition_2 <- EMMEANS(result_manova, "condition_1", by="condition_2")
# 等同于
# emmeans_result <- emmeans(result_manova, pairwise ~ condition_1 | condition_2)
# 成对比较(事后检验)
emmeans_condition_2_by_condition_1 <- EMMEANS(result_manova, "condition_2", by="condition_1")
- 绘制交互作用(看个人需要)
with(testvalue, interaction.plot(condition_2, condition_2, value,type='b',
col=c('red','blue'),pch=1:2))
【参考文章】:
R语言做两因素重复测量方差分析------Epiphany心理
R语言和医学统计学(6):重复测量方差分析------医学和生信笔记