[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