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
}