2016-02-18 2 views
0

Я использую функцию predict.hurdle из пакета pscl для оценки вероятностей наблюдения 0, 1, 2, ..., N событий в наборе данных.pscl :: prob.hurdle вероятности не суммируются до 1

Используя пример в ?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 означает, что это Wouldn» т.

Является ли мое беспокойство обоснованным? Есть ли еще один элемент из fm_hp1, который мне нужно изменить, чтобы изменить срок перехвата, но все же получить правильные прогнозы вероятности?

+0

«Калибровка» в моей отрасли - приемлемый способ сказать «изменить оценочные параметры». Ах, проклятие быть техническим ресурсом в деловой среде ... «Это звучит не так, это число должно быть ниже». – Adam

+0

Это постоянное препятствие (каламбур).После некоторых экспериментов, похоже, что ненулевые столбцы вероятности должны быть переназначены при изменении перехвата модели count. Кажется, что проблема не возникает при изменении перехвата нулевой модели. –

ответ

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 

Как уже воспитанной в комментариях выше, я сомневаюсь, что это изменение интерсепта действительно хорошая стратегия здесь, но это уже другая дискуссия ...

Смежные вопросы