2016-05-18 8 views
1

Mein scheinbar unkompliziertes Modell gibt mir immer wieder seltsame Kompilierungsfehler.JAGS Kompilierungsfehler

Runtime Error:
Compilation error on line 17.
Unknown variable Nx
Either supply values for this variable with the data or define it on the left hand side of a relation.

Hier ist mein Code:

dataList = list(
    x = x , 
    y = y , 
    xP = xProbe 
) 

Here's the JAGS model: 
1 data{ 
2  Ntotal <- length(y) 
3  ym <- mean(y) 
4  ysd <- sd(y) 
5  for (i in 1:Ntotal) { 
6   zy[i] <- (y[i] - ym)/ysd 
7  } 
8  Nx <- length(xName) 
9  for (j in 1:Nx) { 
10   xm[j] <- mean(x[,j]) 
11   xsd[j] <- sd(x[,j]) 
12   for (i in 1:Ntotal) { 
13   zx[i,j] <- (x[i,j] - xm[j])/xsd[j] 
14   } 
15  } 
16  Nprobe <- Ntotal 
17  for (j in 1:Nx) { 
18   xPm[j] <- mean(xP[,j]) 
19   xPsd[j] <- sd(xP[,j]) 
20   for (i in 1:Nprobe) { 
21   zxP[i,j] <- (xP[i,j] - xPm[j])/xPsd[j] 
22   } 
23  } 
24 } 
25 model{ 
26  for (i in 1:Ntotal) { 
27   zy[i] ~ dt(zbeta0 + sum(zbeta[1:Nx]*zx[i,1:Nx]), 1/zsigma^2, nu) 
28  } 
29  # Priors vague on standardized scale: 
30  zbeta0 ~ dnorm(0 , 1/2^2)  
31  for (j in 1:Nx) { 
32   zbeta[j] ~ dnorm(0 , 1/2^2) 
33  } 
34  zsigma ~ dunif(1.0E-5 , 1.0E+1) 
35  nu ~ dexp(1/30.0) 
36  # Transform to original scale: 
37  beta[1:Nx] <- (zbeta[1:Nx]/xsd[1:Nx])*ysd 
38  beta0 <- zbeta0* ysd + ym - sum(zbeta[1:Nx]*xm[1:Nx]/xsd[1:Nx])*ysd 
39  sigma <- zsigma*ysd 
40  # Predicted y values as xProbe: 
41  for (i in 1:Nprobe) { 
42   zyP[i] ~ dt(zbeta0+sum(zbeta[1:Nx]*zxP[i,1:Nx]),1/zsigma^2, nu) 
43   yP[i] <- zyP[i] * ysd + ym 
44  } 
45 } 

Antwort

0

Es sieht aus, als ob Sie nicht definiert haben, welche xName auf der Leitung 8, die Nx auf abhängt. Definieren Sie das in der dataList und Sie sollten gut gehen (in Bezug auf die Reparatur dieses einzelnen Fehlers).

+0

Ich frage mich nur, warum JAGS in Zeile 9 nicht den gleichen Fehler zuerst gegeben hat. –

+1

JAGS führt Skripts nicht Zeile für Zeile durch, und Schleifen werden nicht sequenziell ausgeführt. –