You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:48:28