Thanks! Jean
Uwe Ligges <lig...@statistik.tu-dortmund.de> wrote on 05/26/2012 09:30:28 AM: > > On 23.05.2012 17:20, Jean V Adams wrote: > > I'm trying to understand how a latent state matrix is updated by the MCMC > > iterations in a WinBUGS model, using the package R2WinBUGS and an example > > from Kery and Schaub's (2012) book, "Bayesian Population Analysis Using > > WinBUGS". The example I'm using is 7.3.1. from a chapter on the > > Cormack-Jolly-Seber model. Some excerpted code is included at the end of > > this message; the full code is available at > > > > http://www.vogelwarte.ch/downloads/files/publications/BPA/bpa-code.txt > > > > The latent state of individual i on occasion t is stored in the z matrix > > where rows index individuals (owls that are marked and released) and > > columns index capture occasions. Each value in the matrix represents the > > latent state for individual i at occasion t: z[i,t]=0 if individual i is > > dead at time t, and =1 if individual i is alive at time t. > > > > In the example, a matrix of known values for z is created from the capture > > histories and provided as data; I will call it known.z. And a matrix of > > initial values (where z is unknown) is also created and provided; I will > > call it init.z. The dimensions of these two matrices are 250 individuals > > by 6 capture occasions. However, if I save z as a parameter of interest, > > the dimensions of the last saved z matrix from the last chain, > > last.z<- cjs.c.c$last.values[[cjs.c.c$n.chains]]$z, > > are 217 by 5. Why are the dimensions different? What happened to the > > other 33 rows (individuals) and 1 column (occasion)? I thought perhaps > > that the missing rows corresponded to those rows where all the latent > > states are known, but that does not appear to be the case. There were no > > individuals with 6 known latent states, and only 4 (not 33) with 5: > > table(apply(!is.na(known.z), 1, sum)) > > 0 1 2 3 4 5 > > 162 39 27 14 4 4 > > > > Also, how can I verify that the known values of z are maintained in the > > iterated z matrices? Even with the loss of 33 rows, those individuals > > with 5 known 1=alive latent states don't seem to line up. > > seq(known.z[,1])[apply(known.z[,-1], 1, paste, collapse="")=="11111"] > > [1] 2 6 17 46 > > seq(last.z[,1])[apply(last.z, 1, paste, collapse="")=="11111"] > > [1] 1 26 110 112 115 116 > > > > I would appreciate any insight you might have to offer. I am experienced > > with R, but relatively inexperienced with WinBUGS and the R2WinBUGS > > package. I am using R 2.15.0, R2WinBUGS 2.1-18, and WinBUGS 1.4.3 on > > Windows 7. > > R2WinBUGS is just an interface package for R that exports data, calls > WinBUGS and imports the results. > For BUGS related questions, i.e. in particular the correct specification > of the model (file), I'd recommend to ask on the BUGS related mailing lists. > > Note that the new version of WinBUGS is called OpenBUGS and the is a > more "direct" R interface called BRugs. > > Best, > Uwe Ligges > > > > Thanks. > > > > Jean > > > > > > > >> init.z[1:10, ] > > [,1] [,2] [,3] [,4] [,5] [,6] > > [1,] NA 0 0 0 0 0 > > [2,] NA NA NA NA NA NA > > [3,] NA NA 0 0 0 0 > > [4,] NA 0 0 0 0 0 > > [5,] NA 0 0 0 0 0 > > [6,] NA NA NA NA NA NA > > [7,] NA 0 0 0 0 0 > > [8,] NA NA 0 0 0 0 > > [9,] NA NA NA 0 0 0 > > [10,] NA NA NA 0 0 0 > > > >> known.z[1:10, ] > > [,1] [,2] [,3] [,4] [,5] [,6] > > [1,] NA NA NA NA NA NA > > [2,] NA 1 1 1 1 1 > > [3,] NA 1 NA NA NA NA > > [4,] NA NA NA NA NA NA > > [5,] NA NA NA NA NA NA > > [6,] NA 1 1 1 1 1 > > [7,] NA NA NA NA NA NA > > [8,] NA 1 NA NA NA NA > > [9,] NA 1 1 NA NA NA > > [10,] NA 1 1 NA NA NA > > > >> last.z[1:10, ] > > [,1] [,2] [,3] [,4] [,5] > > [1,] 1 1 1 1 1 > > [2,] 0 0 0 0 1 > > [3,] 0 0 0 0 1 > > [4,] 0 0 0 0 0 > > [5,] 0 0 0 0 1 > > [6,] 1 1 1 0 0 > > [7,] 0 0 0 0 0 > > [8,] 0 0 0 0 1 > > [9,] 0 0 0 0 0 > > [10,] 0 0 0 0 0 > > > > model { > > # Priors and constraints > > for (i in 1:nind){ > > for (t in f[i]:(n.occasions-1)){ > > phi[i,t]<- mean.phi > > p[i,t]<- mean.p > > } #t > > } #i > > > > mean.phi ~ dunif(0, 1) # Prior for mean survival > > mean.p ~ dunif(0, 1) # Prior for mean recapture > > # Likelihood > > for (i in 1:nind){ > > # Define latent state at first capture > > z[i,f[i]]<- 1 > > for (t in (f[i]+1):n.occasions){ > > # State process > > z[i,t] ~ dbern(mu1[i,t]) > > mu1[i,t]<- phi[i,t-1] * z[i,t-1] > > # Observation process > > y[i,t] ~ dbern(mu2[i,t]) > > mu2[i,t]<- p[i,t-1] * z[i,t] > > } #t > > } #i > > } > > > > # Call WinBUGS from R > > cjs.c.c<- bugs( > > data = list(z = known.z,<snipped>), > > inits = list(z = init.z,<snipped>), > > parameters.to.save = c("z",<snipped>), > > <snipped> > > ) [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.