ติดตั้ง Poisson GLM ใน R - ปัญหาเกี่ยวกับอัตราเทียบกับจำนวน


11

ขณะนี้ฉันกำลังทำงานในโครงการที่เกี่ยวข้องกับ GLM (และในที่สุดเกม) ของการนับจำนวนข้อมูลเมื่อเวลาผ่านไป โดยปกติฉันจะทำสิ่งนี้ใน 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)

(+1) บางครั้งฉันเคยเห็นนักระบาดวิทยาเรียกตัวแปรอิสระว่า "การสัมผัส" (เช่น "การสูบบุหรี่") แต่การจับที่ดีคุณไม่ควรใช้อัตรานี้เป็นตัวแปรตาม
Andy W

ฉันจะเดาได้ว่าตัวแปร 'เดือน' คือความยาวของการเปิดเผย แต่หลักการจะเหมือนกัน
Aniko

@Aniko ฉันคิดว่าเราจะรู้ได้เร็วพอ ผมคิดว่าถ้ามันมีเหตุผลที่จะคิดอัตราเป็นแล้วบันทึกเชิงเส้นรูปแบบอยู่เกือบตลอดเวลา(counts/thing) counts ~ ... + offset(log(thing))และในขณะที่เรากำลังคาดเดาสิ่งต่าง ๆ อยู่ฉันก็คาดการณ์ว่าlog(pd) == exposure...
conjugateprior

เพื่อชี้แจงบางสิ่งบางอย่าง - Andy W ถูกต้อง "การเปิดเผย" เป็นตัวแปรอิสระที่น่าสนใจ (ในกรณีนี้คือการเปลี่ยนแปลงนโยบาย) เดือนเป็นเพียง "เดือนนับจากวันที่ X" เพื่อให้สามารถควบคุมแนวโน้มในข้อมูลได้
Fomite

@ConjugatePrior เมื่อใช้แบบจำลองในคำตอบของคุณผลลัพธ์ของแบบจำลองไม่ควรอยู่ในอัตราหรือไม่? ดูเหมือนว่าจะทำให้ทุกอย่างออกมามีความสำคัญแม้จะมีการรวมออฟเซ็ตแล้วก็ตาม หรือมีขั้นตอนอื่นฉันหายไป?
Fomite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.