R'de bir Poisson GLM takma - oranlar ve sayımlarla ilgili sorunlar


11

Şu anda zaman içinde bazı sayım verilerinin GLM (ve sonunda GAM) içeren bir proje üzerinde çalışıyorum. Normalde bunu SAS'ta yapardım, ama R'ye geçmeye çalışıyorum ve ... sorunları yaşıyorum.

Aşağıdakileri kullanarak veri saymak için bir GLM taktığımda:

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

Alırım:

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

Bir an için modelin performansını veya eksikliğini görmezden gelin - çoğunlukla bu noktada sözdizimi ve benzerleriyle oynamak.

Ancak, oran verileri (sayım / kişi-gün) sığdırmaya çalıştığımda ve böyle bir mahsup kullandığımda: cdi_model <- glm(count_rate ~ exposure + covariate + months + offset(log(pd)), data=test, family = poisson)

50'den fazla uyarı alıyorum, "1: dpois'te (y, mu, log = TRUE): tamsayı x = 0.002082" vs.

Ek olarak, model uyumu pota giriyor gibi görünüyor. Çıktı aşağıdaki gibi:

 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

Buna rağmen, tahmin edilen oranı gerçek verilere göre çizersem, uyum o kadar kötü görünmüyor ve gerçek etki tahmini çok fazla değişmiyor gibi görünüyor.

Herkes neler olup bittiğine dair bir fikre sahip - ya da her şey yolunda giderse ve tecrübesizlik nedeniyle bir şey eksikse?

Yanıtlar:


17

Ofseti eklediğinizde, oranı hesaplamanıza ve pozlamayı da eklemenize gerek yoktur (ve olmamalıdır).

Bu hataların nedeni olup olmadığını bilmiyorum, ancak vaka başına maruz kalma kişi gün ise pd, o zaman bağımlı değişken olmalı countsve ofset, şöyle olmalıdır log(pd):

cdi_model <- glm(counts ~ covariate + months + offset(log(pd)), 
                 data=test, family = poisson)

(+1) Bazen epidemiyologların herhangi bir bağımsız değişkene "maruz kalma" (örneğin "sigaraya maruz kalma") adını verdiklerini gördüm. Ama iyi yakalama, kesinlikle bağımlı değişken olarak hızı kullanmamalısınız.
Andy W

'Aylar' değişkeninin maruziyetin uzunluğu olduğunu tahmin ederdim, ama prensip aynı olurdu.
Aniko

@ Sanırım yakında öğreneceğiz. Bir hızı düşünmenin makul olması (counts/thing)durumunda log lineer modelin neredeyse her zaman olduğunu düşünüyordum counts ~ ... + offset(log(thing)). Ve biz ikinci şeyleri tahmin ederken, bunu da tahmin ediyorum log(pd) == exposure...
konjugateprior

Bazı şeyleri açıklığa kavuşturmak için - Andy W doğrudur. "Maruziyet" aslında bağımsız bir ilgi değişkenidir (bu durumda politikada bir değişiklik). Aylar, verilerdeki eğilimler için bir miktar kontrole izin vermek için "X tarihinden itibaren aylar" dır.
Fomite

@ConjugatePrior Cevabınızda modeli kullanırken, modelin çıktısı bir oranda olmamalı mı? Koşmak ofset dahil olmasına rağmen her şeyi ham bir sayı olarak ortaya koyuyor gibi görünüyor. Yoksa attığım başka bir adım var mı?
Fomite
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.