Appendix S1: Online Supplementary Materials for “Ectoparasite infestation patterns of domestic dogs in suburban and rural areas in Borneo”

Model code (OpenBUGS) for investigating the impact of environmental covariates and spatial location on ectoparasite infestation patterns of dogs. Note that model is separated fitted to data (“obsEcto”) of the different groups of flea, lice, and ticks.

model

{

for (i in 1:Ndogs) {

# Linking count data of different ectoparasites (fleas, lice, ticks, respectively) to model

obsEcto[i] ~ dpois(lambdaEcto[i])

# Observation model; note that data are modelled on log-scale

log(lambdaEcto[i]) <- muEcto[i]

muEcto[i] ~dnorm(EctoNo[i], tau.V)

# Process model included environmental covariates and spatial random effect W

EctoNo[i] <- IntEcto

# environmental covariates

+ beta[1] * bodysize[i]

+ beta[2] * dogdensity[i]

+ beta[3] * forest[i]

+ beta[4] * humandensity[i]

+ beta[5] * elevation[i]

+ b.age[age[i]]

+ b.sex[sex[i]]

+ b.housetype[housetype[i]]

+ b.treatment[treatment[i]]

+ b.ground[ground[i]]

+ b.habitatuse[habitatuse[i]]

+ b.hunting[hunting[i]]

+ W[i]

muW[i] <- 0

# Put priors on covariates for imputing missing data

bodysize[i] ~ dnorm(0,1)

dogdensity[i] ~ dnorm(0,1)

elevation[i] ~ dnorm(0,1)

forest[i] ~ dnorm(0,1)

humandensity[i] ~ dnorm(0,1)

coordE[i] ~ dnorm(0,1)

coordN[i] ~ dnorm(0,1)

housetype[i] ~ dcat(p.housetype[])

treatment[i] ~ dcat(p.treatment[])

ground[i] ~ dcat(p.ground[])

habitatuse[i] ~ dcat(p.habitatuse[])

hunting[i] ~ dcat(p.hunting[])

age[i] ~ dcat(p.age[])

sex[i] ~ dcat(p.sex[])

}

# Kriging model for spatial random effect (multivariate Gaussian distribution with covariance expressed as a parametric funtion of distance between pairs of points; see Banerjee et al. 2004 chpt 5)

W[1:Ndogs] ~ spatial.exp(muW[], coordE[], coordN[], tau.spatial, phi,kappa)

# spatial smoothing parameter kappa

kappa <- 1

# scalar parameter phi representing the rate of decline of correlation with distance

phi ~dgamma(1,0.1)

tau.spatial ~ dgamma(1, 0.1)

for(i in 1:4){

p.housetype[i] <- 1/n.housetype # n.housetype=4

p.habitatuse[i] <- 1/n.habitatuse # n.habitatuse=4

}

for(i in 1:2){

p.ground[i] <- 1/n.ground # n.treattime=2

p.hunting[i] <- 1/n.hunting # n.hunting=2

p.sex[i ] <- 1/n.sex# n.sex=2

}

for(i in 1:3){

p.age[i] <- 1/n.age # n.age=3

}

for(i in 1:6){

p.treatment[i] <- 1/n.treatment # n.treatment=6

}

for(l in 1:6){p[l] <- 1}

IntEcto ~ dnorm(0,0.1)

tau.V ~ dgamma(1, 0.1)

# Prior for coefficients

for(b in 1 : 5) {

beta[b] ~ dnorm(mu.beta[b], tau.beta[b])

mu.beta[b] ~ dnorm(0,0.1)

tau.beta[b] <- pow(sd.beta[b], -2); sd.beta[b] ~ dunif(0, 10)

}

for(a in 1 : n.age) {

b.age[a] ~ dnorm(0, tau.age)

b.age.Star[a] <- b.age[a] - mean(b.age[])

}

for(s in 1 : n.sex) {

b.sex[s] ~ dnorm(0, tau.sex)

b.sex.Star[s] <- b.sex[s] - mean(b.sex[])

}

for(h in 1 : n.housetype) {

b.housetype[h] ~ dnorm(0, tau.housetype)

b.housetype.Star[h] <- b.housetype[h] - mean(b.housetype[])

}

for(t in 1 : n.treatment) {

b.treatment[t] ~ dnorm(0, tau.treatment)

b.treatment.Star[t] <- b.treatment[t] - mean(b.treatment[])

}

for(z in 1 : n.ground) {

b.ground[z] ~ dnorm(0, tau.ground)

b.ground.Star[z] <- b.ground[z] - mean(b.ground[])

}

for(u in 1 : n.habitatuse) {

b.habitatuse[u] ~ dnorm(0, tau.habitatuse)

b.habitatuse.Star[u] <- b.habitatuse[u] - mean(b.habitatuse[])

}

for(j in 1 : n.hunting) {

b.hunting[j] ~ dnorm(0, tau.hunting)

b.hunting.Star[j] <- b.hunting[j] - mean(b.hunting[])

}

tau.age <- pow(sd.age, -2); sd.age ~ dunif(0, 10)

tau.sex <- pow(sd.sex, -2); sd.sex ~ dunif(0, 10)

tau.housetype <- pow(sd.housetype, -2); sd.housetype ~ dunif(0, 10)

tau.treatment <- pow(sd.treatment, -2); sd.treatment ~ dunif(0, 10)

tau.ground <- pow(sd.ground, -2); sd.ground ~ dunif(0, 10)

tau.habitatuse <- pow(sd.habitatuse, -2); sd.habitatuse ~ dunif(0, 10)

tau.hunting <- pow(sd.hunting, -2); sd.hunting ~ dunif(0, 10)

# Calculate variance and the proportion of overall variance explained by each term

Var.V <- 1 / tau.V

Var.spatial <- 1/tau.spatial

for(b in 1 : 5) {

Var.beta[b] <- beta[b] * beta[b]

}

Var.age <- pow(sd(b.age.Star[1 : n.age]), 2)

Var.sex <- pow(sd(b.sex.Star[1 : n.sex]), 2)

Var.housetype <- pow(sd(b.housetype.Star[1 : n.housetype]), 2)

Var.treatment <- pow(sd(b.treatment.Star[1 : n.treatment]), 2)

Var.ground <- pow(sd(b.ground.Star[1 : n.ground]), 2)

Var.habitatuse <- pow(sd(b.habitatuse.Star[1 : n.habitatuse]), 2)

Var.hunting <- pow(sd(b.hunting.Star[1 : n.hunting]), 2)

Var.total <- Var.V + Var.spatial + Var.beta[1] + Var.beta[2] + Var.beta[3] + Var.beta[4] + Var.beta[5] + Var.age + Var.sex + Var.housetype + Var.treatment + Var.ground + Var.habitatuse + Var.hunting

VarProp.V <- Var.V / Var.total

VarProp.spatial <- Var.spatial / Var.total

VarProp.bodysize <- Var.beta[1] / Var.total

VarProp.dogdensity <- Var.beta[2] / Var.total

VarProp.forest <- Var.beta[3] / Var.total

VarProp.humandensity <- Var.beta[4] / Var.total

VarProp.elevation <- Var.beta[5] / Var.total

VarProp.age <- Var.age / Var.total

VarProp.sex <- Var.sex / Var.total

VarProp.housetype <- Var.housetype / Var.total

VarProp.treatment <- Var.treatment / Var.total

VarProp.ground <- Var.ground / Var.total

VarProp.habitatuse <- Var.habitatuse / Var.total

VarProp.hunting <- Var.hunting / Var.total

}