如何合理计算线性混合模型(LMM)中组间差异的效应量d?
问题场景
我对数据进行了线性混合模型(LMM)分析,模型结构如下:
DV ~ Condition * Question + (1 + Condition + Question | Participant)
数据来自被试内设计:被试针对同一刺激在3种Condition、2种Question条件下完成评分。Condition(3水平)和Question(2水平)均采用虚拟编码,结果显示Condition的固定效应显著,Question及二者交互效应不显著。
我使用emmeans()函数进行Condition组间对比,发现Condition1与Condition2、Condition3均存在差异。随后尝试计算效应量d时,得到三个差异较大的结果:
- 手动采用drm公式(
d = (Mean2 - Mean1) / SW,其中SW = Sdiff / sqrt(2(1-r)))得到d=0.946 - 用t值公式
d = t/sqrt(N)得到d=0.692 - 使用
emmeans包的eff_size()函数得到d=1.59
请问在此场景下,计算效应量d的正确方式是什么?
核心原因:不同计算方式的前提与定义差异
三种结果的差异本质是对被试内设计中「标准差分母」的选择不同,以及是否适配混合模型的结构:
1. 手动drm公式结果(d=0.946):经典被试内效应量Cohen's d_z
这个公式是配对样本(被试内)效应量的标准计算方式:
Sdiff是同一被试在两组条件下得分差值的标准差r是两组条件下得分的相关系数- 最终得到的Cohen's d_z,反映的是两组均值差相对于个体内部差异的幅度,是被试内设计中最常用、最贴合研究逻辑的效应量指标。
2. t值公式结果(d=0.692):误用被试间设计的计算方式
d = t/sqrt(N)是被试间设计中Cohen's d的近似公式,完全忽略了被试内设计中同一被试重复测量的相关性,直接用总样本量计算,会严重低估效应量,绝对不适用于被试内设计。
3. emmeans::eff_size()结果(d=1.59):基于模型残差的标准化效应
eff_size()默认使用混合模型的残差标准差作为分母,这个残差是控制了被试随机效应后的误差项,通常远小于配对差值的标准差,因此得到的d值会更大。这个结果并非错误,但它反映的是均值差相对于「排除个体差异后的误差」的效应量,和经典的d_z不是同一概念,报告时必须明确说明分母的定义。
正确计算方式的选择
- 若想反映同一被试在不同条件下的变化幅度,优先选择手动计算的Cohen's d_z(0.946),这是被试内设计中最具解释力的效应量。
- 若要基于混合模型结果报告效应量,可以使用
eff_size()的结果,但必须在报告中明确标注:该效应量是基于模型残差标准差的标准化均值差,避免与经典d_z混淆。 - 严禁使用被试间设计的t值近似公式计算被试内设计的效应量。
额外提示:如果想通过emmeans直接计算经典d_z,可以先提取各组的边际均值,再结合原始数据计算配对差值的标准差和相关系数,或者借助lmerTest等工具获取配对样本的统计量辅助计算。
内容的提问来源于stack exchange,提问作者user408318

