Çok düzeyli GLMM'yi, R'yi çeşitli şekillerde kullanarak bir Poisson dağılımına (aşırı dağılıma sahip) yerleştirebilirsiniz. Birkaç Rpaketler şunlardır: lme4, MCMCglmm, armvb İyi bir referanstır görmek Gelman ve Tepesi (2007)
Bunu rjagspaketi kullanarak yapmanın bir örnek vereceğim R. RVe JAGS(gibi OpenBUGSveya WinBUGS) arasında bir arayüzdür .
log θ i j = β 0 + β 1 t r E , bir T m e n t ı + δ i j δ i j ~ N ( 0 , σ 2 ϵ ) i = 1 … Ben ,
nben j~ P o ı s s O n ( θben j)
günlükθben j= β0+ β1 T r e bir T me n tben+ δben j
δben j∼ N( 0 , σ2ε)
T r E , bir T m e n t ıi = 1 … Ben,j = 1 … J
T r e bir T me n tben= 0 veya 1 , … , J- 1 ise it h gözlem 1 , veya, 2,…,J tedavi grubuna aittir.
Yukarıdaki kodun içindeki bölümü, dağılma modellerini içerir. Fakat sizi, bireyler arasındaki (bireylerin gerçekten bağımsız olduğuna inanmıyorsunuz) ve bireyler arasındaki (tekrarlanan önlemler) modellemekten alıkoyacak kimse yoktur. Ayrıca, rate parametresi, içinde olduğu gibi başka bir sabit tarafından ölçeklenebilir . Daha fazla referans için lütfen Gelman ve Hill'e (2007) bakınız. İşte basit model için kod:δben jrate modelsJAGS
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)
}
İşte Ro kullanımını uygulamak için kodu (Adını ki: 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])
Parametrelerinizin posterleri ile oynatabilirsiniz ve daha kesin modelleme yapmak için daha fazla parametre sunabilirsiniz ( bunu düşünmeyi seviyoruz ). Temel olarak fikri anladınız.
Kullanımıyla ilgili daha fazla ayrıntı için rjagsve JAGSlütfen bkz John Myles White'ın sayfasını