我想使用 R 拟合具有泊松分布(过度分散)的多级 GLMM。目前我正在使用lme4,但我注意到最近该quasipoisson
系列已被删除。
我在其他地方看到过,您可以通过添加一个随机截距来模拟二项式分布的加性过度分散,每次观察一个级别。这是否也适用于泊松分布?
有更好的方法吗?您还有其他推荐的软件包吗?
我想使用 R 拟合具有泊松分布(过度分散)的多级 GLMM。目前我正在使用lme4,但我注意到最近该quasipoisson
系列已被删除。
我在其他地方看到过,您可以通过添加一个随机截距来模拟二项式分布的加性过度分散,每次观察一个级别。这是否也适用于泊松分布?
有更好的方法吗?您还有其他推荐的软件包吗?
您可以使用 R 以多种方式将多级 GLMM 与泊松分布(过度分散)拟合。很少R
有包是:lme4
、、、MCMCglmm
等arm
。一个很好的参考是Gelman 和 Hill (2007)
我将给出一个使用rjags
package in执行此操作的示例R
。它是R
和JAGS
(如OpenBUGS
或WinBUGS
)之间的接口。
上面代码中的部分模拟了过度分散。但是没有人阻止你对个体之间的相关性(你不相信个体是真正独立的)和个体内部的相关性(重复测量)进行建模。此外,速率参数可以通过一些其他常数进行缩放,如. 请参阅 Gelman 和 Hill (2007) 以获取更多参考。这是简单模型的代码:rate 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)
}
这是R
实现使用它的代码(比如说它被命名为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])
你可以玩弄你的参数的后验,你可以引入更多的参数来让你的建模更精确(我们喜欢这样想)。基本上,你明白了。
有关使用rjags
and的更多详细信息JAGS
,请参阅John Myles White 的页面
无需离开 lme4 包即可解决过度分散问题;只包括观察数的随机效应。提到的 BUGS/JAGS 解决方案可能对您来说太过分了,如果不是,您应该有易于拟合的 lme4 结果进行比较。
data$obs_effect<-1:nrow(data)
overdisp.fit<-lmer(y~1+obs_effect+x+(1|obs_effect)+(1+x|subject_id),data=data,family=poisson)
这在这里讨论:http : //article.gmane.org/gmane.comp.lang.r.lme4.devel/4727 Elston 等人在非正式和学术上。(2001 年)。
我认为 glmmADMB 包正是您正在寻找的。
install.packages("glmmADMB", repos="http://r-forge.r-project.org")
但是从贝叶斯的角度来看,您可以使用MCMCglmm包或BUGS/JAGS软件,它们非常灵活,您可以适应这种模型。(并且语法接近 R 的)
编辑感谢@randel
如果你想安装glmmADMB
和R2admb
包,最好这样做:
install.packages("glmmADMB", repos="http://glmmadmb.r-forge.r-project.org/repos")
install.packages("R2admb")
到目前为止的好建议。这里还有一个。rhierNegbinRw
您可以使用包的功能拟合分层负二项式回归模型bayesm
。