如何用R的lmer函数构建等价于重复测量ANOVA的线性回归
重复测量ANOVA的lmer实现步骤
1. 数据格式转换
你的原始数据是宽格式(每个被试一行,10次测量分属V1-V10列),而线性混合模型需要长格式(每个测量值一行),操作如下:
# 加载必需的包 library(tidyverse) library(lme4) library(lmerTest) # 用于输出p值,和JASP结果对齐 # 假设数据集名为data_df,先给每个被试添加唯一ID data_df$subject <- factor(1:nrow(data_df)) # 转换为长格式 data_long <- data_df %>% pivot_longer( cols = V1:V10, names_to = "trial", # 组内重复测量因子(对应V1到V10) values_to = "score" # 测量的数值结果 ) # 将trial转为因子类型,确保模型识别为分类变量 data_long$trial <- factor(data_long$trial)
2. 构建等价于重复测量ANOVA的混合模型
重复测量ANOVA需要检验三个核心效应:组间主效应(experiment)、组内主效应(trial)、组间×组内交互效应。对应的混合模型代码如下:
# 完整模型:包含固定效应的主效应+交互,以及被试的随机截距和trial的随机斜率 # 该结构考虑了被试内测量的相关性,和标准重复测量ANOVA的假设一致 model <- lmer( score ~ experiment * trial + (1 + trial | subject), data = data_long ) # 若需匹配JASP中更简单的随机结构(仅考虑被试随机截距),可使用: # model <- lmer(score ~ experiment * trial + (1 | subject), data = data_long)
3. 获取ANOVA结果(与JASP对比)
执行以下代码输出和JASP格式一致的显著性结果:
# 输出ANOVA表,包含F值、自由度、p值 anova(model)
结果解释
experiment行对应组间主效应的检验结果trial行对应组内主效应的检验结果experiment:trial行对应交互效应的检验结果
内容的提问来源于stack exchange,提问作者Lior Bruder
相关产品推荐
相关产品推荐

