Menyesuaikan model campuran Poisson GLM dengan kemiringan dan penyadapan acak

9

Saat ini saya sedang mengerjakan serangkaian model deret waktu Poisson yang mencoba memperkirakan efek perubahan dalam bagaimana penghitungan diperoleh (beralih dari satu uji diagnostik ke uji lain) sambil mengendalikan tren lain dari waktu ke waktu (katakanlah peningkatan umum pada kejadian penyakit). Saya punya data untuk sejumlah situs yang berbeda.

Meskipun saya telah bermain-main dengan GAM juga, saya telah mencocokkan serangkaian GLM yang cukup mendasar dengan tren waktu di dalamnya, lalu mengumpulkan hasilnya. Kode untuk ini akan terlihat seperti ini di SAS:

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

atau ini di R:

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

Kemudian mengambil taksiran-taksiran itu, dan menggabungkannya di berbagai situs. Saya juga menyarankan agar saya mencoba menggunakan model campuran Poisson dengan kemiringan acak dan mencegat untuk setiap situs, daripada mengumpulkan. Jadi pada dasarnya Anda akan memiliki efek tetap dari depend_variable, kemudian efek acak untuk intersep dan waktu (atau idealnya waktu dan waktu ^ 2 meskipun saya mengerti bahwa itu akan sedikit berbulu).

Masalah saya adalah saya tidak tahu bagaimana cara mencocokkan salah satu model ini, dan tampaknya model campuran adalah tempat dokumentasi semua orang tiba-tiba menjadi sangat buram. Adakah yang memiliki penjelasan (atau kode) sederhana tentang bagaimana menyesuaikan apa yang saya cari, dan apa yang harus diwaspadai?

Fomite
sumber

Jawaban:

14

Dalam R:

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

Dalam hal ini dan kode ini sesuai dengan model YiPoisson(λi)

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

di mana berada , adalah dan adalah . adalah efek tetap dan adalah efek acak yang variasinya diperkirakan oleh model.Xidependent_variablettimeiIDβ0,β1ηi1,ηi2

Inilah contoh dengan beberapa data yang disimulasikan dengan cepat di mana varians efek acak benar-benar 0, kovariat tidak berpengaruh, setiap hasil adalah , dan setiap individu terlihat 10 kali pada waktu .t = 1 , . . . , 10Poisson(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

Satu hal yang perlu diperhatikan - Std.Dev.kolom tersebut hanya akar kuadrat dari Variancekolom, BUKAN kesalahan standar estimasi varians!

Makro
sumber
Dan ηi1-nya yang menghasilkan intersepsi acak?
Fomite
ηi1 adalah intersepsi acak, ya.
Makro
Terima kasih atas jawabannya - satu pertanyaan lagi. Dalam beberapa GLM, beberapa situs mendapat manfaat besar dari istilah ^ 2. Tampaknya kebanyakan orang memberi tag pada satu atau dua efek acak - seberapa burukkah efek yang ketiga dalam hal perhitungan?
Fomite
Nah, dalam contoh simulasi di atas, yang hanya memiliki 100 pengamatan dan 10 kelompok, menambahkan efek acak ketiga (dengan mengetik g <- lmer(y ~ x + (1+t+I(t^2)|ID), family="poisson")), meningkatkan waktu komputasi dari sekitar 0,75 detik menjadi sekitar 11 detik. Sebagai ukuran sampel tumbuh, peningkatan waktu komputasi mungkin juga meningkat.
Makro
1
@andrea, itu akan mencerminkan kepercayaan bahwa ada tren sekuler dalam kumpulan data - Saya tidak menganggap apriori bahwa ini masuk akal. Jika unitnya adalah orang-orang dan adalah usia, maka saya tentu setuju bahwa efek waktu yang pasti sangat masuk akal, tetapi dalam situasi lain, kemiringan waktu akan lebih ke arah acak masing-masing individu. Itu sebabnya saya tidak memasukkan efek itu (dan epigrad tidak bertanya bagaimana memasukkan efek waktu tetap)t
Makro
2

Dalam SAS:

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

Tapi tentu saja ada banyak opsi, lebih atau kurang bermanfaat, untuk dimainkan.

boscovich
sumber
Terima kasih :) Sedihnya, saya tampaknya telah kandas pada masalah konvergensi, tapi saya akan bermain-main dengan itu.
Fomite