JAGS中的审查/截断


10

我有一个关于如何在JAGS中解决审查问题的问题。

我观察到X值存在测量误差的双变量混合法线。我想对观察到的检查值的真正基础“手段”建模。

XŤ[RüË+ϵ=XØbsË[RvËd ϵñ0sd=.5

这是我现在所拥有的:

 for (i in 1:n){
   x[i,1:2]~dmnorm(mu[z[i],1:2], tau[z[i],1:2,1:2])
   z[i]~dcat(prob[ ])
 }

Y也有测量误差。我想做的是这样的:

 for (i in 1:n){
   x_obs[i] ~ dnorm(x_true[i],prec_x)I(x_true[i],)
   y_obs[i] ~ dnorm(y_true[i],prec_y)
   c(x_true[i]:y_true[i])~dmnorm(mu[ z [ i ],1:2], tau[z[i],1:2,1:2])
   z[i]~dcat(prob[ ])
 }

 #priors for measurement error
 e_x~dunif(.1,.9)
 prec_x<-1/pow(e_x,2)
 e_y~dunif(2,4)
 prec_y<-1/pow(e_y,2)

显然,c命令在JAGS中无效。

提前致谢。


3
要进行截断,请使用T(-,-),但请阅读用户手册以获取有关谴责和截断的信息
q

Answers:


9

也许这就是您要寻找的:

x_obs[i] ~ dnorm(x_true[i],prec_x)T(x_true[i], )

JAGS具有用于审查和截断的选项。听起来您想截断,因为您先验地知道观测值在特定范围内

阅读用户手册,了解有关尖齿如何使用截断和检查的更多详细信息。


3

感谢大卫的提示。我在JAGS支持论坛上发布了这个问题,并获得了有用的答案。关键是使用二维数组作为“真”值。

for (j in 1:n){ 
  x_obs[j] ~ dnorm(xy_true[j,1], prec_x)T(xy_true[j,1],) 
  y_obs[j] ~ dnorm(xy_true[j,2], prec_y)
  xy_true[j, ] ~ dmnorm(mu[ z [j],1:2], tau[z[j],1:2,1:2]) 
  z[j]~dcat(prob[ ]) 
}

 #priors for measurement error 
 e_x~dunif(.1,.9)
 prec_x<-1/pow(e_x,2)
 e_y~dunif(2,4)
 prec_y<-1/pow(e_y,2) 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.