glmmTMB与pscl包zeroinfl结果差异:二元部分系数不同原因咨询
零膨胀负二项模型:glmmTMB与pscl包zeroinfl函数的零膨胀部分系数差异原因分析
我用glmmTMB和pscl包中的zeroinfl函数对同一数据集做零膨胀负二项模型分析,发现条件部分(计数模型)的系数完全一致,但零膨胀部分(二元模型)的系数存在明显差异,请问可能导致这种差异的潜在因素有哪些?
pscl包zeroinfl函数分析结果
# > summary(pscl.res) # # Call: # zeroinfl(formula = outside_treatment ~ group + baseline.risk + Age.group + # offset(log(Follow.up)) | group, data = final, dist = "negbin", # link = "logit", trace = TRUE) # # Pearson residuals: # Min 1Q Median 3Q Max # -1.0332 -0.7003 -0.4041 0.1675 12.5728 # Count model coefficients (negbin with log link): # Estimate Std. Error z value Pr(>|z|) # (Intercept) -2.39168 0.13282 -18.007 < 2e-16 *** # group1 -0.22475 0.09833 -2.286 0.0223 * # baseline.risk2 -0.20385 0.12947 -1.575 0.1154 # baseline.risk3 -0.67367 0.12422 -5.423 5.85e-08 *** # Age.group1 -0.65774 0.11554 -5.693 1.25e-08 *** # Log(theta) 0.12366 0.07302 1.693 0.0904 . # Zero-inflation model coefficients (binomial with logit link): # Estimate Std. Error z value Pr(>|z|) # (Intercept) -16.564 389.991 -0.042 0.966 # group1 -2.743 1909.909 -0.001 0.999 # --- # Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # # Theta = 1.1316 # Number of iterations in BFGS optimization: 35 # Log-likelihood: -1531 on 8 Df
glmmTMB包分析结果
# > summary(true.zinb) # Family: nbinom2 ( log ) # Formula: # outside_treatment ~ group + baseline.risk + Age.group + offset(log(Follow.up)) # Zero inflation: ~1 + group # Data: final # # AIC BIC logLik deviance df.resid # 3078.1 3110.5 -1531.1 3062.1 414 # # # Dispersion parameter for nbinom2 family (): 1.13 # # Conditional model: # Estimate Std. Error z value Pr(>|z|) # (Intercept) -2.39168 0.13282 -18.007 < 2e-16 *** # group1 -0.22475 0.09833 -2.286 0.0223 * # baseline.risk2 -0.20385 0.12947 -1.575 0.1154 # baseline.risk3 -0.67367 0.12422 -5.423 5.85e-08 *** # Age.group1 -0.65774 0.11554 -5.693 1.25e-08 *** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Zero-inflation model: # Estimate Std. Error z value Pr(>|z|) # (Intercept) -20.8282 3289.0961 -0.006 0.995 # group1 0.4139 4626.1083 0.000 1.000
潜在差异因素分析
- 优化算法与收敛逻辑不同:pscl的
zeroinfl默认使用BFGS优化算法(结果显示迭代35次),而glmmTMB依赖NLopt库中的优化器。不同算法的收敛判定阈值、步长调整策略有区别,当似然函数在零膨胀参数区域非常平坦(从极大的标准误可看出),算法可能收敛到不同的局部最优解。 - 零膨胀模型的参数化定义差异:两个包对零膨胀概率的参数化可能存在反向定义——比如pscl建模“产生额外零值的概率”,而glmmTMB建模“不产生额外零值的概率”,直接导致系数符号反转。这种参数化的细微差别是跨包模型结果差异的常见原因。
- 初始值设定的影响:优化算法的初始值选择会影响收敛路径,pscl和glmmTMB的默认初始值不同。在似然函数平坦、参数估计不稳定的场景下,初始值的微小差异会被放大,最终得到不同的参数估计值。
- 数值稳定性处理差异:从结果看,零膨胀部分的标准误极大,说明数据中零膨胀的信号极弱,自变量对零膨胀的解释力极低。此时不同包的数值处理策略(如正则化、数值精度控制)不同,会导致参数估计出现差异。
- theta参数的协同估计差异:pscl中theta(负二项分布的离散参数)与零膨胀参数是协同估计的,而glmmTMB的nbinom2族中theta的估计流程可能存在细微差别。虽然条件部分系数一致,但theta估计的微小差异可能间接影响零膨胀部分的优化过程。
内容的提问来源于stack exchange,提问作者KLee
相关产品推荐
相关产品推荐

