Формула или матрица, лежащие в основе прогнозов количества с использованием predprob в PSCL
pscl
пакет в R
используется, среди прочих моделей, для моделей Пуассона с нулевым давлением.
У меня есть данные о еженедельном потреблении пищи, которые равны нулю. У меня не было проблем с подгонкой модели Пуассона с нулевым раздувом (ZIP), которая успешно предсказывает процент нулевых отсчетов в моих данных. Данные содержат около 30% нулевых отсчетов, с чуть более 4600 наблюдений.
Модель ZIP была:
zeroinfl(LightC.home~SEX+AGEDET+Inhabitants, data=FoodAnalysis)
куда LightC
еженедельный счетчик потребления (в диапазоне от 0 до 74), SEX
является респондентский пол (фактор с 2 уровнями), AGEDET
возраст респондента (фактор с 12 уровнями, например, "5-9 лет"), и Inhabitants
количество людей в домохозяйстве (целое число, диапазон от 1 до 8).
Краткое описание модели ZIP:
Call:
zeroinfl(formula = LightC.home ~ SEX + AGEDET + Inhabitants, data = FoodAnalysis)
Pearson residuals:
Min 1Q Median 3Q Max
-3.3479 -1.2781 -0.5170 0.6342 12.2912
Count model coefficients (poisson with log link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.133213 0.029229 72.983 < 2e-16 ***
SEXFemale -0.079156 0.010284 -7.697 1.39e-14 ***
AGEDET5-9 years -0.038153 0.032745 -1.165 0.243963
AGEDET10-14 years 0.014199 0.032411 0.438 0.661317
AGEDET15-17 years 0.253942 0.035419 7.170 7.52e-13 ***
AGEDET18-24 years 0.148395 0.029089 5.101 3.37e-07 ***
AGEDET25-34 years 0.158506 0.026291 6.029 1.65e-09 ***
AGEDET35-44 years 0.157821 0.026043 6.060 1.36e-09 ***
AGEDET45-54 years 0.307299 0.026153 11.750 < 2e-16 ***
AGEDET55-64 years 0.340590 0.026913 12.655 < 2e-16 ***
AGEDET65-74 years 0.361976 0.027260 13.278 < 2e-16 ***
AGEDET75-84 years 0.251614 0.039866 6.311 2.76e-10 ***
AGEDET85 years or more 0.606829 0.083345 7.281 3.32e-13 ***
Inhabitants 0.014697 0.004302 3.416 0.000635 ***
Zero-inflation model coefficients (binomial with logit link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.82861 0.17389 -4.765 1.89e-06 ***
SEXFemale -0.08333 0.07196 -1.158 0.246893
AGEDET5-9 years -0.27280 0.18082 -1.509 0.131390
AGEDET10-14 years -0.32820 0.18390 -1.785 0.074308 .
AGEDET15-17 years -0.06472 0.20589 -0.314 0.753276
AGEDET18-24 years -0.06973 0.16047 -0.435 0.663896
AGEDET25-34 years -0.27054 0.14791 -1.829 0.067385 .
AGEDET35-44 years -0.71412 0.15648 -4.564 5.03e-06 ***
AGEDET45-54 years -0.50510 0.15585 -3.241 0.001191 **
AGEDET55-64 years -0.65281 0.16541 -3.947 7.92e-05 ***
AGEDET65-74 years -1.09276 0.18313 -5.967 2.41e-09 ***
AGEDET75-84 years -1.28092 0.34508 -3.712 0.000206 ***
AGEDET85 years or more -12.75039 279.21031 -0.046 0.963577
Inhabitants 0.01733 0.02872 0.603 0.546296
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Number of iterations in BFGS optimization: 35
Log-likelihood: -2.136e+04 on 28 Df
Я использовал predprob
команда в pscl
пакет для построения вектора вероятностей потребления продуктов питания. Это построило матрицу, по одной строке на наблюдение, причем каждому наблюдению давалась вероятность потребления для каждого счета от 0 (минимум) до 74 (максимум). В этой матрице 165 уникальных строк, что обусловлено 165 уникальными комбинациями предикторов в модели Пуассона с нулевым раздуванием.
Как я могу построить формулу, лежащую в основе этих 75 вероятностей для каждой комбинации предикторов (например, женщины, в возрасте 25-34 лет, 4 жителей)? Я не понимаю взаимосвязи между 75 вероятностями с математической точки зрения.
Например, комбинация предикторов SEX=="Female"
, AGEDET=="25-34 years"
а также Inhabitants == 4
, дает эти вероятности для каждого человека с этой комбинацией предиктора в данных (показаны только первые 6 из 75):
X0 X1 X2 X3 X4 X5
0.2473285 0.0004504804 0.002183136 0.007053337 0.01709108 0.03313101
Как оценивались эти вероятности, учитывая, что оригинал zeroinfl
Формула выглядит так, будто она просто оценивает среднее значение потребления для комбинации предикторов, а не для всех 75 вероятностей?
1 ответ
Раздуваемая нулями модель Пуассона представляет собой смесь точечной массы в нуле и распределения Пуассона. Смотрите Раздел 2.3 vignette("countreg", package = "pscl")
для точных формул.
В вашей модели есть два линейных предиктора: один для среднего компонента Пуассона (с лог-ссылкой) и один для вероятности нулевой инфляции (с логит-ссылкой). Используя конкретный вектор регрессора, указанный в вашем вопросе, мы можем вычислить оба линейных предиктора, а затем применить соответствующие функции обратной связи, чтобы получить среднее значение. mu
и вероятность нулевой инфляции pr
:
mu <- exp(2.133213 -0.079156 + 0.158506 + 0.014697 * 4)
mu
## [1] 9.692487
pr <- plogis(-0.82861 -0.08333 -0.27054 + 0.01733 * 4)
pr
## [1] 0.2472822
И тогда мы можем ввести их в плотность смеси (см. Уравнение 7 в виньетке:
y <- 0:5
pr * I(y == 0) + (1-pr) * dpois(y, mu)
## [1] 0.2473287134 0.0004504784 0.0021831278 0.0070533124 0.0170910338
## [6] 0.0331309230