Frage

Ich versuche, die Beobachtungszeit als Zufallsvariable mit OpenBUGS über R (R2OpenBUGS) zu modellieren.Wenn alle Beobachtungszeiten verfügbar sind (keine NA's), funktioniert alles, aber wenn ich eine der Zeiten auf NA stelle, passiert nichts.Ich habe den gleichen Code mit WinBUGS getestet und erhalte den Trap-Fehler „NIL-Dereferenzierung (gelesen)“.Meine Frage ist also, ob in meinem Code wirklich etwas nicht stimmt oder ob mein Modell zu seltsam für FEHLER ist?

Mein Modell sieht so aus:

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

Und der R-Code sieht so aus:

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)
War es hilfreich?

Lösung

Wenn ich Ihre Frage gut verstehe, fragen Sie nach diesem Ausdruck

obs[i] ~ dbern(p)

ist für Win/OpenBUGS seltsam, sodass der fehlende Wert nicht verarbeitet wird.Nein, das glaube ich nicht;bugs kann auf diese Weise mit fehlenden Werten umgehen und diese sogar imputieren – mit Nachverteilung.

Aber ich habe einen starken Verdacht

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

ist wirklich seltsam!Dies kann zu Fehlern führen, wenn Sie die Berechnung des Index mithilfe der Beobachtung erzwingen obs[i] was null ist.Das ist wirklich seltsam. Sie sollten versuchen, einen anderen Weg zu finden.Versuchen Sie zunächst, das Modell zu vereinfachen, um diese Regel zu überspringen, und ich wette, dass das Problem verschwindet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top