我正在尝试基于地理坐标(x和y)在一些二进制数据(y)中建模空间模式 . 最后我将这个代码构建到一个BUGS模型中,所以我在包mgcv中使用jagam来为我开发代码 .
我能够使用logit链接函数(在下面的代码中使用ilogit - mod 1)获得合理的结果(即,预测显示预期的模式) . 但是这个模型似乎不能用我喜欢的链接函数,cloglog,(mod 3)或者我写出长期的logit转换(mod 2) . 在这些情况下,预测在所有站点中都是不变的 . 我不明白为什么?我想知道是否因为许多预测值接近0和1?
使用jagam,我开发了空间样条线BUGS代码:
jags.ready <- jagam(y ~ 1 + s(x, y),
data=mydf,
family=binomial,
sp.prior="log.uniform",
file="jagam.txt")
然后我可以通过以下方法为BUGS模型添加提取空间组件:
X = jags.ready$jags.data$X
S1 = jags.ready$jags.data$S1
zero = jags.ready$jags.data$zero
我的BUGS代码是:
model {
eta <- X %*% b ## linear predictor
## expected response
for (i in 1:n.sites) {
trans.mu[i] <- eta[i]
mu[i] <- ilogit(trans.mu[i])#mod 1 - works!!
#mu[i] <- exp(trans.mu[i])/(1+exp(trans.mu[i]))#mod 2
#mu[i] <- icloglog(trans.mu[i])#mod 3
}
## link to observations, y
for (i in 1:n.sites) {
y[i] ~ dbern(mu[i])
}
## Parametric effect priors - intercept
b[1] ~ dnorm(0, 0.5)
## prior for s(x,y)
K1 <- S1[1:29,1:29] * lambda[1] + S1[1:29,30:58] * lambda[2]
b[2:30] ~ dmnorm(zero[2:30],K1)
## smoothing parameter priors
for (i in 1:2) {
rho[i] ~ dunif(-12,12)
lambda[i] <- exp(rho[i])
}
}
",fill = TRUE)
sink()
然后我运行我的模型:
out1 <- jags(bugs.data, inits=NULL, params, "spline.txt", n.thin=nt,
n.chains=nc, n.burnin=nb,n.iter=ni,parallel=TRUE)