我正在尝试基于地理坐标(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)