#---------------------------------------------------------------------------------------------------------------------
# DATA LOAD
rm(list=ls())
xdata=read.csv(file="Data_Chimpanzee_Behavioural_Diversity.txt", header=T,sep=";", comment.char="", as.is=T, quote="")
xdata.ori=xdata
#----------------------------------------------------------------------------------------------------------------------
# DATA PREPARATION 
xdata.ori$Pan_tr_subspecies=relevel(as.factor(xdata.ori$Pan_tr_subspecies), "verus")
xdata=subset(xdata.ori, xdata.ori$obs.pos==1)
xdata$z.sq.refcdist=scale(sqrt(xdata$refcdist))
xdata$z.ObsM=scale(xdata$ObsM)
xdata$z.footprint=scale(xdata$footprint)
#----------------------------------------------------------------------------------------------------------------------
# LOAD PACKAGE & SETTING PRIORS 
library(brms)
options (mc.cores=parallel::detectCores ())
prior_default = c(set_prior("normal(0,1)", class = "lscale"),
                  set_prior("normal(0,1)", class = "sdgp")
)
prior_weak = c(set_prior("normal(0,1)", class = "lscale"),
               set_prior("normal(0,1)", class = "sdgp"),
               set_prior("normal(0,1)", class = "b"),
               set_prior("normal(0,1)", class = "b", coef = "z.sq.refcdist"),
               set_prior("normal(0,1)", class = "b", coef = "z.footprint"),
               set_prior("normal(0,1)", class = "b", coef = "z.ObsM")
)
prior_wide = c(set_prior("normal(0,1)", class = "lscale"),
               set_prior("normal(0,1)", class = "sdgp"),
               set_prior("normal(0,10)", class = "b"),
               set_prior("normal(0,10)", class = "b", coef = "z.sq.refugdist"),
               set_prior("normal(0,10)", class = "b", coef = "z.footprint"),
               set_prior("normal(0,10)", class = "b", coef = "z.obstime")
)
#----------------------------------------------------------------------------------------------------------------------
# RUN MODEL 
RES.BRM.B.all=brm(obs.yn ~ z.sq.refcdist + z.footprint + z.ObsM + Pan_tr_subspecies  
+ gp(long, lat, gr=T) #+(1|commu)
+(1+z.sq.refcdist + z.footprint + z.ObsM|Site)
+(1+z.sq.refcdist + z.footprint + z.ObsM + Pan_tr_subspecies|Behavior)
, data=xdata, family=bernoulli, prior = prior_weak,
sample_prior = TRUE,warmup = 1000,iter = 2000, chains = 4,control = list(adapt_delta = 0.99, max_treedepth = 16))

#----------------------------------------------------------------------------------------------------------------------
# MODEL RESULT 
# > summary(RES.BRM.B.all)
 # Family: bernoulli 
  # Links: mu = logit 
# Formula: obs.yn ~ z.sq.refcdist + z.footprint + z.ObsM + Pan_tr_subspecies + gp(long, lat, gr = T) + (1 + z.sq.refcdist + z.footprint + z.ObsM | Site) + (1 + z.sq.refcdist + z.footprint + z.ObsM + Pan_tr_subspecies | Behavior) 
   # Data: xdata (Number of observations: 4402) 
# Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
         # total post-warmup samples = 4000

# Gaussian Process Terms: 
                  # Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
# sdgp(gplonglat)       0.71      0.17     0.37     1.02        631 1.01
# lscale(gplonglat)     0.00      0.00     0.00     0.00       1383 1.00

# Group-Level Effects: 
# ~Behavior (Number of levels: 31) 
                                                                  # Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
