Приспособление Пуассона GLM в R - проблемы с показателями по сравнению с количеством

11

В настоящее время я работаю над проектом, включающим в себя GLM (и, в конечном итоге, GAM), некоторые данные подсчета времени. Обычно я делаю это в SAS, но я пытаюсь перейти на R, и у меня возникают ... проблемы.

Когда я подхожу к GLM для подсчета данных, используя следующее:

cdi_model <- glm(counts ~ exposure + covariate + month, data=test, family = poisson)

Я получил:

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9825  -0.7903  -0.1187   0.5717   1.7649  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  1.97563    0.20117   9.821  < 2e-16 ***
exposure     0.94528    0.30808   3.068  0.00215 ** 
covariate   -0.01317    0.28044  -0.047  0.96254    
months      -0.03203    0.01303  -2.458  0.01398 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 40.219  on 29  degrees of freedom
Residual deviance: 29.297  on 26  degrees of freedom
AIC: 137.7

Number of Fisher Scoring iterations: 5

На мгновение проигнорируйте производительность или отсутствие ее самой модели - в основном игра с синтаксисом и тому подобным на данном этапе.

Тем не менее, когда я пытаюсь подогнать данные о ставках (число / человеко-дни) и использую смещение следующим образом: cdi_model <- glm(count_rate ~ exposure + covariate + months + offset(log(pd)), data=test, family = poisson)

Я получаю более 50 предупреждений, все "1: В dpois (y, mu, log = TRUE): нецелое число x = 0,002082" и т. Д. Это более одного для каждого наблюдения (в наборе данных только 30).

Кроме того, модель подходит, кажется, идет в горшок. Вывести следующим образом:

 Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-0.0273656  -0.0122169   0.0002396   0.0072269   0.0258643  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) -15.40110   15.12772  -1.018    0.309
exposure      0.84848   22.18012   0.038    0.969
covariate    -0.02751   21.31262  -0.001    0.999
months       -0.01889    0.95977  -0.020    0.984

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 0.0068690  on 29  degrees of freedom
Residual deviance: 0.0054338  on 26  degrees of freedom
AIC: Inf

Number of Fisher Scoring iterations: 9

Несмотря на это, если я построю прогнозируемую частоту в сравнении с фактическими данными, подгонка не будет выглядеть намного хуже, и фактическая оценка эффекта, похоже, не сильно изменится.

У кого-нибудь есть идея, что происходит - или все идет хорошо, и я что-то упускаю из-за неопытности?

фомиты
источник

Ответы:

17

Когда вы добавляете смещение, вам не нужно (и не должно) также вычислять коэффициент и включать экспозицию.

Я не знаю, является ли это причиной ошибок, но если воздействие на случай составляет человеко-дни pd, то зависимая переменная должна быть, countsа смещение должно быть log(pd)следующим:

cdi_model <- glm(counts ~ covariate + months + offset(log(pd)), 
                 data=test, family = poisson)
conjugateprior
источник
(+1) Иногда я видел, как эпидемиологи называют любую независимую переменную, представляющую интерес, «воздействие» (например, «воздействие курящих сигарет»). Но хороший улов, вам определенно не следует использовать показатель в качестве зависимой переменной.
Энди W
Я бы предположил, что переменная «месяцы» - это продолжительность воздействия, но принцип будет таким же.
Анико
@Анико Думаю, скоро мы это узнаем. Я думал, что если разумно думать о скорости, (counts/thing)то логарифмическая линейная модель почти всегда counts ~ ... + offset(log(thing)). И пока мы второй угадывание вещи, я предсказываю , что log(pd) == exposure...
conjugateprior
Чтобы уточнить некоторые вещи - Энди W прав. «Воздействие» на самом деле представляет собой независимую переменную интереса (в данном случае изменение политики). Месяцы - это просто «месяцы с даты X», чтобы обеспечить некоторый контроль трендов в данных.
Fomite
@ConjugatePrior При использовании модели в вашем ответе, разве результат модели не должен быть в норме? Запуск, кажется, производит все как необработанный счет, несмотря на включение смещения. Или я пропускаю еще один шаг?
Fomite