Question

J'essaie de modéliser le "temps" d'observation comme variable aléatoire avec les ouvertures via R (R2OpenBugs). Si tous les temps d'observation sont disponibles (pas de NA), tout fonctionne, mais si je mets l'un des temps sur NA, rien ne se passe. J'ai testé le même code avec Winbugs, et j'obtiens une erreur de piège «nil dereference (lecture)». Donc, ma question est que c'est quelque chose de vraiment mal dans mon code, ou mon modèle est-il trop bizarre pour les bugs?

Mon modèle est comme ceci:

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) 
}

Et le code R ressemble à ceci:

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)
Était-ce utile?

La solution

Si je comprends bien votre question, vous demandez si cette expression

obs[i] ~ dbern(p)

est bizarre pour Win / OpenBugs afin qu'il ne gère pas la valeur manquante. Non je ne pense pas; Les bogues sont capables de gérer les valeurs manquantes de cette façon et cela les implique même - avec une distribution postérieure.

Mais j'ai un fort soupçon que

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

est vraiment bizarre! Cela pourrait entraîner des problèmes aux bogues lorsque vous forcez à calculer l'indice en utilisant l'observation obs[i] qui est nul. C'est vraiment bizarre, vous devriez essayer de trouver une autre façon de le faire. Essayez d'abord de simplifier le modèle pour sauter cette règle et je parierais que le problème disparaît.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top