2017-02-03 3 views
0

Ich arbeite durch das Lehrbuch "Bayesian Ideen und Datenanalyse" von Christensen et al.Winbugs zu Rjags beta Binomialmodell Übersetzung

Es ist eine einfache Übung in dem Buch, das in Windoof läuft Ausschneiden und Einfügen den folgenden Code beinhaltet:

model{ y ~ dbin(theta, n) # Model the data 
ytilde ~ dbin(theta, m) # Prediction of future binomial 
theta ~ dbeta(a, b) # The prior 
prob <- step(ytilde - 20) # Pred prob that ytilde >= 20 } 
list(n=100, m=100, y=10, a=1, b=1) # The data 
list(theta=0.5, ytilde=10) # Starting/initial values 

Ich versuche, die folgende in R2jags Code zu übersetzen und in einige Schwierigkeiten leitet. Ich dachte, ich könnte ziemlich direkt meinen R2Jags Code auf diese Weise schreiben:

model { 
    #Likelihoods 
    y ~ dbin(theta,n) 
    yt ~ dbin(theta,m) 
    #Priors 
    theta ~ dbeta(a,b) 
    prob <- step(yt - 20) 
} 

mit dem R-Code:

library(R2jags) 

n <- 100 
m <- 100 
y <- 10 
a <- 1 
b <- 1 

jags.data <- list(n = n, 
        m = m, 
        y = y, 
        a = a, 
        b = b) 

jags.init <- list(
       list(theta = 0.5, yt = 10), #Chain 1 init 
       list(theta = 0.5, yt = 10), #Chain 2 init 
       list(theta = 0.5, yt = 10) #Chain 3 init 
       ) 

jags.param <- c("theta", "yt") 

jags.fit <- jags.model(data = jags.data, 
        inits = jags.inits, 
        parameters.to.save = jags.param, 
        model.file = "hw21.bug", 
        n.chains = 3, 
        n.iter = 5000, 
        n.burnin = 100) 

print(jags.fit) 

jedoch forderte der R-Code bringt die folgenden Fehler:

Error in jags.model(data = jags.data, inits = jags.inits, parameters.to.save = jags.param, : 
    unused arguments (parameters.to.save = jags.param, model.file = "hw21.bug", n.iter = 5000, n.burnin = 100) 

Liegt es daran, dass ich eine notwendige for-Schleife in meinem Modellcode R2Jags vermisse?

Antwort

2

Der Fehler kommt von der R-Funktion jags.model (nicht von JAGS) - Sie versuchen, Parameter parameter.to.save usw. zur falschen Funktion zu verwenden.

Wenn Sie das Modell so ähnlich wie WinBUGS beibehalten möchten, gibt es einen einfacheren Weg als die Daten und Initialwerte in R. Geben Sie Folgendes in eine Textdatei namens 'model.txt' in Ihrem Arbeitsverzeichnis ein :

model{ 
    y ~ dbin(theta, n) # Model the data 
    ytilde ~ dbin(theta, m) # Prediction of future binomial 
    theta ~ dbeta(a, b) # The prior 
    prob <- step(ytilde - 20) # Pred prob that ytilde >= 20 
} 

data{ 
    list(n=100, m=100, y=10, a=1, b=1) # The data 
} 

inits{ 
    list(theta=0.5, ytilde=10) # Starting/initial values 
} 

Und dann laufen diese in R:

library('runjags') 
results <- run.jags('model.txt', monitor='theta') 
results 
plot(results) 

weitere Informationen zu dieser Methode der WinBUGS Modelle JAGS übersetzen sehen: http://runjags.sourceforge.net/quickjags.html

Matt

0

This old blog post hat ein umfangreiches Beispiel über Paket rjagsR2jags nicht zugegriffen Fehler zu JAGS umwandelt. (Ich mag das Paket runjags noch besser.) Ich weiß, dass wir hier in sich abgeschlossene Antworten präsentieren sollen, nicht nur Links, aber der Beitrag ist ziemlich lang. Es geht durch jeden logischen Schritt eines Skripts einschließlich:

  • Laden des Pakets
  • das Modell spezifizieren
  • die Daten Zusammenbauen
  • die Ketten Initialisieren
  • die Ketten laufen
  • die Prüfungs Ergebnisse