Ç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ç R
paketler şunlardır: lme4
, MCMCglmm
, arm
vb İyi bir referanstır görmek Gelman ve Tepesi (2007)
Bunu rjags
paketi kullanarak yapmanın bir örnek vereceğim R
. R
Ve JAGS
(gibi OpenBUGS
veya 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 models
JAGS
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 R
o 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 rjags
ve JAGS
lütfen bkz John Myles White'ın sayfasını