Censura / Truncamento no JAGS

10

Eu tenho uma pergunta sobre como ajustar um problema de censura no JAGS.

Observo uma mistura bivariada normal onde os valores X apresentam erro de medição. Eu gostaria de modelar os verdadeiros "meios" subjacentes dos valores censurados observados.

xtrue+ϵ=xobserved ϵN(0,sd=.5)

Aqui está o que eu tenho agora:

 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 também tem erro de medição. O que eu quero fazer é algo como isto:

 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)

Obviamente, o comando c não é válido no JAGS.

Desde já, obrigado.

Glen
fonte
3
Truncar, uso T (-, -), mas ler os usuários manuais para obter informações sobre censura e truncationq
David LeBauer

Respostas:

9

Talvez seja isso que você está procurando:

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

O JAGS possui opções para censura e truncamento. Parece que você deseja truncamento, pois você sabe a priori que a observação está dentro de um intervalo específico

Leia o manual do usuário para obter mais detalhes sobre como os jags usam truncamento e censura.

David LeBauer
fonte
3

Obrigado pelas dicas David. Publiquei esta pergunta no fórum de suporte do JAGS e obtive uma resposta útil. A chave era usar uma matriz bidimensional para os valores 'verdadeiros'.

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) 
Glen
fonte