Hello,
I am trying, and failing, to do the birats example from the WinBugs manual
with R2Winbugs.
I can manage the rats example OK. Also, I can manage birats in WinBugs.
Here is the code I am running, the .bug program, and the error message. Any
help would be gratefully received.
Thank you,
Mike
library(R2WinBUGS)
data = list(x = c(8.0, 15.0, 22.0, 29.0, 36.0), N = 30, T = 5,
Omega = structure(.Data = c(200, 0, 0, 0.2), .Dim = c(2, 2)),
mean = c(0,0),
prec = structure(.Data = c(1.0E-6, 0, 0, 1.0E-6), .Dim = c(2, 2)),
Y = structure(
.Data = c(151, 199, 246, 283, 320,
145, 199, 249, 293, 354,
147, 214, 263, 312, 328,
155, 200, 237, 272, 297,
135, 188, 230, 280, 323,
159, 210, 252, 298, 331,
141, 189, 231, 275, 305,
159, 201, 248, 297, 338,
177, 236, 285, 350, 376,
134, 182, 220, 260, 296,
160, 208, 261, 313, 352,
143, 188, 220, 273, 314,
154, 200, 244, 289, 325,
171, 221, 270, 326, 358,
163, 216, 242, 281, 312,
160, 207, 248, 288, 324,
142, 187, 234, 280, 316,
156, 203, 243, 283, 317,
157, 212, 259, 307, 336,
152, 203, 246, 286, 321,
154, 205, 253, 298, 334,
139, 190, 225, 267, 302,
146, 191, 229, 272, 302,
157, 211, 250, 285, 323,
132, 185, 237, 286, 331,
160, 207, 257, 303, 345,
169, 216, 261, 295, 333,
157, 205, 248, 289, 316,
137, 180, 219, 258, 291,
153, 200, 244, 286, 324),
.Dim = c(30,5)))
inits <- list(mu.beta = c(0,0), tauC = 1,
beta = structure(
.Data = c(100,6,100,6,100,6,100,6,100,6,
100,6,100,6,100,6,100,6,100,6,
100,6,100,6,100,6,100,6,100,6,
100,6,100,6,100,6,100,6,100,6,
100,6,100,6,100,6,100,6,100,6,
100,6,100,6,100,6,100,6,100,6),
.Dim = c(30, 2)),
R = structure(.Data = c(1,0,0,1), .Dim = c(2, 2)))
names(inits)
inits$R
is.matrix(inits$beta)
is.matrix(inits$R)
mhbirats = bugs(data, inits, model.file = "birats.bug",
parameters.to.save = c("beta", "R",
"tauC", "mu.beta"),
n.chains = 1, n.iter=10000, n.burnin=1000, n.thin=1,
bugs.directory = "c:/Program Files/WinBUGS14/", debug = TRUE)
### birats example from winbugs
model
{
for( i in 1 : N ) {
beta[i , 1:2] ~ dmnorm(mu.beta[], R[ , ])
for( j in 1 : T ) {
Y[i , j] ~ dnorm(mu[i , j], tauC)
mu[i , j] <- beta[i , 1] + beta[i , 2] * x[j]
}
}
mu.beta[1:2] ~ dmnorm(mean[],prec[ , ])
R[1:2 , 1:2] ~ dwish(Omega[ , ], 2)
tauC ~ dgamma(0.001, 0.001)
sigma <- 1 / sqrt(tauC)
}
### the error message
Error in bugs(data, inits, model.file = "birats.bug",
parameters.to.save c("beta", :
Number of initialized chains (length(inits)) != n.chains
--
View this message in context:
http://n4.nabble.com/birats-example-with-R2WinBugs-tp974890p974890.html
Sent from the R help mailing list archive at Nabble.com.
On 18.12.2009 17:29, M JH wrote:> > Hello, > > I am trying, and failing, to do the birats example from the WinBugs manual > with R2Winbugs. > > I can manage the rats example OK. Also, I can manage birats in WinBugs. > > Here is the code I am running, the .bug program, and the error message. Any > help would be gratefully received. > > Thank you, > Mike > > > library(R2WinBUGS) > > data = list(x = c(8.0, 15.0, 22.0, 29.0, 36.0), N = 30, T = 5, > Omega = structure(.Data = c(200, 0, 0, 0.2), .Dim = c(2, 2)), > mean = c(0,0), > prec = structure(.Data = c(1.0E-6, 0, 0, 1.0E-6), .Dim = c(2, 2)), > Y = structure( > .Data = c(151, 199, 246, 283, 320, > 145, 199, 249, 293, 354, > 147, 214, 263, 312, 328, > 155, 200, 237, 272, 297, > 135, 188, 230, 280, 323, > 159, 210, 252, 298, 331, > 141, 189, 231, 275, 305, > 159, 201, 248, 297, 338, > 177, 236, 285, 350, 376, > 134, 182, 220, 260, 296, > 160, 208, 261, 313, 352, > 143, 188, 220, 273, 314, > 154, 200, 244, 289, 325, > 171, 221, 270, 326, 358, > 163, 216, 242, 281, 312, > 160, 207, 248, 288, 324, > 142, 187, 234, 280, 316, > 156, 203, 243, 283, 317, > 157, 212, 259, 307, 336, > 152, 203, 246, 286, 321, > 154, 205, 253, 298, 334, > 139, 190, 225, 267, 302, > 146, 191, 229, 272, 302, > 157, 211, 250, 285, 323, > 132, 185, 237, 286, 331, > 160, 207, 257, 303, 345, > 169, 216, 261, 295, 333, > 157, 205, 248, 289, 316, > 137, 180, 219, 258, 291, > 153, 200, 244, 286, 324), > .Dim = c(30,5))) > > inits<- list(mu.beta = c(0,0), tauC = 1, > beta = structure( > .Data = c(100,6,100,6,100,6,100,6,100,6, > 100,6,100,6,100,6,100,6,100,6, > 100,6,100,6,100,6,100,6,100,6, > 100,6,100,6,100,6,100,6,100,6, > 100,6,100,6,100,6,100,6,100,6, > 100,6,100,6,100,6,100,6,100,6), > .Dim = c(30, 2)), > R = structure(.Data = c(1,0,0,1), .Dim = c(2, 2)))Although I do not know why you specify the inits in such an R-unlike way, I know what is going wrong here. You could do as well after reading ?bugs: inits must be a list of list(s), one list for each chain. You do not have a list of lists but a list of the values, i.e. wrap the whole thing in another list() and you are fine. That one will contain one list for your one chain. Uwe Ligges> names(inits) > inits$R > is.matrix(inits$beta) > is.matrix(inits$R) > > mhbirats = bugs(data, inits, model.file = "birats.bug", > > parameters.to.save = c("beta", "R", "tauC", "mu.beta"), > > n.chains = 1, n.iter=10000, n.burnin=1000, n.thin=1, > > bugs.directory = "c:/Program Files/WinBUGS14/", debug = TRUE) > > ### birats example from winbugs > > model > { > for( i in 1 : N ) { > beta[i , 1:2] ~ dmnorm(mu.beta[], R[ , ]) > for( j in 1 : T ) { > Y[i , j] ~ dnorm(mu[i , j], tauC) > mu[i , j]<- beta[i , 1] + beta[i , 2] * x[j] > } > } > > mu.beta[1:2] ~ dmnorm(mean[],prec[ , ]) > R[1:2 , 1:2] ~ dwish(Omega[ , ], 2) > tauC ~ dgamma(0.001, 0.001) > sigma<- 1 / sqrt(tauC) > } > > ### the error message > > > Error in bugs(data, inits, model.file = "birats.bug", parameters.to.save > c("beta", : > Number of initialized chains (length(inits)) != n.chains >