0

我正在使用包中的predict.hurdle函数pscl来估计在数据集中观察 0、1、2、...、N 个事件的概率。

使用中的示例?predict.hurdle

data("bioChemists", package = "pscl")

fm_hp1 <- hurdle(art ~ ., data = bioChemists)
summary(fm_hp1)

head(predict(fm_hp1, newdata = bioChemists, type = "prob"))
# returns a matrix of probabilities too large to show here

该矩阵的每一行都是一个观察值,每一列是该计数的概率,在这种情况下为 0-19。

summary(rowSums(predict(fm_hp1, newdata = bioChemists, type = "prob")))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.9998  1.0000  1.0000  1.0000  1.0000  1.0000 

但是有些行的总和并没有达到应有的 1。但是好吧,他们很接近所以也许这不是问题......

但是,我需要校准截距项。在我的行业中,“校准”是一种可接受的说法,即“更改估计参数”。是的,我知道这在统计上不是一个好主意的原因有很多(故意偏向估计)。但是,我仍然希望代码能够正常工作,并且预测能够遵守概率规则。

# Change the count model intercept
fm_hp1$coefficients$count["(Intercept)"] <- 3

summary(rowSums(predict(fm_hp1, newdata = bioChemists, type = "prob")))
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
0.001521 0.434300 0.647400 0.602000 0.818400 0.983900 

现在我们看到了结果概率的一些主要问题。

我很想通过以下方式以 0-1 的比例简单地重新规范这些实用程序:

old.p <- predict(fm_hp1, newdata = bioChemists, type = "prob")
new.p <- t(apply(X = old.p, MARGIN = 1, FUN = function(x) x/sum(x)))
summary(rowSums(new.p))

但我担心概率总和为 1 的问题的原因意味着这不合适。

我的担心有根据吗?fm_hp1为了改变截距项但仍然得到正确的概率预测,我是否需要修改另一个元素?

4

1 回答 1

1

所有支持的计数分布hurdle()都支持 0、1、2、...(直到无穷大)。因此,为了准确地求和为 1,您必须将所有这些整数 0、1、2、... 的概率相加

由于无限多的值在实践中没有用,该predict()方法仅提供有限数量的整数的概率,默认情况下为 0、1、2、...、max(y),即达到观察到的最大响应。如果是bioChemists数据,则为 0、1、...、19。

因此,通过仅对这些概率求和,您将忽略所有更高计数的概率。通常,如您的第一个摘要所示,此概率权重很小。然而,如果你增加截距,你得到比原始数据集中更高的计数的可能性要大得多(期望值增加了大约 10 倍!)。因此,您需要总结更大的支持。您可以通过提供at参数来做到这一点:

summary(rowSums(predict(fm_hp1, type = "prob", at = 0:50)))
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.001789 1.000000 1.000000 0.994000 1.000000 1.000000 
summary(rowSums(predict(fm_hp1, type = "prob", at = 0:100)))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9889  1.0000  1.0000  1.0000  1.0000  1.0000 
summary(rowSums(predict(fm_hp1, type = "prob", at = 0:200)))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1       1       1       1       1       1 

正如上面评论中已经提到的那样,我怀疑拦截的这种变化在这里真的是一个好策略,但这是一个不同的辩论......

于 2016-02-22T21:31:26.327 回答