 model{
 # J Ranta, K-M Siekkinen, L Nuotio, R Laukkanen, S Hellstr\"om, H Korkeala, R Maijala:
 # Causal Hidden Variable Model of Pathogenic Contamination From Pig to Pork. 
 # Statistical Modelling: an International Journal, 2008.
 # priors for 'emergence' parameters (hidden --> apparent in each site):
 pfaecal ~ dunif(0,1);  pintestinal ~ dunif(0,1)
 ppluck ~ dunif(0,1);   pcarcass ~ dunif(0,1);   ptonsils ~ dunif(0,1);
 # prior for environmental contamination:
 penviro ~ dunif(0,1)
 # prior precision of parameters:
 tau <- 1
 pii <- 3.1415926
 # parameters of SMAll,ORGanic,BIG and R1,R2
 # baseline is defined as SMAll&R1 (=a[1])
 q0ORGR1 <- a[1]+a[2]
 q0ORGR2 <- a[1]+a[2]     +a[4]
 q0SMAR1 <- a[1]
 q0SMAR2 <- a[1]          +a[4]
 q0BIGR1 <- a[1]     +a[3]
 q0BIGR2 <- a[1]     +a[3]+a[4]
 q0h[1] <- q0ORGR1; q0h[2] <- q0ORGR2; q0h[3] <- q0SMAR1
 q0h[4] <- q0SMAR2; q0h[5] <- q0BIGR1; q0h[6] <- q0BIGR2
 # priors for parameters for hidden status at farm:
 for(ai in 1:4){
 a[ai] ~ dnorm(0,tau)
 Laprior[ai]<- -0.5*tau*a[ai]*a[ai]+log(sqrt(tau))-log(sqrt(2*pii)) }

 # parameters of SMAll,ORGanic,BIG and R1,R2
 # baseline is defined as SMAll&R1 (=b[1])
 qORGR1 <- b[1]+b[2]
 qORGR2 <- b[1]+b[2]     +b[4]
 qSMAR1 <- b[1]
 qSMAR2 <- b[1]          +b[4]
 qBIGR1 <- b[1]     +b[3]
 qBIGR2 <- b[1]     +b[3]+b[4]
 qh[1] <- qORGR1; qh[2] <- qORGR2; qh[3] <- qSMAR1
 qh[4] <- qSMAR2; qh[5] <- qBIGR1; qh[6] <- qBIGR2
 # priors for parameters for hidden status at abattoir:
 for(bi in 1:5){
 b[bi] ~ dnorm(0,tau)
 Lbprior[bi]<- -0.5*tau*b[bi]*b[bi]+log(sqrt(tau))-log(sqrt(2*pii))}
 # b[5] = effect of being previously positive (at farm)

 # hyperprior for mean of the normal model of cross cont. effects
 gam ~ dnorm(0,0.1)
 Lgamprior <- -0.5*0.1*gam*gam+log(sqrt(0.1))-log(sqrt(2*pii))
 #------------------------------------------------------------
 # farm specific part starts here:
 for(f in 1:15){
 # prior for farm (animal group) specific random effect:
 f1[f] ~ dnorm(0,tau)
 f2[f] ~ dnorm(0,tau)
 Lfprior1[f]<- -0.5*tau*f1[f]*f1[f]
               +log(sqrt(tau))-log(sqrt(2*pii))#prior log-density
 Lfprior2[f]<- -0.5*tau*f2[f]*f2[f]
               +log(sqrt(tau))-log(sqrt(2*pii))#prior log-density
 # hierarchical prior for cross cont. effect:
 ex[f] <- exp(exn[f])
 exn[f] ~ dnorm(gam,1)I(-4.60517,4.60517)
 Lexnprior[f]<- -0.5*exn[f]*exn[f]-log(sqrt(2*pii))#prior log-density

 # pick the right parameters
 # according to the classifying variables:
 q0[f] <- q0ORGR1 * organic[f]*(1-risk[f]) +
          q0ORGR2 * organic[f]*risk[f]+
          q0BIGR1 * large[f]*(1-risk[f])+
          q0BIGR2 * large[f]*risk[f]+
          q0SMAR1 * small[f]*(1-risk[f])+
          q0SMAR2 * small[f]*risk[f]
 q[f] <-  qORGR1 * organic[f]*(1-risk[f]) +
          qORGR2 * organic[f]*risk[f]+
          qBIGR1 * large[f]*(1-risk[f])+
          qBIGR2 * large[f]*risk[f]+
          qSMAR1 * small[f]*(1-risk[f])+
          qSMAR2 * small[f]*risk[f]
 #----------------------------------------------------------------------
 # for monitoring:
 logit(zone2one[f]) <-  q[f] + b[5]# transition probability 1->1
 zone2zero[f] <- 1- zone2one[f]    # transition probability 1->0
 logit(zzero2one[f]) <-  q[f]      # transition probability 0->1
 zzero2zero[f] <- 1- zzero2one[f]  # transition probability 0->0

 # pig specific likelihood part starts here:
 for(i in 1:26){ # for every pig in the group of pigs.
 # hidden status at farm
 farm_true[f,i] ~ dbern(z[f,i])
 logit(z[f,i]) <- ( q0[f] + f1[f] )
 # apparent status of the ith pig at the 1st testing:
 faecal_combined[f,i] ~ dbern(p0app[f,i])
 p0app[f,i] <- farm_true[f,i]*pfaecal

 # hidden status at slaughter
 slaughter_true[f,i] ~ dbern(z1[f,i])
 logit(z1[f,i]) <- ( q[f] + farm_true[f,i]*b[5] + f2[f] )

# apparent status of the ith pig at the 2nd testing:
 slaughter_combined_intestinal[f,i] ~ dbern(p1appi[f,i])
 slaughter_combined_pluck[f,i]      ~ dbern(p1appp[f,i])
 slaughter_combined_carcass[f,i]    ~ dbern(p1appc[f,i])
 slaughter_combined_tonsils[f,i]    ~ dbern(p1appt[f,i])
 p1appi[f,i] <- slaughter_true[f,i]*pintestinal
 p1appp[f,i] <- 1-(1-slaughter_true[f,i]*ppluck)*(1-penviro)
 ep1appp[f,i] <- 1-(1-z1[f,i]*ppluck)*(1-penviro)
 p1appc[f,i] <- 1-(1-slaughter_true[f,i]*pcarcass)*(1-penviro)
 ep1appc[f,i] <- 1-(1-z1[f,i]*pcarcass)*(1-penviro)
 p1appt[f,i] <- slaughter_true[f,i]*ptonsils
 Lpiglikef[f,i]<-log(z[f,i]*pfaecal)*faecal_combined[f,i]+
                 log(1-z[f,i]*pfaecal)*(1-faecal_combined[f,i])
 Lpiglikei[f,i]<-log(z1[f,i]*pintestinal)*slaughter_combined_intestinal[f,i]+
          log(1-z1[f,i]*pintestinal)*(1-slaughter_combined_intestinal[f,i])
 Lpiglikep[f,i]<-log(ep1appp[f,i])*slaughter_combined_pluck[f,i]+
          log(1-ep1appp[f,i])*(1-slaughter_combined_pluck[f,i])
 Lpiglikec[f,i]<-log(ep1appc[f,i])*slaughter_combined_carcass[f,i]+
          log(1-ep1appc[f,i])*(1-slaughter_combined_carcass[f,i])
 Lpigliket[f,i]<-log(z1[f,i]*ptonsils)*slaughter_combined_tonsils[f,i]+
          log(1-z1[f,i]*ptonsils)*(1-slaughter_combined_tonsils[f,i])
 Lpiglike[f,i]<-Lpiglikef[f,i]+Lpiglikei[f,i]+Lpiglikep[f,i]+
                Lpiglikec[f,i]+Lpigliket[f,i]#pig specific log-likelihood
}
 farm_tm[f] <- mean(farm_true[f,])  #average hidden carriage, farm f.
 slaughter_tm[f] <- mean(slaughter_true[f,])
                    # average hidden slaughter carriage, farm f.
 Lfarmlike[f]<-sum(Lpiglike[f,])#log-likelihood, pigs from farm f.

 # expected carcass prevalence among pigs from farm f (prob of contamination):
 pm[f] <- mean(p1appc[f,])
 # odds of carcass contamination:
 pmodds[f] <- pm[f]/(1-pm[f])
 #----------------------------------------------------------------------------
 # likelihood part concerning meat samples:
 meat_sample_pos[f] ~ dbin(theta[f],meat_sample_n[f])
 Lmeatlike[f]<-log(theta[f])*meat_sample_pos[f]+
               log(1-theta[f])*(meat_sample_n[f]-meat_sample_pos[f])
 theta[f] <-pmodds[f]*ex[f]/(pmodds[f]*ex[f]+1)
 # risk ratio:
 rr[f] <- theta[f]/pm[f]
}
 # for monitoring purposes:
 Llikepigs<-sum(Lfarmlike[])#log-likelihood resulting from all pigs
 Llikemeat<-sum(Lmeatlike[])#log-likelihood resulting from meat sample data
 Lpriors<-sum(Laprior[])+sum(Lbprior[])+Lgamprior +
          sum(Lexnprior[]) +sum(Lfprior1[])+sum(Lfprior2[])
 Lposterior <- Llikepigs+Llikemeat+Lpriors  # log-posterior density
 rrm <- mean(rr[]); exm <- mean(ex[])

 #calculate chi^2 statistic using observed meat sample data from 10 farms:
 chif[1] <- pow(meat_sample_n[1]*theta[1]-meat_sample_pos[1],2)/
 (meat_sample_n[1]*theta[1]*(1-theta[1]))
 chif[2] <- pow(meat_sample_n[3]*theta[3]-meat_sample_pos[3],2)/
 (meat_sample_n[3]*theta[3]*(1-theta[3]))
 chif[3] <- pow(meat_sample_n[4]*theta[4]-meat_sample_pos[4],2)/
 (meat_sample_n[4]*theta[4]*(1-theta[4]))
 chif[4] <- pow(meat_sample_n[5]*theta[5]-meat_sample_pos[5],2)/
 (meat_sample_n[5]*theta[5]*(1-theta[5]))
 chif[5] <- pow(meat_sample_n[6]*theta[6]-meat_sample_pos[6],2)/
 (meat_sample_n[6]*theta[6]*(1-theta[6]))
 chif[6] <- pow(meat_sample_n[7]*theta[7]-meat_sample_pos[7],2)/
 (meat_sample_n[7]*theta[7]*(1-theta[7]))
 chif[7] <- pow(meat_sample_n[8]*theta[8]-meat_sample_pos[8],2)/
 (meat_sample_n[8]*theta[8]*(1-theta[8]))
 chif[8] <- pow(meat_sample_n[12]*theta[12]-meat_sample_pos[12],2)/
 (meat_sample_n[12]*theta[12]*(1-theta[12]))
 chif[9] <- pow(meat_sample_n[14]*theta[14]-meat_sample_pos[14],2)/
 (meat_sample_n[14]*theta[14]*(1-theta[14]))
 chif[10] <- pow(meat_sample_n[15]*theta[15]-meat_sample_pos[15],2)/
 (meat_sample_n[15]*theta[15]*(1-theta[15]))
 chi2 <- sum(chif[])

 # calculate mean&sd of farm specific effects over farms:
 meanf1 <- mean(f1[]);  tauf1  <- 1/(sd(f1[])*sd(f1[]))
 meanf2 <- mean(f2[]);  tauf2  <- 1/(sd(f2[])*sd(f2[]))
 # calculate mean&sd of log-cross cont. effects over farms:
 meanex <- mean(exn[]); tauex  <- 1/(sd(exn[])*sd(exn[]))

 # posterior predictions for 1 farm in each category:
 for(v in 1:6){    # categories
   # predict farm specific effect using mean&sd over farms:
   f1p[v] ~ dnorm(meanf1,tauf1)
   f2p[v] ~ dnorm(meanf2,tauf2)
 for(vv in 1:25){  # simulated animals
   xp[v,vv] ~ dbern(pxp[v,vv])
   logit(pxp[v,vv]) <- q0h[v]+f1p[v]
   xpf[v,vv] ~ dbern(pxpf[v,vv])
   pxpf[v,vv] <- xp[v,vv]*pfaecal
   yp[v,vv] ~ dbern(pyp[v,vv])
   logit(pyp[v,vv]) <- qh[v] + xp[v,vv]*b[5] + f2p[v]
   ypi[v,vv] ~ dbern(pypi[v,vv])
   pypi[v,vv] <- yp[v,vv]*pintestinal
   ypp[v,vv] ~ dbern(pypp[v,vv])
   pypp[v,vv] <- 1-(1-yp[v,vv]*ppluck)*(1-penviro)
   ypc[v,vv] ~ dbern(pypc[v,vv])
   pypc[v,vv] <- 1-(1-yp[v,vv]*pcarcass)*(1-penviro)
   ypt[v,vv] ~ dbern(pypt[v,vv])
   pypt[v,vv] <- yp[v,vv]*ptonsils }
   xpm[v] <- mean(xp[v,]);   xpfm[v] <- mean(xpf[v,])
   ypm[v] <- mean(yp[v,]);
   ypim[v] <- mean(ypi[v,]); yppm[v] <- mean(ypp[v,])
   ypcm[v] <- mean(ypc[v,]); yptm[v] <- mean(ypt[v,])

 # constructing a predictive check:
 pcfmv[v] <- step(xpfm[v]-xpfmo[v])
 pcimv[v] <- step(ypim[v]-ypimo[v]); pcpmv[v] <- step(yppm[v]-yppmo[v])
 pccmv[v] <- step(ypcm[v]-ypcmo[v]); pctmv[v] <- step(yptm[v]-yptmo[v])

 # predict meat prevalence from single farm
 mrep[v] ~ dbin(mp[v],25)
 mp[v] <- cpodds[v]*expred[v]/(cpodds[v]*expred[v] +1)
 cpodds[v] <- mean(pypc[v,])/(1-mean(pypc[v,]))
 expred[v] <- exp(expredlog[v])
 # predict log-cross cont. effect using mean&sd over farms:
 expredlog[v] ~ dnorm(meanex,tauex)

 # predict the expected causal effect of
 # reducing prevalence (using averages: exm & ecpodds):
   epypc[v] <- 1-(1-epyp[v]*pcarcass)*(1-penviro)
   logit(epyp[v]) <- qh[v] + pxpmean[v]*b[5]
   logit(pxpmean[v]) <- q0h[v]
   ecpodds[v] <- epypc[v]/(1-epypc[v])
 mp.base[v]<-ecpodds[v]*exm/(ecpodds[v]*exm +1)
 mp.causal.h[v]<-ecpodds[v]*exm*cau.eff.head/(ecpodds[v]*exm*cau.eff.head+1)
 mp.causal.r[v]<-ecpodds[v]*exm*cau.eff.rect/(ecpodds[v]*exm*cau.eff.rect+1)
 mp.causal.hr[v]<-ecpodds[v]*exm*cau.eff.head*cau.eff.rect/denominator[v]
 denominator[v]<-(ecpodds[v]*exm*cau.eff.head*cau.eff.rect +1)
 }
 # effect of removing head:
 p.test.batch.head ~ dbeta(167, 485)
 p.control.batch.head ~ dbeta(187,322)
 cau.eff.head <- (p.test.batch.head/(1-p.test.batch.head))/denominatorH
 denominatorH <- (p.control.batch.head/(1-p.control.batch.head))
 # effect of sealing off rectum (based on Y.enterocolitica & L.innocua):
 p.test.batch.rect ~ dbeta(8,174)
 p.control.batch.rect ~ dbeta(33,148)
 cau.eff.rect <- (p.test.batch.rect/(1-p.test.batch.rect))/denominatorR
 denominatorR <- (p.control.batch.rect/(1-p.control.batch.rect))

 pcfm <- mean(pcfmv[]); pcim <- mean(pcimv[]); pcpm <- mean(pcpmv[])
 pccm <- mean(pccmv[]); pctm <- mean(pctmv[])
 pcheck <- (pcfm+pcim+pcpm+pccm+pctm)/5         }

