Я пытаюсь смоделировать время наблюдения как случайную переменную с помощью 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)