Sie können Mehrebenen-GLMM mit einer Poisson-Verteilung (mit Überdispersion) unter Verwendung von R auf mehrere Arten anpassen. Nur wenige R
Pakete sind: lme4
, MCMCglmm
, arm
etc. Eine gute Referenz , um zu sehen ist Gelman und Hill (2007)
Ich werde ein Beispiel dafür mit rjags
package in geben R
. Es ist eine Schnittstelle zwischen R
und JAGS
(wie OpenBUGS
oder WinBUGS
).
log θ i j = β 0 + β 1 T r e a t m e n t i + δ i j δ i j ~ N ( 0 , σ 2 ϵ ) i = 1 … ich ,
nich j∼ P o i s s o n ( θich j)
Logθich j= β0+ β1 T r eein t me ntich+ δich j
δichj∼ N( 0 , σ2ϵ)
i = 1 ... ich,j = 1 … J
T r e ein t me n tich= 0 oder 1 , … , J- 1 wenn das it h Beobachtung gehört zur Behandlungsgruppe 1 , oder, 2,…,J
δich 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)
}
Hier ist der R
Code zu implementieren Verwendung es (sagen , es heißt: 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])
Sie können mit den Nachbauten Ihrer Parameter herumspielen und weitere Parameter einführen, um die Modellierung präziser zu gestalten ( wir denken gerne darüber nach ). Grundsätzlich kommt man auf die Idee.
Weitere Informationen zur Verwendung von rjags
und JAGS
finden Sie auf der Seite von John Myles White
Das lme4-Paket muss nicht verlassen werden, um eine Überdispersion zu berücksichtigen. Fügen Sie einfach einen zufälligen Effekt für die Beobachtungsnummer ein. Die genannten BUGS / JAGS-Lösungen sind wahrscheinlich zu viel für Sie, und wenn nicht, sollten Sie die leicht zu vergleichenden lme4-Ergebnisse haben.
Dies wird hier diskutiert: http://article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 informell und akademisch von Elston et al. (2001) .
quelle
Ich denke, dass das glmmADMB-Paket genau das ist, was Sie suchen.
Aber aus bayesianischer Sicht können Sie das MCMCglmm- Paket oder die BUGS / JAGS- Software verwenden, sie sind sehr flexibel und Sie können diese Art von Modell anpassen . (und die Syntax ist der von R sehr ähnlich)
EDIT dank @randel
Wenn Sie die Pakete
glmmADMB
und installieren möchten,R2admb
ist es besser, Folgendes zu tun:quelle
install.packages("glmmADMB",repos="http://glmmadmb.r-forge.r-project.org/repos")
Plus installiert werdeninstall.packages('R2admb')
.Bisher gute Vorschläge. Hier ist noch einer. Mit der
rhierNegbinRw
Funktion desbayesm
Pakets können Sie ein hierarchisches negatives binomiales Regressionsmodell anpassen.quelle