在Alain F. Zuur等人的“初学者指南GLM和GLMM”一书的第200-202页中,介绍了零技巧方法,它是适合JAGS中任何分布的有效方法。该技术需要采用密度函数的对数。对于正常密度,其对数形式如下所示:
JAGS代码如下:
cat("
model{
#1A. Diffuse normal priors for the regression
# coefficients
for (i in 1:K) { beta[i] ~ dnorm(0, 0.0001) }
#1B. half-Cauchy(25) prior for the variance
num ~ dnorm(0, 0.0016)
denom ~ dnorm(0, 1)
sigma <- abs(num / denom)
#2. Likelihood
C <- 10000
for (i in 1:N){
Zeros[i] ~ dpois(Zeros.mean[i])
Zeros.mean[i] <- -L[i] + C
l1[i] <- -0.5 * log(2 * 3.1415) –
0.5 * log(sigma)
l2[i] <- -0.5 * pow(Biomass[i]-mu[i],2)/sigma
L[i] <- l1[i] + l2[i]
mu[i] <- eta[i]
eta[i] <- inprod(beta[],X[i,])
}
}
",fill = TRUE)
作者明确地将sigma
建模为以下半Cauchy(25)分布,因此很明显代码中的sigma
代表标准差而不是方差。这表明应该在代码中使用sigma^2
,如日志密度公式所示。但是,对象l1 [i]使用0.5 * log(sigma)
而不是0.5 * log(sigma^2)
,类似地,l2 [i]在分母中包含sigma
而不是sigma^2
。
我想知道为什么公式和相应的代码似乎以不同的方式对待sigma
。