allows p < 1 (Panel 9.2). `panel9pt2.fn` <- function(ni=1100,nb=100,nt=2,nc=3){ # this script fits the model given in Panel 9.2 to the crossbill data from # the Swiss bird survey. The model allows p < 1. library("R2WinBUGS") sink("model.txt") cat(" model { psi~dunif(0,1) for(i in 1:(nyear-1)){ gamma[i]~dunif(0,1) phi[i]~dunif(0,1) p[i]~dunif(0,1) } p[nyear]~dunif(0,1) for(i in 1:nsite){ z[i,1]~dbern(psi) for(t in 2:nyear){ muZ[i,t]<- z[i,t-1]*phi[t-1] + (1-z[i,t-1])*gamma[t-1] z[i,t]~dbern(muZ[i,t]) } } for (t in 1:nyear){ for(i in 1:nsite){ for(j in 1:nrep){ Py[i,j,t]<- z[i,t]*p[t] y[i,j,t] ~ dbern(Py[i,j,t]) } } } psivec[1]<-psi psi.fs[1]<-sum(z[1:nsite,1])/nsite for(t in 2:nyear){ psivec[t]<-psivec[t-1]*phi[t-1] + (1-psivec[t-1])*gamma[t-1] psi.fs[t]<-sum(z[1:nsite,t])/nsite turnover[t-1]<- ((1 - psivec[t-1]) * gamma[t-1])/( (1 - psivec[t-1]) * gamma[t-1] + phi[t-1]*psivec[t-1]) } } ",fill=TRUE) sink() data<-crossbill.data y<-data$data y[y>1]<-1 Zst<-data$Zmat nsite<-dim(y)[1] nrep<-3 nyear<-4 pst<-c(.5,.5,.5,.5) data <- list ( "y","nsite","nrep","nyear") inits <- function() list (p=pst,z=Zst) parameters <- c("p","gamma","phi") out <- bugs (data, inits, parameters, "model.txt", n.thin=nt,n.chains=nc, n.burnin=nb,n.iter=ni,debug=TRUE) return(out) }