障碍模型预测 - 计数与响应

时间:2018-02-14 19:16:16

标签: r pscl

我正在研究障碍模型并遇到一个我无法弄清楚的问题。据我所知,障碍的整体响应预测是计数预测乘以概率预测的乘法。即,总体响应必须小于或等于计数预测。但是,在我的数据中,响应预测高于计数预测,我无法弄清楚原因。

以下是玩具模型的类似结果(代码改编自here):

library("pscl") 
data("RecreationDemand", package = "AER") 

## model 
m <- hurdle(trips ~ quality | ski, data = RecreationDemand, dist = "negbin") 
nd <- data.frame(quality = 0:5, ski = "no")
predict(m, newdata = nd, type = "count")
predict(m, newdata = nd, type = "response")

为什么计数高于回复?

添加了对glm.nb的比较

另外 - 我的印象是,障碍模型的计数部分应该对只有正值的计数模型给出相同的预测。当我尝试时,我会得到完全不同的价值观。我错过了什么?

library(MASS)
m.nb <- glm.nb(trips ~ quality, data = RecreationDemand[RecreationDemand$trips > 0,]) 
predict(m, newdata = nd, type = "count") ## hurdle
predict(m.nb, newdata = nd, type = "response") ## positive counts only

1 个答案:

答案 0 :(得分:0)

最后一个问题是最容易回答的问题。 &#34;计数&#34;障碍模块的一部分不仅仅是标准计数模型(包括零的正概率),而是零截断计数模型(其中零不能出现)。

使用R-Forge中的countreg软件包,您可以在示例中使用您尝试适合glm.nb的模型。 (或者,VGAMgamlss也可用于拟合相同的模型。)

library("countreg")
m.truncnb <- zerotrunc(trips ~ quality, data = RecreationDemand,
  subset = trips > 0, dist = "negbin")
cbind(hurdle = coef(m, model = "count"), zerotrunc = coef(m.truncnb), negbin = coef(m.nb))
##                 hurdle  zerotrunc     negbin
## (Intercept) 0.08676189 0.08674119 1.75391028
## quality     0.02482553 0.02483015 0.01671314

最小的数值差异前两个模型完全相同。然而,非截断模型必须通过增加截距和抑制斜率参数来补偿零点的缺失,这在这里显然是不合适的。

至于预测,可以区分三个数量:

  1. 未截断计数部分的期望,即简称exp(x&#39; b)。
  2. 来自计数部分的条件/截断期望,即,计算零截断:exp(x&#39; b)/(1-f(0))其中f(0)是0的概率算上一部分。
  3. 完整障碍模型的总体预期,即跨越障碍的概率乘以2的条件期望:exp(x&#39; b)/(1 - f(0))*(1 - g (0))其中g(0)是模型零障碍部分0的概率。
  4. 有关详细信息和公式,另请参见vignette("countreg", package = "pscl")中的第2.2节和附录C. predict(..., type = "count")计算上面的第1项,其中predict(..., type = "response")hurdle模型计算第3项,为zerotrunc模型计算第2项。