`panel6pt3.fn` <- function(ni=31000,nb=1000,nthin=5,nc=2,nz=60){ # This R script fits a closed population model with an individual # covariate by data augmentation in WinBUGS. Uses the microtus data # with individual covariate "body mass" library("R2WinBUGS") y<-microtus.data[,1:5] mass<-microtus.data[,6] nind<-nrow(y) J<-ncol(y) y<-apply(y,1,sum) # standardize covariate -- always do this. mass<- (mass-mean(mass))/sqrt(var(mass)) # data augmentation -- pad encounter vector with zeros and covariate # with missing values y<-c(y,rep(0,nz)) mass<-c(mass,rep(NA,nz)) sink("winbugsmodel.txt") cat("model { psi~dunif(0,1) mu~dnorm(0,.001) tau~dgamma(.001,.001) sigma<-sqrt(1/tau) a0~dnorm(0,.1) a1~dnorm(0,.1) for(i in 1:(nind+nz)){ mass[i]~dnorm(mu,tau) ###I(-12,12) z[i]~dbern(psi) #ff[i]<-z[i]+1 logit(p[i])<- a0+a1*mass[i] muy[i]<-z[i]*p[i] y[i]~dbin(muy[i],J) } N<-sum(z[1:(nind+nz)]) } ",fill=TRUE) sink() data <- list ("y","nind","nz","mass","J") inits <- function(){ list ( mu=rnorm(1), tau=runif(1,0,5), a0=rnorm(1), a1=rnorm(1), psi=runif(1),z=rbinom(length(mass),1,.5)) } parameters <- c("N","a0","a1","mu","sigma","psi") out <- bugs (data, inits, parameters, "winbugsmodel.txt", n.thin=nthin,n.chains=nc, n.burnin=nb,n.iter=ni,debug=FALSE) out }