2×2混合实验设计下lmer/glm/glmer模型公式编写及有效性验证咨询
2×2混合实验设计下lmer/glm/glmer模型公式编写及有效性验证咨询
嗨,针对你的2×2混合实验设计的模型构建问题,我来帮你梳理清楚细节,解决你的困惑:
先明确你的实验设计核心
你的实验是典型的混合设计:
strum:两水平的被试内变量(同一被试在两个水平下完成测试,观测值存在相关性)cond:两水平的被试间变量(被试被分到不同组别,组间观测独立)- 因变量:
pqinvolv
分析你尝试的两个公式
第一个报错的公式问题
你写的:
minv=lmer(pqinvolv~(strum*cond|pqinvolv)+(strum|id), data=dv_n)
这里有两个关键错误:
- 随机效应的分组变量不能用因变量
pqinvolv,随机效应的分组必须是聚类标识(比如这里的被试IDid才是合理的分组项) (strum|id)试图让strum的斜率随被试变化,但strum只有两个水平,这种随机斜率模型不仅没必要,还容易导致模型收敛失败或过度拟合
第二个可运行的公式是正确的!
你写的:
minv=lmer(pqinvolv~strum*cond+(1|id), data=dv_n)
这个公式完全匹配你的混合设计:
- 固定效应部分
strum*cond等价于strum + cond + strum:cond,完整覆盖了两个主效应和交互效应,正是你需要的分析维度 - 随机效应部分
(1|id)表示纳入被试的随机截距,用来控制同一被试多次观测的相关性,这是处理被试内重复测量的标准操作
你不用担心它是“全被试内模型”——它明确区分了被试间变量cond(固定效应里的组间差异)和被试内变量strum,同时通过随机截距处理了被试内的重复测量相关性,是标准的混合效应模型。
拓展:glm/glmer的写法
如果你的因变量不符合正态分布,需要换成广义线性混合模型(glmer)或广义线性模型(glm):
- 二分类因变量(比如是/否的选择):
minv_glmer <- glmer(pqinvolv ~ strum*cond + (1|id), data=dv_n, family=binomial)
- 计数数据(比如事件发生次数):
minv_glmer_pois <- glmer(pqinvolv ~ strum*cond + (1|id), data=dv_n, family=poisson)
- 纯
glm(不推荐,因为忽略了被试内观测的相关性,会导致统计检验偏倚):
minv_glm <- glm(pqinvolv ~ strum*cond, data=dv_n, family=gaussian) # 连续因变量
模型拟合后的Anova分析
拟合好模型后,推荐用car包的Anova()做类型III方差分析(适合有交互效应的设计):
library(car) Anova(minv, type="III")
如果需要直接得到p值,也可以用lmerTest包的anova():
library(lmerTest) anova(minv)
备注:内容来源于stack exchange,提问作者NicNLM
相关产品推荐
相关产品推荐

