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

截断泊松与Hurdle模型泊松部分估计值差异原因问询

结果差异的核心原因

你遇到的probit部分估计值一致、泊松部分差异极大的问题,由三个明确问题共同导致,其中前两个是核心诱因:

  • 1. 手动两部分模型的第二阶段代码存在根本性错误

    你当前写的poisson_doc回归完全不符合“对至少有一次就诊的样本拟合就诊次数”的设定:

    因变量错误设置为I(doc > 0),这是和第一阶段probit完全一致的0-1二值变量(代表是否就诊),根本不是医生就诊次数的原始计数变量;同时没有筛选doc > 0的样本,直接用全样本估计,本质是用二值因变量跑泊松回归,拟合的是就诊概率而非就诊次数,结果和Hurdle模型的计数部分完全没有可比性。
    修正后的第二阶段普通泊松代码应为:

    poisson_doc <- glm(doc ~ phi + gender + age + health + educ + smoke + 
                         logthinc + wave + AUS + GER + SWE + NED + ESP + ITA + FRA +
                         DEN + GRE + SWI + BEL + ISR + CZE + POL + LUX + HUN + POR +
                         SVN + EST + CRO + LIT + BUL + CYP + FIN + LVA + MAL + ROM,
                       data = allwaves[allwaves$doc > 0, ],
                       family = poisson)
    
  • 2. 即便代码修正,普通泊松与Hurdle模型的计数部分分布设定存在本质差异

    你调用的hurdle()(来自pscl包)的计数部分采用的是左截断在0的泊松分布,直接拟合条件分布$P(Y=y|Y>0)$,似然函数是专门针对“排除0值的截断计数”构造的,参数对应的是截断后分布的特征。
    而你在筛选后的子样本上跑普通glm(..., family=poisson)时,模型默认假设数据服从从0开始的完整泊松分布,只是你人为删除了y=0的样本,没有告知模型数据存在左截断,估计出的参数对应完整泊松分布的特征,和截断泊松的估计值本身就存在系统性偏差,不可能完全相等。如果要手动复现Hurdle模型的计数部分结果,需要自定义左截断泊松的似然函数做估计,不能直接用普通泊松命令。
  • 3. Hurdle模型的计数部分变量存在遗漏

    对比模型公式可以发现:hd_doc的公式中|分隔符前(对应计数部分的自变量)在age之后直接接了educ,漏掉了你手动模型中包含的核心变量health,health仅出现在|之后的第一阶段probit部分。两个模型计数部分的解释变量集合不一致,也会直接带来估计结果的差异。

内容的提问来源于stack exchange,提问作者DaS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:21:27