详细信息请参见 Zeileis (2008) 的论文,网址为https://www.jstatsoft.org/article/view/v027i08/v27i08.pdf https://www.jstatsoft.org/article/view/v027i08/v27i08.pdf
收集所有关于什么的解释需要一点工作(几年了,你的问题仍然没有答案)predict
函数对每个模型的作用pscl
库,它被隐藏在(第 19,23 页)似然函数的数学表达式中(方程 7、8)。我将你的问题解释为你想要/需要知道如何使用不同的type
预测的s:
- 预期计数是多少? (
type="response"
)
- 超过零的(条件)预期概率是多少? (
type="zero"
)
- 任何计数的(边际)预期概率是多少? (
type="prob"
)
- 最后有多少预测零是多余的(例如采样)而不是基于回归(即结构)?
读取 pscl 包附带的数据:
data("bioChemists", package = "pscl")
然后拟合零膨胀负二项式模型:
fm_zinb2 <- zeroinfl(art ~ . | ., data = bioChemists, dist = "negbin")
如果你想预测期望值,然后你使用
predict(fm_zinb2, type="response")[29:31]
29 30 31
0.5213736 1.7774268 0.5136430
因此,在这个模型下,对于 29 岁和 31 岁的生物化学家来说,博士最后 3 年发表的文章的预期数量是一半,对于 30 岁的生物化学家来说是近 2 篇。
但我相信你在追求可能性多余的零(在零点质量中)。此命令执行此操作并打印第 29 至 31 行中项目的值(是的,我去钓鱼了!):
predict(fm_zinb2, type="zero")[29:31]
它产生以下输出:
29 30 31
0.58120120 0.01182628 0.58761308
因此,第 29 项是多余零(您将其称为采样零,即非结构零,因此不能由协变量解释)的概率为 58%,第 30 项为 1.1%,第 31 项为 1.1%。是59%。因此,预计两位生物化学家的出版物为零,这超出了可以通过各种协变量的负二项式回归来解释的数量。
您已将整个数据集中的这些预测概率制成表格
table(round(predict(fm_zinb2, type="zero")))
0 1
891 24
因此,您的输出告诉您,只有 24 名生物化学家可能是超零,即预测的超零概率超过二分之一(由于四舍五入)。
如果您按照百分比刻度将 10 个点制成表格,可能会更容易解释
table(cut(predict(fm_zinb2, type="zero"), breaks=seq(from=0,to=1,by=0.1)))
to give
(0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6]
751 73 34 23 10 22
(0.6,0.7] (0.7,0.8] (0.8,0.9] (0.9,1]
2 0 0 0
因此,您可以看到 751 名生物化学家不太可能成为超零,但 22 名生物化学家有 50-60% 的机会成为超零,只有 2 人的机会更高 (60-70%)。没有人极有可能是多余的零。
从图形上讲,这可以以直方图的形式显示
hist(predict(fm_zinb2, type="zero"), col="slateblue", breaks=seq(0,0.7,by=.02))
您列出了每个生物化学家的实际计数(无需四舍五入,因为这些是计数):
table(bioChemists$art)
0 1 2 3 4 5 6 7 8 9 10 11 12 16 19
275 246 178 84 67 27 17 12 1 2 1 1 2 1 1
发表19篇论文的特殊生物化学家是谁?
most_pubs <- max(bioChemists$art)
most_pubs
extreme_biochemist <- bioChemists$art==most_pubs
which(extreme_biochemist)
您可以获得估计的每个生物化学家有任意数字的概率酒吧数量,正好是 0 家,最多有 19 家!
preds <- predict(fm_zinb2, type="prob")
preds[extreme_biochemist,]
你可以看看我们一位特殊的生物化学家的这个,他有 19 篇出版物(这里使用基本 R 绘图,但 ggplot 更漂亮)
expected <- predict(fm_zinb2, type="response")[extreme_biochemist]
# barplot returns the midpoints for counts 0 up to 19
midpoints<-barplot(preds[extreme_biochemist,],
xlab="Predicted #pubs", ylab="Relative chance among biochemists")
# add 1 because the first count is 0
abline(v=midpoints[19+1],col="red",lwd=3)
abline(v=midpoints[round(expected)+1],col="yellow",lwd=3)
这表明,尽管我们预计生物化学家 915 有 4.73 篇出版物,但在此模型下,更有可能出现 2-3 个 pub,远低于实际的 19 个 pub(红线)。
回到问题上来,对于生物化学家 29,
超过零的概率是
pzero <- predict(fm_zinb2, type="zero")
pzero[29]
29
0.5812012
总体(边际)为零的概率是
preds[29,1]
[1] 0.7320871
因此,过量零的预测概率与结构性零的预测概率(即通过回归解释)的比例为:
pzero[29]/preds[29,1]
29
0.7938962
或者超出零的额外概率为:
preds[29,1] - pzero[29]
29
0.1508859
生物化学家 29 的实际出版物数量是
bioChemists$art[29]
[1] 0
因此,生物化学家预计发表量为零的原因几乎不能用回归(20%)来解释,而且大多数情况下都不能解释(即过量,80%)。
总的来说,我们发现对于大多数生物化学家来说,情况并非如此。我们的生物化学家 29 是不寻常的,因为他们零酒吧的机会大多是多余的,即回归无法解释。我们可以通过以下方式看到这一点:
hist(pzero/preds[,1], col="blue", xlab="Proportion of predicted probability of zero that is excess")
这给你: