[R] birats example with R2WinBugs
Uwe Ligges
ligges at statistik.tu-dortmund.de
Sun Dec 20 19:49:12 CET 2009
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
>
More information about the R-help
mailing list