# sd(Intercept)                                                         1.92      0.36     1.31     2.73       1411 1.00
# sd(z.sq.refcdist)                                                     0.76      0.17     0.47     1.14       1282 1.00
# sd(z.footprint)                                                       0.13      0.10     0.00     0.36       2499 1.00
# sd(z.ObsM)                                                            0.80      0.17     0.51     1.20       2447 1.00
# sd(Pan_tr_subspeciesellioti)                                          2.16      0.74     0.98     3.84       2239 1.00
# sd(Pan_tr_subspeciesschweinfurthii)                                   2.17      0.49     1.36     3.27       2794 1.00
# sd(Pan_tr_subspeciestroglodytes)                                      2.98      0.63     1.98     4.42       2560 1.00
# cor(Intercept,z.sq.refcdist)                                         -0.17      0.22    -0.57     0.27       2469 1.00
# cor(Intercept,z.footprint)                                            0.09      0.34    -0.59     0.70       6318 1.00
# cor(z.sq.refcdist,z.footprint)                                        0.18      0.36    -0.54     0.79       6383 1.00
# cor(Intercept,z.ObsM)                                                 0.03      0.20    -0.35     0.41       3268 1.00
# cor(z.sq.refcdist,z.ObsM)                                             0.04      0.22    -0.39     0.47       2292 1.00
# cor(z.footprint,z.ObsM)                                              -0.03      0.34    -0.66     0.64        420 1.01
# cor(Intercept,Pan_tr_subspeciesellioti)                               0.04      0.25    -0.44     0.51       4140 1.00
# cor(z.sq.refcdist,Pan_tr_subspeciesellioti)                           0.32      0.26    -0.23     0.78       2826 1.00
# cor(z.footprint,Pan_tr_subspeciesellioti)                             0.15      0.34    -0.54     0.76        933 1.00
# cor(z.ObsM,Pan_tr_subspeciesellioti)                                  0.11      0.25    -0.37     0.57       3583 1.00
# cor(Intercept,Pan_tr_subspeciesschweinfurthii)                       -0.09      0.20    -0.47     0.30       3116 1.00
# cor(z.sq.refcdist,Pan_tr_subspeciesschweinfurthii)                    0.21      0.22    -0.24     0.63       2560 1.00
# cor(z.footprint,Pan_tr_subspeciesschweinfurthii)                      0.10      0.35    -0.60     0.71        491 1.00
# cor(z.ObsM,Pan_tr_subspeciesschweinfurthii)                           0.20      0.22    -0.24     0.60       2810 1.00
# cor(Pan_tr_subspeciesellioti,Pan_tr_subspeciesschweinfurthii)         0.40      0.23    -0.08     0.78       2151 1.00
# cor(Intercept,Pan_tr_subspeciestroglodytes)                          -0.11      0.19    -0.47     0.28       3792 1.00
# cor(z.sq.refcdist,Pan_tr_subspeciestroglodytes)                       0.15      0.22    -0.28     0.56       3031 1.00
# cor(z.footprint,Pan_tr_subspeciestroglodytes)                         0.13      0.34    -0.54     0.71        417 1.01
# cor(z.ObsM,Pan_tr_subspeciestroglodytes)                              0.35      0.20    -0.06     0.69       3397 1.00
# cor(Pan_tr_subspeciesellioti,Pan_tr_subspeciestroglodytes)            0.53      0.19     0.10     0.84       2786 1.00
# cor(Pan_tr_subspeciesschweinfurthii,Pan_tr_subspeciestroglodytes)     0.35      0.20    -0.06     0.69       3635 1.00

# ~Site (Number of levels: 107) 
                               # Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
# sd(Intercept)                      0.45      0.27     0.02     1.00        540 1.00
# sd(z.sq.refcdist)                  0.64      0.27     0.07     1.13        557 1.00
# sd(z.footprint)                    0.19      0.15     0.01     0.58       1426 1.00
# sd(z.ObsM)                         0.83      0.28     0.37     1.44       1205 1.00
# cor(Intercept,z.sq.refcdist)       0.09      0.40    -0.68     0.81        579 1.01
# cor(Intercept,z.footprint)         0.06      0.45    -0.80     0.85       3880 1.00
# cor(z.sq.refcdist,z.footprint)     0.05      0.45    -0.79     0.83       3842 1.00
# cor(Intercept,z.ObsM)              0.08      0.43    -0.75     0.82        990 1.00
# cor(z.sq.refcdist,z.ObsM)         -0.19      0.39    -0.84     0.65        950 1.01
# cor(z.footprint,z.ObsM)            0.01      0.44    -0.80     0.79       1472 1.00

# Population-Level Effects: 
                                # Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
# Intercept                          -4.24      0.47    -5.18    -3.35       1640 1.00
# z.sq.refcdist                       0.52      0.23     0.07     0.98       2909 1.00
# z.footprint                        -0.25      0.16    -0.58     0.04       3359 1.00
# z.ObsM                              0.87      0.30     0.29     1.48       3539 1.00
# Pan_tr_subspeciesellioti            0.12      0.69    -1.29     1.41       4516 1.00
# Pan_tr_subspeciesschweinfurthii    -0.11      0.51    -1.13     0.87       3607 1.00
# Pan_tr_subspeciestroglodytes        0.15      0.64    -1.16     1.40       4044 1.00

# Samples were drawn using sampling(NUTS). For each parameter, Eff.Sample 
# is a crude measure of effective sample size, and Rhat is the potential 
# scale reduction factor on split chains (at convergence, Rhat = 1).
# > 
# > ##################################################################################################################################





