ОпенБАГС:недостающее значение в распределении Бернулли

StackOverflow https://stackoverflow.com/questions/9465825

Вопрос

Я пытаюсь смоделировать «время» наблюдения как случайную величину с помощью OpenBUGS через R (R2OpenBUGS).Если доступны все времена наблюдения (без NA), все работает, но если я установлю для одного из времен значение NA, ничего не произойдет.Я протестировал тот же код с WinBUGS и получил ошибку «Разыменование NIL (чтение)».Итак, мой вопрос: что-то действительно не так в моем коде или моя модель слишком странная для ОШИБОК?

Моя модель такая:

model{
 for(i in 1:k){
  obs[i] ~ dbern(p) #is the observation done at time 1 or 2?
  y[(i-1)*2 + obs[i]+1] <- x[i]
 }    
 for(i in 1:n){    
   y[i] ~ dnorm(mu,tau) 
 }    
 mu ~ dnorm(0,0.0001)
 tau~ dgamma(0.001,0.001)  
 p ~ dunif(0,1) 
}

И код R выглядит так:

library(R2OpenBUGS)
x<-obs<-rep(NA,5)
for(i in 1:k)
{
  obs[i]<-sample(c(0,1),1) #observation time of ith observation
  x[i]<-rnorm(1) #observed values
}

obs[2]<-NA #one of the sampling times is missing
INITS <- list(list(tau=1,mu=0,p=0.5))
DATA  <- list(x=x,n=n,k=k,obs=obs)

ob <- bugs(
  data=DATA,
  inits=INITS,
  parameters.to.save=c("tau","mu","p","y"),
  model.file="BUGSModel.R",
  n.chains=1,
  n.iter=50,
  n.burnin=10,
  n.thin=1,    
  DIC=FALSE)
Это было полезно?

Решение

Если я хорошо понимаю ваш вопрос, вы спрашиваете, является ли это выражение

obs[i] ~ dbern(p)

является странным для Win/OpenBUGS, поскольку он не обрабатывает пропущенное значение.Нет, я так не думаю;bugs способен таким образом обрабатывать пропущенные значения и даже приписывать их - с апостериорным распределением.

Но у меня есть сильное подозрение, что

y[(i-1)*2 + obs[i]+1] <- x[i]

действительно странно!Это может вызвать проблемы с ошибками, поскольку вы принудительно вычисляете индекс, используя наблюдение. obs[i] который равен нулю.Это действительно странно, вам следует попытаться найти другой способ сделать это.Сначала попытайтесь упростить модель, чтобы пропустить это правило, и я готов поспорить, что проблема исчезнет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top