Предсказание / вменение недостающих значений регрессии Пуассона GLM в R?

Я пытаюсь изучить способы вменения недостающих значений в набор данных. Мой набор данных содержит количество случаев (Неестественное, Естественное и Сумма Всего) для Года (2001-2009), Месяца (1-12), Пола (М / Ж) и Возрастной группы (4 группы).

Один из методов вменения, который я изучаю, - это вменение регрессии Пуассона.

Скажем, мои данные выглядят так:

    Year Month Gender AgeGroup Unnatural Natural Total
569 2006     5   Male     15up       278     820  1098
570 2006     6   Male     15up       273     851  1124
571 2006     7   Male     15up       304     933  1237
572 2006     8   Male     15up       296    1064  1360
573 2006     9   Male     15up       298     899  1197
574 2006    10   Male     15up       271     819  1090
575 2006    11   Male     15up       251     764  1015
576 2006    12   Male     15up       345     792  1137
577 2007     1 Female        0        NA      NA    NA
578 2007     2 Female        0        NA      NA    NA
579 2007     3 Female        0        NA      NA    NA
580 2007     4 Female        0        NA      NA    NA
581 2007     5 Female        0        NA      NA    NA
...

После выполнения базовой регрессии GLM - 96 наблюдений были удалены из-за их отсутствия.

Возможно, существует способ / пакет / функция в R, который будет использовать коэффициенты этой модели GLM для «прогнозирования» (т.е. вменения) недостающих значений для Total (даже если он просто хранит их в отдельном фрейме данных - я буду использовать Excel объединить их)? Я знаю, что могу использовать коэффициенты для прогнозирования различных иерархических строк, но это займет вечность. Надеюсь, есть одношаговая функция / метод?

Call:
glm(formula = Total ~ Year + Month + Gender + AgeGroup, family = poisson)

Deviance Residuals: 
      Min         1Q     Median         3Q        Max  
-13.85467   -1.13541   -0.04279    1.07133   10.33728  

Coefficients:
                Estimate Std. Error z value Pr(>|z|)    
(Intercept)   13.3433865  1.7541626   7.607 2.81e-14 ***
Year          -0.0047630  0.0008750  -5.443 5.23e-08 ***
Month          0.0134598  0.0006671  20.178  < 2e-16 ***
GenderMale     0.2265806  0.0046320  48.916  < 2e-16 ***
AgeGroup01-4  -1.4608048  0.0224708 -65.009  < 2e-16 ***
AgeGroup05-14 -1.7247276  0.0250743 -68.785  < 2e-16 ***
AgeGroup15up   2.8062812  0.0100424 279.444  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 403283.7  on 767  degrees of freedom
Residual deviance:   4588.5  on 761  degrees of freedom
  (96 observations deleted due to missingness)
AIC: 8986.8

Number of Fisher Scoring iterations: 4

person OSlOlSO    schedule 01.08.2011    source источник


Ответы (2)


Во-первых, будьте очень осторожны с предположением о случайном пропадании. Ваш пример выглядит так, как будто отсутствие недостатка происходит одновременно с женщиной и возрастной группой. Вам действительно следует проверить, связано ли отсутствие каких-либо предикторов (или отсутствуют ли какие-либо предикторы). Если это так, ответы могут быть искажены.

Во-вторых, функция, которую вы ищете, скорее всего, будет predict, которая может принимать модель glm. См. ?predict.glm для получения дополнительных указаний. Вы можете настроить каскад моделей (то есть вложенных моделей) для устранения пропущенных значений.

person Iterator    schedule 01.08.2011
comment
Спасибо за быстрый ответ! Я посмотрю на? Predic.glm! По поводу отсутствия - в основном отсутствует весь 2007 год и несколько месяцев 2008 года (как для мужчин, так и для женщин и всех возрастных групп). Я пытался понять механизм отсутствия информации, но все еще немного нечетко. Я посмотрю, как выглядят предсказанные значения, а затем исследую их дальше. Наверное, мне нужно будет прочитать о каскаде моделей (вложенных моделях). Спасибо - person OSlOlSO; 01.08.2011
comment
NB: Каскад - это просто последовательность моделей в случае отсутствия наблюдения. Математически модель GLM отсутствует, если предиктор отсутствует, поэтому вам нужны альтернативные модели для этого сценария. Как вы их выберете, зависит от вас. Для функции моделирования должно быть безопасно сказать, что я не знаю - точно так же, как это делают мудрые люди. :) - person Iterator; 01.08.2011
comment
Для случайного отсутствия тестирования существует несколько методов, но хороший способ сделать это визуально - просто использовать два класса и посмотреть на графики других переменных в зависимости от того, отсутствует ли переменная (или ответ). Пакет iplot может быть очень полезным для этого. - person Iterator; 01.08.2011
comment
После вложения моделей: это вложение должно выполняться вами, думали, что это можно сделать программно. Гораздо лучше один раз научиться это делать, чем игнорировать отсутствующие значения. Иногда можно многое узнать о влиянии на ответ (и, следовательно, о том, как моделировать), когда исследуешь, почему данные отсутствуют. AFAIK, glm не поддерживает каскады, хотя вы можете сделать прямой выбор для переменных, который аналогичен. В любом случае исходный вопрос касался predict, а не всех последующих анализов данных. :) - person Iterator; 01.08.2011
comment
@Iterator Sjo - спасибо за информацию. Я обязательно прочитаю о том, что вы здесь сказали. Но мои статистические знания не настолько хороши, чтобы я понимаю все, что вы только что сказали. - person OSlOlSO; 01.08.2011

Пакет mice предоставляет функцию с тем же именем, которая позволяет предсказывать каждое пропущенное значение с помощью схемы регрессии на основе других значений. Он может справиться с отсутствием предикторов, потому что он использует итеративный алгоритм MCMC.

Я не думаю, что регрессия Пуассона - это вариант, но если все ваши подсчеты такие же большие, как в примере, нормальная регрессия должна предложить разумное приближение.

person MatW    schedule 14.06.2012