Anda dapat menyesuaikan multilevel GLMM dengan distribusi Poisson (dengan dispersi berlebih) menggunakan R dalam berbagai cara. Beberapa Rpaket adalah: lme4, MCMCglmm, arm, dll Sebuah referensi yang baik untuk melihat adalah Gelman dan Hill (2007)
Saya akan memberikan contoh untuk melakukan hal ini menggunakan rjagspaket di R. Ini adalah antarmuka antara Rdan JAGS(suka OpenBUGSatau WinBUGS).
nsaya j∼ P o i s s o n ( θsaya j)
δ i j ~ N ( 0 , σ 2logθsaya j= β0+ β1 T r e a t me n tsaya+ δsaya j
i=1...Saya,δsayaj∼ N( 0 , σ2ϵ)
T r e a t m e n t i = 0 atau 1 , … , J - 1 jika i t hi = 1 ... I,j = 1 ... J
T r e a t me n tsaya= 0 atau 1 , ... , J- 1 jika it h observasi termasuk dalam kelompok perlakuan 1 , atau, 2,…,J
Bagian δsaya j dalam kode di atas model overdispersi. Tetapi tidak ada yang menghentikan Anda dari pemodelan korelasi antara individu (Anda tidak percaya bahwa individu benar-benar independen) dan di dalam individu (tindakan berulang). Juga, parameter laju dapat diskalakan oleh beberapa konstanta lain seperti pada rate models. Silakan lihat Gelman dan Hill (2007) untuk referensi lebih lanjut. Berikut adalah JAGSkode untuk model sederhana:
data{
for (i in 1:I){
ncount[i,1] <- obsTrt1[i]
ncount[i,2] <- obsTrt2[i]
## notice I have only 2 treatments and I individuals
}
}
model{
for (i in 1:I){
nCount[i, 1] ~ dpois( means[i, 1] )
nCount[i, 2] ~ dpois( means[i, 2] )
log( means[i, 1] ) <- mu + b * trt1[i] + disp[i, 1]
log( means[i, 2] ) <- mu + b * trt2[i] + disp[i, 2]
disp[i, 1] ~ dnorm( 0, tau)
disp[i, 2] ~ dnorm( 0, tau)
}
mu ~ dnorm( 0, 0.001)
b ~ dnorm(0, 0.001)
tau ~ dgamma( 0.001, 0.001)
}
Berikut adalah Rkode untuk menerapkan penggunaan itu (mengatakan itu bernama: overdisp.bug)
dataFixedEffect <- list("I" = 10,
"obsTrt1" = obsTrt1 , #vector of n_i1
"obsTrt2" = obsTrt2, #vector of n_i2
"trt1" = trt1, #vector of 0
"trt2" = trt2, #vector of 1
)
initFixedEffect <- list(mu = 0.0 , b = 0.0, tau = 0.01)
simFixedEffect <- jags.model(file = "overdisp.bug",
data = dataFixedEffect,
inits = initFixedEffect,
n.chains = 4,
n.adapt = 1000)
sampleFixedEffect <- coda.samples(model = simFixedEffect,
variable.names = c("mu", "b", "means"),
n.iter = 1000)
meansTrt1 <- as.matrix(sampleFixedEffect[ , 2:11])
meansTrt2 <- as.matrix(sampleFixedEffect[ , 12:21])
Anda dapat bermain-main dengan eksterior parameter Anda dan Anda dapat memperkenalkan lebih banyak parameter untuk membuat pemodelan Anda lebih tepat ( kami suka memikirkannya ). Pada dasarnya, Anda mendapatkan idenya.
Untuk detail lebih lanjut tentang penggunaan rjagsdan JAGS, silakan lihat halaman John Myles White