MultiSpeciesOcc.knownN = function() { Ymat = as.matrix(read.csv('detectionFreq.NH17.csv')) #Ymat = as.matrix(read.csv('detectionFreq.AL17.csv')) nrepls = 11 start.time = Sys.time() n = dim(Ymat)[1] nsites = dim(Ymat)[2] # create arguments for bugs() data = list(n=n, R=nsites, J=nrepls, Y=Ymat) params = list('alpha', 'beta', 'rho', 'sigma.u', 'sigma.v','phi','eta') inits = function() { psi.meanGuess = runif(1, .25,1) p.meanGuess = runif(1, .25,1) rhoGuess = runif(1, 0,1) sigma.uGuess = runif(1,0,1.5) sigma.vGuess = runif(1,0,1.5) list(psi.mean=psi.meanGuess, p.mean=p.meanGuess, sigma.u=sigma.uGuess, sigma.v=sigma.vGuess, rho=rhoGuess, phi=rnorm(n, log(psi.meanGuess/(1-psi.meanGuess)), sigma.uGuess), eta=rnorm(n, log(p.meanGuess/(1-p.meanGuess)), sigma.vGuess), Z = matrix(rbinom(n*nsites, size=1, prob=psi.meanGuess), nrow=n) ) } modelFilename = "MultiSpeciesOccModelKnownN.txt" cat(" model { psi.mean ~ dunif(0,1) beta <- log(psi.mean) - log(1-psi.mean) p.mean ~ dunif(0,1) alpha <- log(p.mean) - log(1-p.mean) sigma.u ~ dunif(0,10) sigma.v ~ dunif(0,10) tau.u <- pow(sigma.u,-2) tau.v <- pow(sigma.v,-2) rho ~ dunif(-1,1) var.eta <- tau.v/(1.-pow(rho,2)) for (i in 1:n) { phi[i] ~ dnorm(beta, tau.u) mu.eta[i] <- alpha + (rho*sigma.v/sigma.u)*(phi[i] - beta) eta[i] ~ dnorm(mu.eta[i], var.eta) logit(psi[i]) <- phi[i] logit(p[i]) <- eta[i] for (k in 1:R) { Z[i,k] ~ dbern(psi[i]) mu.p[i,k] <- p[i]*Z[i,k] Y[i,k] ~ dbin(mu.p[i,k], J) } } } ", fill=TRUE, file=modelFilename) # fit model to data using WinBUGS code library(R2WinBUGS) fit = bugs(data, inits, params, modelFilename, n.chains=5, n.iter=55000, n.burnin=5000, n.thin=50, bugs.seed=sample(1:9999,size=1), debug=FALSE, DIC=FALSE) end.time = Sys.time() elapsed.time = difftime(end.time, start.time, units='mins') cat(paste(paste('Posterior computed in ', elapsed.time, sep=''), ' minutes\n', sep='')) fit }