使用R的powerSim函数计算LMM固定效应功效时出错的排查
我构建了一个包含2个分类固定因子(ffactor1、ffactor2)、1个随机因子(id)以及无关协变量(baseline)的线性混合模型(LMM),尝试使用R的powerSim函数估计功效,重点关注ffactor2且希望采用自助法(bootstrapping)。
运行代码:
mymodel <- lmer(Y ~ baseline + ffactor1*ffactor2 + (1|id), data=data) p <- powerSim(mymodel, nsim=50, test = fixed(xname="ffactor2",method = "pb")) p
得到结果:
Power for predictor 'ffactor2', (95% confidence interval): 0.00% ( 0.00, 7.11) Test: Parametric bootstrap (package pbkrtest) Based on 50 simulations, (0 warnings, 50 errors) alpha = 0.05, nrow = NA Time elapsed: 0 h 0 m 0 s
注:结果可能为观测功效计算值
请问我哪里操作有误?
从结果里的50 errors可以看出,模拟过程完全失败,以下是核心问题和解决方向:
模型设定与检验对象不匹配
你的模型包含ffactor1*ffactor2交互项,此时ffactor2的主效应是ffactor1处于参考水平下的效应,但pbkrtest的fixed()检验默认是检验该因子的整体联合效应。如果ffactor2是多分类,或交互项存在时主效应的检验逻辑不明确,会导致bootstrap过程报错。可以尝试显式指定联合检验:test = fixed(xname="ffactor2", method="pb", type="joint");如果关注特定水平对比,需用contrasts参数定义具体对比项。powerSim使用前提不满足simr包的powerSim需要基于拟合正常的有效应模型模拟数据:- 先检查
summary(mymodel)的输出,确认随机效应方差不为0(若为0,模型会退化为固定效应模型,不适合用混合模型的功效分析); nrow = NA说明函数无法识别原始数据样本量,大概率是data存在缺失值,或模型拟合本身有问题(比如完全分离、共线性),需先清理数据并重新拟合模型。
- 先检查
bootstrap检验参数设置问题
pb方法依赖pbkrtest包,需确保包版本兼容,且bootstrap迭代次数足够。可以在fixed()中增加B=1000参数指定bootstrap次数,同时更新lme4、pbkrtest、simr到最新版本。模拟次数与样本量不足
nsim=50的模拟次数太少,不仅功效估计精度极差,还容易出现全失败情况,建议至少设置nsim=200;若原始数据样本量过小,bootstrap检验稳定性会大幅下降,也会导致模拟报错。
内容的提问来源于stack exchange,提问作者MarieZ

