重复测量线性混合效应模型的功效分析与效应量计算问题
重复测量线性混合模型效应量与功效分析问题解答
问题1:有没有适合做这类分析的R包?
除你目前使用的effectsize包外,还有3个适配该场景的常用包:
lmerTest:可直接输出带Satterthwaite自由度校正的III型方差分析结果,适配重复测量混合模型的检验需求emmeans:支持事后多重比较的效应量计算,可输出单组比较、组间差值对应的效应量simr:专门用于混合模型的功效模拟,可直接基于预实验拟合的模型开展先验功效分析
问题2:转换为ANOVA后丢失原lmer输出的显著性结果是否正常?
该情况完全正常。
lmer默认输出的t检验是单个参数级别的检验,比如groupEF对应的是EF组和参考组的差值检验,timeT3对应的是参考组、参考条件下前后测的差值检验;而III型ANOVA输出的是整个因子级别的整体检验,比如group因子自由度为2,是同时检验3个组的整体差异,二者的原假设完全不同,显著性结果不一致属于正常情况,不存在计算错误。
问题3:是否需要逐行计算eta²,有没有批量计算方法?
不需要逐行手动计算,effectsize包支持直接对ANOVA结果批量计算效应量:
你只需将anova()输出的方差分析结果传入eta_square()函数即可,示例代码如下:
# 先拟合带lmerTest校正的模型 library(lmerTest) fit <- lmer(value ~ time * group * condition + (1 | id), data = data) anova_res <- anova(fit, type = 3) # 批量计算所有因子的eta² library(effectsize) eta_result <- eta_square(anova_res, ci = 0.95)
输出结果会自动包含所有主效应、交互项对应的eta²、偏eta²及95%置信区间,无需手动代入F值和自由度。如果你需要计算单个参数对应的Cohen's d,也可以用t_to_d()函数批量处理lmer输出的t值和对应自由度。
问题4:将线性混合模型转换为ANOVA再计算效应量是否具有统计意义?
该操作属于混合模型效应量计算的标准方法,具备统计意义。
适配全因子交互设计的III型平方和ANOVA,计算得到的偏eta²可以解释为对应因子/交互项单独解释的方差比例,适合汇报因子的整体效应大小。如果你需要的是单个比较的效应量(比如某两组干预前后的差异大小),也可以用emmeans计算组间差值的Cohen's d,两种方法适配不同的汇报需求,不存在对错问题。
问题5:基于eta²如何开展先验功效分析估算正式研究样本量?
有两种常用的可行方案:
- 传统参数法:将得到的偏eta²转换为Cohen's f效应量,转换公式为
f = sqrt(偏eta²/(1-偏eta²)),之后用pwr包的pwr.f2.test()函数,设置分子自由度、分母自由度和你预设的功效(通常为0.8或0.9)、一类错误水平(通常为0.05),即可反推所需的样本量。 - 模拟法(更推荐):使用
simr包基于你预实验拟合的lmer模型做功效模拟,只需修改模型中的被试量参数(比如将当前的id数量从24改为30、40等不同梯度),模拟不同样本量下你关心的核心效应(比如时间×组交互、时间×条件交互)的检出率,直到功效达到预设阈值即可。该方法考虑了混合模型的随机效应结构,结果准确度比参数法更高。
内容的提问来源于stack exchange,提问作者helloiambrain
相关产品推荐
相关产品推荐

