ติดตั้งโมเดลพัวซอง GLM ผสมกับความชันและจุดตัดแบบสุ่ม


9

ขณะนี้ฉันกำลังทำงานกับแบบจำลองอนุกรมเวลาของปัวซองที่พยายามประเมินผลของการเปลี่ยนแปลงวิธีการนับจำนวนที่ได้รับ (เปลี่ยนจากการทดสอบการวินิจฉัยหนึ่งไปสู่อีกการทดสอบหนึ่ง) ในขณะที่ควบคุมแนวโน้มอื่น ๆ ในช่วงเวลาหนึ่ง อุบัติการณ์ของโรค) ฉันมีข้อมูลสำหรับไซต์ต่าง ๆ จำนวนมาก

ในขณะที่ฉันกำลังซ่อมบำรุงเกมด้วยเช่นกันฉันพอดีกับ GLM พื้นฐานที่เหมาะสมกับแนวโน้มเวลาในพวกเขาจากนั้นจึงรวมผลลัพธ์ รหัสสำหรับสิ่งนี้จะมีลักษณะเช่นนี้ใน SAS:

PROC GENMOD data=work.data descending;
  model counts = dependent_variable time time*time / link=log dist = poisson;
run;

หรือนี่ใน R:

glm(counts ~ dependent_variable + time + time*time, family="poisson")

จากนั้นนำค่าประมาณเหล่านั้นมารวมกันในหลาย ๆ ไซต์ มันก็ถูกแนะนำด้วยว่าให้ฉันลองใช้แบบจำลองปัวซองผสมกับความชันแบบสุ่มและจุดตัดสำหรับแต่ละไซต์แทนที่จะรวมกัน ดังนั้นโดยพื้นฐานแล้วคุณต้องมีเอฟเฟกต์คงที่ของ dependent_variable จากนั้นจะมีเอฟเฟกต์แบบสุ่มสำหรับการสกัดกั้นและเวลา (หรือเวลาและเวลาที่ดีเลิศ ^ 2 แม้ว่าฉันจะเข้าใจว่ามันค่อนข้างลำบาก)

ปัญหาของฉันคือฉันไม่รู้ว่าจะใส่หนึ่งในโมเดลเหล่านี้ได้อย่างไรและดูเหมือนว่าโมเดลผสมนั้นเป็นที่ ๆ เอกสารของทุกคนมีความทึบมาก ทุกคนมีคำอธิบายง่ายๆ (หรือรหัส) เกี่ยวกับวิธีการปรับให้พอดีกับสิ่งที่ฉันกำลังมองหาและสิ่งที่ต้องระวัง

คำตอบ:


14

ใน R:

library(lme4)
lmer(counts ~ dependent_variable + (1+time|ID), family="poisson")

ในกรณีนี้และรหัสนี้เหมาะกับรุ่น YiPoisson(λi)

log(λi)=β0+β1Xi+ηi1+ηi2t

ที่คือ,เป็นและคือ เป็นเอฟเฟกต์คงที่และเป็นเอฟเฟกต์แบบสุ่มซึ่งมีการประมาณค่าความแปรปรวนโดยโมเดลXidependent_variablettimeiIDβ0,β1ηi1,ηi2

นี่คือตัวอย่างที่มีข้อมูลที่จำลองขึ้นอย่างรวดเร็วโดยที่ผลต่างแบบสุ่มอย่างแท้จริงคือ 0, covariate ไม่มีผลกระทบทุกผลลัพธ์คือและแต่ละคนจะเห็น 10 ครั้งในเวลา.Poisson(1)t=1,...,10

x = rnorm(100)
t = rep(1:10,each=10)
ID = rep(1:10,10)
y = rpois(100,1)
g <- lmer(y ~ x + (1+t|ID), family="poisson")
summary(g)
Generalized linear mixed model fit by the Laplace approximation 
Formula: y ~ x + (1 + t | ID) 
   AIC   BIC logLik deviance
 108.8 121.9 -49.42    98.85
Random effects:
 Groups Name        Variance  Std.Dev. Corr   
 ID     (Intercept) 0.0285038 0.168831        
        t           0.0027741 0.052669 -1.000 
Number of obs: 100, groups: ID, 10

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.09078    0.11808  -0.769    0.442
x            0.13670    0.08845   1.546    0.122

Correlation of Fixed Effects:
  (Intr)
x -0.127

ข้อควรระวังจุดหนึ่ง - Std.Dev.คอลัมน์เป็นเพียงรากที่สองของVarianceคอลัมน์ไม่ใช่ข้อผิดพลาดมาตรฐานของการประมาณค่าความแปรปรวน!


และηi1ที่ส่งผลให้มีการสกัดกั้นแบบสุ่มหรือไม่?
Fomite

ηi1คือการสกัดกั้นแบบสุ่มใช่
มาโคร

ขอบคุณสำหรับคำตอบ - อีกหนึ่งคำถาม ใน GLMs บางแห่งไซต์บางแห่งได้รับประโยชน์อย่างมากจากคำศัพท์ ^ 2 ดูเหมือนว่าคนส่วนใหญ่แท็กด้วยเอฟเฟ็กต์แบบสุ่มหนึ่งหรือสองครั้ง - วิธีที่น่ารังเกียจเป็นอันดับสามในแง่ของการคำนวณอย่างไร
Fomite

ในตัวอย่างที่จำลองไว้ด้านบนซึ่งมีการสังเกตเพียง 100 ครั้งและ 10 กลุ่มการเพิ่มเอฟเฟกต์แบบสุ่มครั้งที่สาม (โดยการพิมพ์g <- lmer(y ~ x + (1+t+I(t^2)|ID), family="poisson")) เพิ่มเวลาการคำนวณจากประมาณ 0.75 วินาทีเป็น 11 วินาที เมื่อขนาดตัวอย่างเพิ่มขึ้นการเพิ่มเวลาในการคำนวณอาจเพิ่มขึ้นเช่นกัน
มาโคร

1
@ andrea ที่จะสะท้อนถึงความเชื่อที่ว่ามีแนวโน้มทางโลกในชุดข้อมูล - ฉันไม่ได้สมมติก่อนว่าสิ่งนี้เหมาะสม หากหน่วยถูกคนและtอายุแล้วแน่นอนฉันเห็นด้วยว่าผลคงที่ในเวลาทำให้รู้สึกมาก แต่ในสถานการณ์อื่น ๆ ความลาดชันในเวลาจะเป็นทิศทางแบบสุ่มมากขึ้นแต่ละคนมุ่งหน้าไป นั่นเป็นสาเหตุที่ฉันไม่ได้รวมเอฟเฟกต์นั้นไว้ (และ epigrad ไม่ได้ถามว่าจะรวมเอฟเฟกต์เวลาคงที่ได้อย่างไร)
มาโคร

2

ใน SAS:

proc glimmix data = yourdata ic = q;
    class id;
    model y = x / dist = poisson solution;
    random intercept t / subject = id;
run;

แต่แน่นอนว่ามีตัวเลือกมากมายมีประโยชน์ไม่มากก็น้อยที่จะเล่นด้วย


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