# Data:   if you run the model by using winbugs script (batch mode), you 
# need to put the model code and data and initial values in separate files 
# that will be called from the script.
list(risk=c(1,0,1,1,0,0,1,0,1,0,1,0,0,1,0),
  organic=c(1,0,0,1,0,0,1,0,0,1,0,0,1,0,0),
    small=c(0,1,0,0,1,0,0,1,0,0,1,0,0,1,0),
    large=c(0,0,1,0,0,1,0,0,1,0,0,1,0,0,1),
  faecal_combined=structure(.Data=c(
  1,1,1,0,1,1,0,0,0,1,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  1,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,NA,
  0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,NA,NA,NA,
  0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,NA,NA,NA,NA,
  0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,NA,
  1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,NA,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,NA,NA,NA),
  .Dim=c(15,26)),
  slaughter_combined_intestinal=structure(.Data=c(
  0,0,0,1,1,1,1,0,0,0,0,1,NA,0,1,1,0,1,0,0,0,0,0,0,1,NA,
  1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  NA,1,NA,0,NA,1,NA,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,1,NA,
  0,1,0,0,NA,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,NA,
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,NA,NA,NA,
  0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,1,NA,NA,NA,NA,
  0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,NA,
  0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,NA,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,NA,NA,NA,NA,NA),
  .Dim=c(15,26)),
  slaughter_combined_pluck=structure(.Data=c(
  0,0,1,0,0,0,0,1,0,0,0,0,NA,0,1,0,0,0,1,1,0,0,0,0,0,NA,
  0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,NA,
  NA,0,NA,NA,NA,0,NA,NA,0,1,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,NA,
  1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,NA,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,
  0,0,0,0,NA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,NA,
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,NA,NA,NA,NA,NA,
  0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,NA,NA,NA,NA,
  0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,NA,0,0,0,1,0,1,1,0,0,NA,
  0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,NA,NA,
  NA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,NA,NA,NA,NA,NA),
  .Dim=c(15,26)),
  slaughter_combined_tonsils=structure(.Data=c(
  1,1,0,0,1,1,0,0,0,0,1,1,NA,1,1,0,1,0,1,1,1,1,0,0,1,NA,
  0,1,1,1,0,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,NA,
  NA,1,NA,NA,NA,1,NA,NA,NA,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,NA,
  1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,0,0,1,NA,1,1,1,1,NA,
  0,0,0,NA,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,0,NA,
  1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,0, NA,
  1,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,
  0,0,0,0,NA,0,0,0,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,1,1,NA,
  1,1,1,0,1,1,1,1,NA,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,NA,
  1,1,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,0,0,0,1,NA,NA,NA,NA,NA,
  1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0,0,0,1,NA,NA,NA,NA,
  1,0,1,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,NA,
  1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,NA,NA,
  0,0,0,0,1,0,0,1,0,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,NA,
  0,1,0,0,1,1,0,0,1,1,0,0,1,NA,0,1,1,0,0,1,0,NA,NA,NA,NA,NA),
  .Dim=c(15,26)),
  slaughter_combined_carcass=structure(.Data=c(
  1,1,1,1,0,0,0,0,0,0,0,0,NA,1,1,0,1,0,0,1,0,0,0,0,1,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  NA,1,NA,0,NA,0,NA,0,1,1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,NA,NA,NA,
  1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,NA,NA,NA,NA,
  0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NA,NA,NA,NA,NA),
  .Dim=c(15,26)),
  meat_sample_n=c(20,1,15,20,10,15,20,10,1,1,1,15,1,15,15),
  meat_sample_pos=c(0,NA,0,0,0,3,3,0,NA,NA,NA,0,NA,0,0),
  xpfmo=c(0.1778,0.2895,0,0.0426,0.1690,0.24),
  ypimo=c(0.0889,0.1622,0.0133,0.1489,0.2958,0.2174),
  yppmo=c(0.1333,0.2667,0.0685,0.087,0.1286,0.2955),
  ypcmo=c(0.0444,0.1467,0,0.0851,0.0563,0.2826),
  yptmo=c(0.7778,0.5811,0.4167,0.4468,0.5286,0.8571))
 # Initial values 1:
 list(a=c(0,0,0,0),b=c(0,0,0,0,0))
 # Initial values 2:
 list(a=c(1,1,1,1),b=c(1,1,1,1,1))
 # Initial values 3:
 list(a=c(-1,-1,-1,-1),b=c(-1,-1,-1,-1,-1))