如何使用lme4或glmmTMB拟合quasi-poisson准泊松混合效应模型
R拟合混合效应准泊松模型复现Stata
ppml结果的解决方案 方案1:使用glmmTMB包直接拟合
glmmTMB包原生支持准泊松(quasipoisson)族的混合效应模型,语法和lme4高度兼容,是最简单的实现方案,示例代码如下:
# 加载包 library(glmmTMB) # 拟合混合效应准泊松模型,公式写法与lme4完全一致 qp_mixed_model <- glmmTMB( 因变量 ~ 自变量1 + 自变量2 + (1 | 分组变量), family = quasipoisson(link = "log"), data = 你的数据集 ) # 查看结果 summary(qp_mixed_model)
拟合得到的点估计、标准误均和准泊松模型的理论结果一致,可直接和Stata ppml的混合效应版本结果对齐。
方案2:基于lme4泊松模型手动校准标准误
准泊松模型与普通泊松混合模型的固定效应点估计完全相同,仅标准误会根据过度离散系数做缩放,你可以通过以下步骤手动调整得到等价结果:
- 第一步:用
lme4拟合普通泊松混合效应模型
library(lme4) poi_mixed_model <- glmer( 因变量 ~ 自变量1 + 自变量2 + (1 | 分组变量), family = poisson(link = "log"), data = 你的数据集 )
- 第二步:计算过度离散系数
# 用皮尔逊残差计算离散系数 dispersion <- sum(residuals(poi_mixed_model, type = "pearson")^2) / df.residual(poi_mixed_model)
- 第三步:校准标准误
将泊松模型输出的标准误乘以sqrt(dispersion),对应的p值同步调整后,结果和直接拟合准泊松模型完全一致。
对齐Stata ppml结果的注意事项
- Stata的
ppml命令默认会自动剔除完全被预测的零值观测,拟合前需要对R端的数据集做相同的预处理,避免样本差异导致结果不一致 - 如果用到了簇稳健标准误,需要在拟合时指定对应的协方差矩阵估计方法,保证参数统计量的一致性
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

