# Multi species single season with a list of models

# Co-occurence of Grizzly and black bears as measured by camera
#
# Data from
#   Ladle A, Steenweg R, Shepherd B, Boyce MS (2018)
#   The role of human outdoor recreation in shaping patterns of grizzly bear-black 
#   bear co-occurrence. 
#   PLOS ONE 13(2): e0191730. https://doi.org/10.1371/journal.pone.0191730

#   Ladle A, Steenweg R, Shepherd B, Boyce MS (2018)
#   Data from: The role of human outdoor recreation in shaping patterns of 
#   grizzly bear-black bear co-occurrence. 
#   Dryad Digital Repository. https://doi.org/10.5061/dryad.s81k3

# Briefly,
# Cameras placed on trails in summer 2014
# Classified images as type of bear and type of human activity.

# 2020-06-24 CJS real$rho and real$nu now in derived$
# 2018-12-26 Code contributed by Carl James Schwarz (cschwarz.stat.sfu.cs@gmail.com)
library(ggplot2)
library(readxl)
library(reshape2)
library(RPresence)

# get the data. Sites x # of detections grouped into 4 day intervals
gb.data <- read.csv(file.path("..","Raw data","four_day_grizzly.csv"), header=FALSE, strip.white=TRUE, as.is=TRUE)
bb.data <- read.csv(file.path("..","Raw data","four_day_black.csv"),   header=FALSE, strip.white=TRUE, as.is=TRUE)

# Notice that in some days, more than 1 detection recorded.
range(gb.data, na.rm=TRUE)
## [1] 0 6
apply(gb.data, 1, max, na.rm=TRUE)
##   [1] 2 0 0 6 0 0 0 0 0 1 1 1 0 3 1 1 1 0 0 1 0 1 0 3 1 0 0 2 0 0 0 0 0 0 0 0 0
##  [38] 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 2
##  [75] 0 3 0 3 0 1 2 1 0 2 1 4 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 2 0 2 2 2 1 0
## [112] 0 1 0 1 0 0 1 4 2 1 1 1 0 0 0 1 0 0 0 1 1 1 0 2 2 2 1 2 0 2 1 1 0 1 1 0 1
## [149] 0 0 0 0 0 1 1 1 2 0 0 0 1 1 1 2 1 0 1 0 1 0 2 2 2 0 0 0 0 0 0 1 2 0
# Convert history to compressed format
# 0=neither species detected,
# 1=only species A detected,
# 2=only species B detected,
# 3=both species detected

# we need to ignore multple detections of each species in a camera
input.history <- 1*(bb.data>=1) + 2*(gb.data>=1)
input.history
##        V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
##   [1,]  0  0  0  0  0  0  2  2  0   0   0   0   0   0   0   0   0   0
##   [2,]  0  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##   [3,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##   [4,]  2  2  2  2  2  2  2  2 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##   [5,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##   [6,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##   [7,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##   [8,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##   [9,]  0  0  0  0  0  0  0  0 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [10,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   2   0   0   0
##  [11,]  2  0  0  0  0  2  0  0  2   0   0   0   0   0   0   0   0   0
##  [12,]  0  2  1  0  0  0  0  0  0   0   0   1   0   0   0   1   0   0
##  [13,]  0  0  1  1  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [14,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   2   0   0
##  [15,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   2   0   0
##  [16,]  0  2  0  0  2  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [17,]  0  0  0  2  0  2  0  0  0   0   0   0   0   0   0   0   0   0
##  [18,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [19,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [20,]  1  0  0  0  0  0  0  2  0   0   0   0   0   0   0   0   0   0
##  [21,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [22,]  2  0  0  0  2  0  0  0  0   0   0   0   2   0   0   0   0   0
##  [23,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [24,]  2  0  0  0  0  2  0  0  0   0   2   2   0   0   0   0   0   0
##  [25,]  2  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [26,]  0  1  0  0  0  0  0  1  0   0   0   0   0   0   0   0   0   0
##  [27,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [28,]  0  0  2  0  1  0  0  0  0   0   0   0   0   2   2   0  NA  NA
##  [29,]  0  0  0  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [30,]  0  0  0  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [31,]  0  0  0  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [32,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [33,]  0  0  0  1  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [34,]  0  0  0  0 NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [35,]  0  0  0  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [36,]  0  0  0  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [37,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [38,]  0  0  0  0  0  0  2  0  0   0   0   0   0   0   0   0   0   0
##  [39,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [40,]  0  0  0  0  0  0  0  0  2   0   0   0   0   0   0   0   1   0
##  [41,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [42,]  0  0  2  1  0  1  0  0  0   0   0   0   0   0   0   0   0   0
##  [43,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [44,]  1  0  0  2  0  0  0  0  0   0   0   0   0   0   0   0   1   0
##  [45,]  0  1  0  0  0  1  0  0  0   1   1   0   0   0   0   0   0   0
##  [46,]  1  0  0  1  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [47,]  0  0  0  0  0  0  1  0  0   0   0   0   0   0   0   0   0   0
##  [48,]  0  0  1  0  0  0  0  1  0   0   0   0   0   0   0   1   0   0
##  [49,]  0  1  1  0  0  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [50,]  0  0  0  0  2  1  0  0  0   0   0   0   0   0   0   0   0   0
##  [51,]  1  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [52,]  0  1  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [53,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [54,]  0  0  0  0  0  0  1  0  0   2   0   0   0   0   0   0   0   0
##  [55,]  0  0  1  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [56,]  0  0  0  1  0  0  0  0  0   0   0   2   0   0   0   0   0   0
##  [57,]  0  0  0  0  0  0  1  0  0   0   0   0   0   0   0   0   0   0
##  [58,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [59,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [60,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [61,]  0  3  0  0  0  0  0  0  0   0   0   0   1   0   1   0   0   0
##  [62,]  0  0  0  0  1  0  0  0  0   0   0   0   0   0   0   0   0   1
##  [63,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [64,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [65,]  0  2  0  0  2  2  0  0  0   2   0   2   0   0  NA  NA  NA  NA
##  [66,]  0  0  0  1  0  0  0  0  0   0  NA  NA  NA  NA  NA  NA  NA  NA
##  [67,]  0  1  0  0  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [68,]  0  0  0  0  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [69,]  1  1  1  0  1  0  1  0  0   0   0   1   1   1   1   0   0   1
##  [70,]  0  0  1  0  0  0  0  0  0   0   0   0   0   0   1   0   0   0
##  [71,]  0  0  0  0  0  1  0  0  0   0   0   0   0   0   0   0   0   0
##  [72,]  0  0  0  0  0  0  0  0  0   0   0   0  NA  NA  NA  NA  NA  NA
##  [73,]  0  0  0  0  0  0  0  0  0   0   0   0   2   0   0   0   0   0
##  [74,]  2  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [75,]  0  0  0  0  0  0  0  1  0   0   1   0   1   0   0   0   1   0
##  [76,]  3  2  2  0  0  0  1  0  0   1   1   0   0   0   0   0   0   0
##  [77,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   1   0   0
##  [78,]  2  1  2  2  2  0  0  0  0   0   1   0   0   0  NA  NA  NA  NA
##  [79,]  0  0  1  0  0  0  0  1  0   0   0   0   0   0   0   0   0   0
##  [80,]  0  2  0 NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [81,]  0  0  0  0  0  2  0  0  0   0   0   0   0   0   0   0  NA  NA
##  [82,]  1  0  1  0  1  1  0  0  0   0   0   0   0   2   0  NA  NA  NA
##  [83,]  0  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [84,]  3  3  0  0  0  0  1  0  0   0   0   0   0   0   0   0   0   0
##  [85,]  2  0  0  0  0  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [86,]  2  0  2  2  0  0  0  0  2   0   0   2   0   0   2   2   2   3
##  [87,]  1  0  0  0  0  0  0  2  0   0   0   0   0   0   0   0   0   0
##  [88,]  0  0  0  0  1  1  0  1  0   0   0   0   0   0   0   0  NA  NA
##  [89,]  0  0  0  2  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [90,]  0  0  0  0  1  0  0  0  0   1  NA  NA  NA  NA  NA  NA  NA  NA
##  [91,]  0  1  1  0  0  0  1 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [92,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
##  [93,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0  NA
##  [94,]  0  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [95,]  0  0  0  0  0  0  0  0  0  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [96,]  1  0  1  0  0  1  0  0  0   0   0   0   0   1   0   0   0   0
##  [97,]  0  0  0  0  0  0  0  0  0   2  NA  NA  NA  NA  NA  NA  NA  NA
##  [98,]  2  2  0  0  2  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
##  [99,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   2   0  NA  NA
## [100,]  0  0  0 NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [101,]  0  0  0  0  0  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [102,]  2  0  0  0  0  2  2  2 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [103,]  1  1  0  0  0  1  0  1  0   0   0   0   1   0   1   0   0   1
## [104,]  2  0  0  1  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [105,]  2  1  0  0  0  0  0  0  2   0   2   0   2   0  NA  NA  NA  NA
## [106,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [107,]  2  0  2 NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [108,]  2  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [109,]  2  2 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [110,]  0  0  0  0  2  0  0  0  0   0   0   0   0   0  NA  NA  NA  NA
## [111,]  0  1  0  1  0  0  0  0  0   0   0   0   0   0   1   0   1   0
## [112,]  0  0  0  0  0  0  0  0  0   0   0   0  NA  NA  NA  NA  NA  NA
## [113,]  0  0  2  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [114,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [115,]  0  1  0  1  0  0  0  0  0   2   0   0  NA  NA  NA  NA  NA  NA
## [116,]  1  1  1  1  1  1  1  0  0   0   1   1   0  NA  NA  NA  NA  NA
## [117,]  0  0  0  0 NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [118,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   2   0   0
## [119,]  3  1  2  2  2  0  0  2  2   0   2   0   0   2   0   0   0   0
## [120,]  0  0  2  0  2  0  0  2  0  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [121,]  1  0  0  0  2  3  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [122,]  2  2  0  0  0  0  0  0  0   0   0   0   0   0  NA  NA  NA  NA
## [123,]  2  0  0  0  0  0  0  0 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [124,]  0  0  0  0  0  0  0  0  0   0   1   0   0   0   1   0  NA  NA
## [125,]  0  0  0  0  0  0  0  0  0   0   1   0   0   0   0   0  NA  NA
## [126,]  0  0  0  0  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [127,]  0  1  2  2  1  1  1  0  0   0   1   0   0   0   0   0  NA  NA
## [128,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [129,]  0  0  0  0  0  0  0  0  0  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [130,]  0  0  0  0  0  0  0 NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [131,]  2  0  0  0  0  0  0  0  0   0   0   0   0   0   0  NA  NA  NA
## [132,]  0  0  0  0  2  0  0  0  0   1   0   0   0   0   2   0   2   0
## [133,]  0  0  0  0  0  0  0  0  2   0   0   0  NA  NA  NA  NA  NA  NA
## [134,]  0  0 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [135,]  0  0  2  0  0  0  0  0  0   0   0   2   0   0   0   0   0   0
## [136,]  2  2  0  0  0  2  0  0  0   0   2   0   0   0   0   0   0   0
## [137,]  2  2  2  0  0  0  2  0  0   0   2   2   0   0   0   0   0   0
## [138,]  0  0  0  0  0  2  0  0  0   0   0   0   0   0   0   0   0   0
## [139,]  2  2  0  0  0  0  0  0  0   0   0   0   0   2   0   0   0   0
## [140,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [141,]  0  2  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [142,]  0  2  0  0  0  0  0  1  0   0   0   0   0   0   0   0   0   0
## [143,]  1  2  0  0  0  0  1  0  0   0   0   0   0   0   0   0   0   0
## [144,]  0  0  1  0  0  0  0  0  0   0   0   0   0   1   0   0   1   0
## [145,]  0  2  2  0  0  0  0  0  0   0   0   0   0   1   0   0   0   0
## [146,]  0  0  0  0  2  0  0  0  0   0   0   0   0   0   0   0   0   0
## [147,]  1  0  0  0  0  0  0  0  0   1   0   0   0   0   0   0   0   0
## [148,]  0  0  0  0  0  0  0  0  0   2   0   0   0   0   0   0   0   0
## [149,]  0  0  0  0  0  0  0  0  0   0   0   0   0  NA  NA  NA  NA  NA
## [150,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [151,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [152,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [153,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [154,]  0  0  2  0  0  0  1  1  0   0   0   0  NA  NA  NA  NA  NA  NA
## [155,]  0  0  2  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [156,]  1  1  2  0  0  0  0  0  0   0   0   0   0   0   1   1   0   0
## [157,]  2  2  1  0  0  0  1  0  0   2   2   2   0   0   0   0   0   0
## [158,]  0  0  0  0  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [159,]  1  0  1  0  1  0  0  0  0   0   0   0   0   0   0   0   0   0
## [160,]  1  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [161,]  1  0  0  0  0  2  0  0  0   0   0   0   0   0   0   0   0   0
## [162,]  0  1  0  0  1  0  0  0  0   0   0   2   0   0   1   0   0   0
## [163,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   2   0   0   0
## [164,]  0  2  0  2  0  0  0  0  0   0   0   0   0   0   2   0   0   0
## [165,]  1  0  0  0  3  0  0  0  0   0   0   0   0   0   0   0   0   0
## [166,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [167,]  1  1  2  0  0  0  0  1  0   0   0   0   0   0   0   0   0   0
## [168,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [169,]  2  1  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   2
## [170,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   1   0   0
## [171,]  0  2  0  2  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [172,]  2  0  0  0  0  0 NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [173,]  2  2  2  0  2  0  0  0  0   0   0   0   0   0   0   0   0   0
## [174,]  0  0  1  0  1  0  0  0  0   0   0   0   0   0   0   0   0   0
## [175,]  0  1  1  1  1  0  0  0  0   0   0   1   0   0   0   0   0   0
## [176,]  0  0  0  0  1  0  0  0  0   0   0   0   0   0   0   0   0   0
## [177,]  0  0  0  1  0  0  1  1  1   1   1   1   0   0   0   0   0   0
## [178,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
## [179,]  0  0  0  0  0  0  1  0  0   1   0   1   0   0   0   0   0   0
## [180,]  0  0  2  0  0 NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
## [181,]  2  0  2  0  0  0  0  0  0   0   0   0  NA  NA  NA  NA  NA  NA
## [182,]  0  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0
# Get the site covariates

site.covar <- read.csv(file.path("..","Raw data","covariates.csv"),   header=TRUE, strip.white=TRUE, as.is=TRUE)
names(site.covar)
## [1] "Cam_name"  "X"         "Y"         "Land_type" "droad"     "dstream"  
## [7] "elev"      "tpi"       "NDVI"
names(site.covar) <- make.names(names(site.covar))
names(site.covar)
## [1] "Cam_name"  "X"         "Y"         "Land_type" "droad"     "dstream"  
## [7] "elev"      "tpi"       "NDVI"
head(site.covar)
##                              Cam_name      X       Y Land_type      droad
## 1        amethyst lake 415655 5838411 415655 5838411    Jasper 12759.7998
## 2         ancient wall 376992 5919664 376992 5919664    Jasper 47406.6016
## 3              astoria 427308 5839183 427308 5839183    Jasper  1134.0400
## 4            bess pass 343359 5911520 343359 5911520     Crown 76867.2031
## 5  brewster skywalk c2 481109 5789822 481109 5789822    Jasper    44.7214
## 6 brewster skywalk c2b 481109 5789822 481107 5789822    Jasper    49.2443
##    dstream elev      tpi     NDVI
## 1  55.0000 1994 -212.058 7102.968
## 2  53.1507 1760 -373.933 6576.896
## 3 640.3120 1722 -259.626 6440.972
## 4 530.0000 1695    0.000 6789.304
## 5 101.2420 1825 -608.371 5605.156
## 6  97.0824 1825 -608.371 5605.156
# Standardize Elevation covariates
elev.mean <- mean(site.covar$elev)
elev.s    <- sd  (site.covar$elev)
site.covar$elev.std <- (site.covar$elev - elev.mean)/elev.s



Nsites <- nrow(input.history)
Nvisits<- ncol(input.history)

# create the pao file

bear.pao <- createPao(input.history,
                            unitcov=site.covar,
                            title="bear multi species - co-occurance")
summary(bear.pao)
## paoname=pres.pao
## title=bear multi species - co-occurance
## Naive occ=0.6813187
## naiveR   =0.4450549
##        nunits      nsurveys      nseasons nsurveyseason      nmethods 
##         "182"          "18"           "1"          "18"           "1" 
##      nunitcov      nsurvcov 
##          "10"           "1" 
## unit covariates  : Cam_name X Y Land_type droad dstream elev tpi NDVI elev.std 
## survey covariates: SURVEY
# Use the psiAB parameterization 
#    Parameters of the model are 
#        psiA  - occupancy probability of species A
#        psiBA - occupancy probability of species B if species A is present
#        psiBa - occupancy probability of species B if species A is absent
#
#    If species are independent thatn psiBA = psiBa.
#       Alternatively, nu = odds(B|A)/odds(B|a) = 1.
#
#    Detection parameters
#        pA    - probability of detection if A is alone in the site
#        pB    - probability of detection if B is alone in the site
#        rA    - probability of detecting A only given both on the site
#        rBA   - probability of detecting B given that A was detected and both are on the site
#        rBa   - probability of detecting B given that A not detected and both are on the site 
#    Ifspecies do not interact, then
#        rBA = rBa
#    and
#        rho = odds(rBA)/odds(rBa) = 1


#
# The following special variables are available for modelling  PSI
#    SP species effect 
#    INT interaction of effect on presence of species B when species A was, or was not present 
#
# Model for PSI.... impact on parameters
#    psi~1      psiA=psiBA=psiBa       (1 parameter)
#    psi~SP     psiA    psiBA=psiBa    (2 parameters)
#    psi~SP+INT psiA    psiBA   psiBa  (3 parameters)
#
# The following special variables are available for p
#   SP species effect
#   INT_o is a detection-level interaction where the OCCUPANCY of one species 
#         changes the detection probability of the other species 
#   INT_d is a detection-level interaction where DETECTION of one species changes the 
#         detection probability of the other species in the same survey. 
#
# Model for p.... impact on parameters
#    p~1                          pA = pB = rA = rBA = rBa   (1 parameter)
#    p~SP                         pA=rA,  pB=rBA=rBa         (2 parameters)
#    p~SP+INT_o                   pA=rA,  pB, rBA=rBa        (3 parameters)
#    p~SP+INT_o+SP:INT_o          pA, rA, pB, rBA=rBa        (4 parameters) 
#    p~SP+INT_o+SP:INT_o+INT_d    pA, rA, pB, rBA, rBa       (5 parameters) 




# define the list of models to fit
# Notice the commas between the column and the placement of the quotes
model.list.csv <- textConnection("
p,                               psi
~SP+INT_o+SP:INT_o + INT_d,              ~SP+INT
~SP+INT_o+SP:INT_o + INT_d,              ~SP
~SP+INT_o+SP:INT_o  ,                    ~SP+INT
~SP+INT_o+SP:INT_o,                      ~SP + elev.std+SP:elev.std+INT+INT:elev.std")

model.list <- read.csv(model.list.csv, header=TRUE, as.is=TRUE, strip.white=TRUE)
model.list
##                            p                                         psi
## 1 ~SP+INT_o+SP:INT_o + INT_d                                     ~SP+INT
## 2 ~SP+INT_o+SP:INT_o + INT_d                                         ~SP
## 3         ~SP+INT_o+SP:INT_o                                     ~SP+INT
## 4         ~SP+INT_o+SP:INT_o ~SP + elev.std+SP:elev.std+INT+INT:elev.std
# fit the models
model.fits <- plyr::alply(model.list, 1, function(x,detect.pao){
  cat("\n\n***** Starting ", unlist(x), "\n")
  fit <- RPresence::occMod(model=list(as.formula(paste("psi",x$psi)),
                                      as.formula(paste("p"  ,x$p  ))),
                           data=detect.pao,type="so.2sp.1", randint=10)
  fit
},detect.pao=bear.pao)
## 
## 
## ***** Starting  ~SP+INT_o+SP:INT_o + INT_d ~SP+INT 
## 
## 
## ***** Starting  ~SP+INT_o+SP:INT_o + INT_d ~SP 
## 
## 
## ***** Starting  ~SP+INT_o+SP:INT_o ~SP+INT 
## 
## 
## ***** Starting  ~SP+INT_o+SP:INT_o ~SP + elev.std+SP:elev.std+INT+INT:elev.std
# Look the output from a specific model
check.model <- 4

names(model.fits[[check.model]])
##  [1] "modname"     "model"       "dmat"        "data"        "outfile"    
##  [6] "neg2loglike" "npar"        "aic"         "beta"        "real"       
## [11] "derived"     "warnings"
model.fits[[check.model]]$beta
## $psi
##                                    est       se
## A1_psiA                       0.748239 0.281195
## A2_psiBA                      0.145727 0.746871
## A3_psiA.elev.std_psiA        -1.000606 0.279150
## A4_psiBa                     -0.597586 1.747908
## A5_psiBA.SP2:elev.std_psiBA  -0.970599 0.817819
## A6_psiBa.elev.std:INT2_psiBa 10.246286 5.942839
## 
## $psi.VC
##           A1        A2        A3        A4        A5        A6
## A1  0.079070 -0.145933 -0.024289  0.178608  0.082469  0.329030
## A2 -0.145933  0.557816  0.080219 -0.922256 -0.342742 -0.342424
## A3 -0.024289  0.080219  0.077925 -0.127854 -0.142763  0.033377
## A4  0.178608 -0.922256 -0.127854  3.055182  0.564698  1.474631
## A5  0.082469 -0.342742 -0.142763  0.564698  0.668827 -0.696643
## A6  0.329030 -0.342424  0.033377  1.474631 -0.696643 35.317330
## 
## $p
##                 est       se
## B1_pA[1]  -4.772841 0.856238
## B2_pB[1]   2.975097 0.896673
## B3_rA[1]   2.847030 0.836951
## B4_rBA[1] -3.786278 0.913364
## 
## $p.VC
##           B1        B2        B3        B4
## B1  0.733144 -0.757301 -0.712042  0.762779
## B2 -0.757301  0.804022  0.733891 -0.808261
## B3 -0.712042  0.733891  0.700487 -0.747203
## B4  0.762779 -0.808261 -0.747203  0.834234
## 
## $VC
##           A1        A2        A3        A4        A5        A6        B1
## A1  0.079070 -0.145933 -0.024289  0.178608  0.082469  0.329030 -0.008140
## A2 -0.145933  0.557816  0.080219 -0.922256 -0.342742 -0.342424 -0.183313
## A3 -0.024289  0.080219  0.077925 -0.127854 -0.142763  0.033377 -0.042126
## A4  0.178608 -0.922256 -0.127854  3.055182  0.564698  1.474631  0.295266
## A5  0.082469 -0.342742 -0.142763  0.564698  0.668827 -0.696643  0.210166
## A6  0.329030 -0.342424  0.033377  1.474631 -0.696643 35.317330 -0.561425
## B1 -0.008140 -0.183313 -0.042126  0.295266  0.210166 -0.561425  0.733144
## B2  0.015459  0.184249  0.052723 -0.340038 -0.234071  0.635433 -0.757301
## B3  0.006617  0.165834  0.039935 -0.245849 -0.196825  0.493199 -0.712042
## B4 -0.012218 -0.185518 -0.052563  0.317151  0.237333 -0.567216  0.762779
##           B2        B3        B4
## A1  0.015459  0.006617 -0.012218
## A2  0.184249  0.165834 -0.185518
## A3  0.052723  0.039935 -0.052563
## A4 -0.340038 -0.245849  0.317151
## A5 -0.234071 -0.196825  0.237333
## A6  0.635433  0.493199 -0.567216
## B1 -0.757301 -0.712042  0.762779
## B2  0.804022  0.733891 -0.808261
## B3  0.733891  0.700487 -0.747203
## B4 -0.808261 -0.747203  0.834234
model.fits[[check.model]]$dmat
## $psi
##       a1  a2  a3               a4  a5                   a6                   
## psiA  "1" "0" "elev.std_psiA"  "0" "0"                  "0"                  
## psiBA "1" "1" "elev.std_psiBA" "0" "SP2:elev.std_psiBA" "0"                  
## psiBa "1" "1" "elev.std_psiBa" "1" "SP2:elev.std_psiBa" "elev.std:INT2_psiBa"
## 
## $p
##         b1  b2  b3  b4 
## pA[1]   "1" "0" "0" "0"
## pA[2]   "1" "0" "0" "0"
## pA[3]   "1" "0" "0" "0"
## pA[4]   "1" "0" "0" "0"
## pA[5]   "1" "0" "0" "0"
## pA[6]   "1" "0" "0" "0"
## pA[7]   "1" "0" "0" "0"
## pA[8]   "1" "0" "0" "0"
## pA[9]   "1" "0" "0" "0"
## pA[10]  "1" "0" "0" "0"
## pA[11]  "1" "0" "0" "0"
## pA[12]  "1" "0" "0" "0"
## pA[13]  "1" "0" "0" "0"
## pA[14]  "1" "0" "0" "0"
## pA[15]  "1" "0" "0" "0"
## pA[16]  "1" "0" "0" "0"
## pA[17]  "1" "0" "0" "0"
## pA[18]  "1" "0" "0" "0"
## pB[1]   "1" "1" "0" "0"
## pB[2]   "1" "1" "0" "0"
## pB[3]   "1" "1" "0" "0"
## pB[4]   "1" "1" "0" "0"
## pB[5]   "1" "1" "0" "0"
## pB[6]   "1" "1" "0" "0"
## pB[7]   "1" "1" "0" "0"
## pB[8]   "1" "1" "0" "0"
## pB[9]   "1" "1" "0" "0"
## pB[10]  "1" "1" "0" "0"
## pB[11]  "1" "1" "0" "0"
## pB[12]  "1" "1" "0" "0"
## pB[13]  "1" "1" "0" "0"
## pB[14]  "1" "1" "0" "0"
## pB[15]  "1" "1" "0" "0"
## pB[16]  "1" "1" "0" "0"
## pB[17]  "1" "1" "0" "0"
## pB[18]  "1" "1" "0" "0"
## rA[1]   "1" "0" "1" "0"
## rA[2]   "1" "0" "1" "0"
## rA[3]   "1" "0" "1" "0"
## rA[4]   "1" "0" "1" "0"
## rA[5]   "1" "0" "1" "0"
## rA[6]   "1" "0" "1" "0"
## rA[7]   "1" "0" "1" "0"
## rA[8]   "1" "0" "1" "0"
## rA[9]   "1" "0" "1" "0"
## rA[10]  "1" "0" "1" "0"
## rA[11]  "1" "0" "1" "0"
## rA[12]  "1" "0" "1" "0"
## rA[13]  "1" "0" "1" "0"
## rA[14]  "1" "0" "1" "0"
## rA[15]  "1" "0" "1" "0"
## rA[16]  "1" "0" "1" "0"
## rA[17]  "1" "0" "1" "0"
## rA[18]  "1" "0" "1" "0"
## rBA[1]  "1" "1" "1" "1"
## rBA[2]  "1" "1" "1" "1"
## rBA[3]  "1" "1" "1" "1"
## rBA[4]  "1" "1" "1" "1"
## rBA[5]  "1" "1" "1" "1"
## rBA[6]  "1" "1" "1" "1"
## rBA[7]  "1" "1" "1" "1"
## rBA[8]  "1" "1" "1" "1"
## rBA[9]  "1" "1" "1" "1"
## rBA[10] "1" "1" "1" "1"
## rBA[11] "1" "1" "1" "1"
## rBA[12] "1" "1" "1" "1"
## rBA[13] "1" "1" "1" "1"
## rBA[14] "1" "1" "1" "1"
## rBA[15] "1" "1" "1" "1"
## rBA[16] "1" "1" "1" "1"
## rBA[17] "1" "1" "1" "1"
## rBA[18] "1" "1" "1" "1"
## rBa[1]  "1" "1" "1" "1"
## rBa[2]  "1" "1" "1" "1"
## rBa[3]  "1" "1" "1" "1"
## rBa[4]  "1" "1" "1" "1"
## rBa[5]  "1" "1" "1" "1"
## rBa[6]  "1" "1" "1" "1"
## rBa[7]  "1" "1" "1" "1"
## rBa[8]  "1" "1" "1" "1"
## rBa[9]  "1" "1" "1" "1"
## rBa[10] "1" "1" "1" "1"
## rBa[11] "1" "1" "1" "1"
## rBa[12] "1" "1" "1" "1"
## rBa[13] "1" "1" "1" "1"
## rBa[14] "1" "1" "1" "1"
## rBa[15] "1" "1" "1" "1"
## rBa[16] "1" "1" "1" "1"
## rBa[17] "1" "1" "1" "1"
## rBa[18] "1" "1" "1" "1"
names(model.fits[[check.model]]$real)
## [1] "psiA"  "psiBA" "psiBa" "pA"    "pB"    "rA"    "rBA"   "rBa"
model.fits[[check.model]]$real$psiA[1:5,]
##          est     se  lower  upper
## unit1 0.2425 0.0945 0.1046 0.4674
## unit2 0.4520 0.0792 0.3058 0.6069
## unit3 0.4902 0.0746 0.3488 0.6332
## unit4 0.5175 0.0715 0.3796 0.6527
## unit5 0.3880 0.0867 0.2366 0.5647
model.fits[[check.model]]$real$psiBA[1:5,]
##          est     se  lower  upper
## unit1 0.0561 0.0583 0.0068 0.3400
## unit2 0.2769 0.1216 0.1043 0.5573
## unit3 0.3414 0.1250 0.1485 0.6064
## unit4 0.3912 0.1260 0.1856 0.6445
## unit5 0.1858 0.1092 0.0525 0.4843
model.fits[[check.model]]$real$psiBa[1:5,]
##          est     se  lower upper
## unit1 1.0000 0.0000 0.0015     1
## unit2 0.9997 0.0018 0.0263     1
## unit3 0.9989 0.0056 0.0403     1
## unit4 0.9973 0.0121 0.0537     1
## unit5 1.0000 0.0003 0.0122     1
model.fits[[check.model]]$derived$nu[1:5,]
##                est           se        lower    upper
## unit1 7.371492e-09 8.540258e-08 1.013353e-18 53.62287
## unit2 1.187424e-04 7.229182e-04 7.803536e-10 18.06842
## unit3 5.725349e-04 2.988507e-03 2.063643e-08 15.88435
## unit4 1.750777e-03 8.076598e-03 2.072230e-07 14.79189
## unit5 8.053426e-06 6.118529e-05 2.747405e-12 23.60688
model.fits[[check.model]]$real$pA[1:5,]
##              est     se  lower  upper
## unit1_1-1 0.0084 0.0071 0.0016 0.0433
## unit2_1-1 0.0084 0.0071 0.0016 0.0433
## unit3_1-1 0.0084 0.0071 0.0016 0.0433
## unit4_1-1 0.0084 0.0071 0.0016 0.0433
## unit5_1-1 0.0084 0.0071 0.0016 0.0433
model.fits[[check.model]]$real$pB[1:5,]
##              est     se  lower  upper
## unit1_1-1 0.1421 0.0183 0.1099 0.1819
## unit2_1-1 0.1421 0.0183 0.1099 0.1819
## unit3_1-1 0.1421 0.0183 0.1099 0.1819
## unit4_1-1 0.1421 0.0183 0.1099 0.1819
## unit5_1-1 0.1421 0.0183 0.1099 0.1819
model.fits[[check.model]]$real$rA[1:5,]
##              est     se  lower upper
## unit1_1-1 0.1272 0.0108 0.1074  0.15
## unit2_1-1 0.1272 0.0108 0.1074  0.15
## unit3_1-1 0.1272 0.0108 0.1074  0.15
## unit4_1-1 0.1272 0.0108 0.1074  0.15
## unit5_1-1 0.1272 0.0108 0.1074  0.15
model.fits[[check.model]]$real$rBA[1:5,]
##              est     se  lower  upper
## unit1_1-1 0.0608 0.0071 0.0483 0.0764
## unit2_1-1 0.0608 0.0071 0.0483 0.0764
## unit3_1-1 0.0608 0.0071 0.0483 0.0764
## unit4_1-1 0.0608 0.0071 0.0483 0.0764
## unit5_1-1 0.0608 0.0071 0.0483 0.0764
model.fits[[check.model]]$real$rBa[1:5,]
##              est     se  lower  upper
## unit1_1-1 0.0608 0.0071 0.0483 0.0764
## unit2_1-1 0.0608 0.0071 0.0483 0.0764
## unit3_1-1 0.0608 0.0071 0.0483 0.0764
## unit4_1-1 0.0608 0.0071 0.0483 0.0764
## unit5_1-1 0.0608 0.0071 0.0483 0.0764
model.fits[[check.model]]$derived$rho[1:5,]
##           est se lower upper
## unit1_1-1   1  0     1     1
## unit2_1-1   1  0     1     1
## unit3_1-1   1  0     1     1
## unit4_1-1   1  0     1     1
## unit5_1-1   1  0     1     1
names(model.fits[[check.model]]$derived)
## [1] "nu"  "rho"
# Model averaging
aic.table <- RPresence::createAicTable(model.fits)
aic.table$table
##                                                                                 Model
## 4 psi(SP P elev.std P SP T elev.std P INT P INT T elev.std)p(SP P INT_o P SP T INT_o)
## 3                                             psi(SP P INT)p(SP P INT_o P SP T INT_o)
## 1                                     psi(SP P INT)p(SP P INT_o P SP T INT_o P INT_d)
## 2                                           psi(SP)p(SP P INT_o P SP T INT_o P INT_d)
##        AIC   neg2ll npar warn.conv warn.VC    DAIC modlike    wgt
## 4 2392.828 2372.828   10      5.76       0  0.0000   1e+00 0.9997
## 3 2409.173 2395.173    7      7.00       0 16.3442   3e-04 0.0003
## 1 2424.142 2408.142    8      7.00       0 31.3132   0e+00 0.0000
## 2 2425.193 2411.193    7      7.00       0 32.3644   0e+00 0.0000
names(aic.table)
## [1] "table"  "models" "ess"
ma.psiA<- RPresence::modAvg(aic.table, param="psiA")
ma.psiA$parameter <- "psiA"
ma.psiA <- cbind(ma.psiA, site.covar) 
  
ma.psiBA<- RPresence::modAvg(aic.table, param="psiBA")
ma.psiBA$parameter <- "psiBA"
ma.psiBA <- cbind(ma.psiBA, site.covar) 

ma.psiBa<- RPresence::modAvg(aic.table, param="psiBa")
ma.psiBa$parameter <- "psiBa"
ma.psiBa <- cbind(ma.psiBa, site.covar) 

ma.psiB <- site.covar
ma.psiB$parameter <- 'psiB'
ma.psiB$est <- ma.psiBA$est * ma.psiA$est +
               ma.psiBa$est * (1-ma.psiA$est)
# too hard to compute the se

psi.all <- plyr::rbind.fill(ma.psiA, ma.psiBA, ma.psiBa, ma.psiB)

head(psi.all)
##         est         se lower_0.95 upper_0.95 parameter
## 1 0.2426393 0.09485377  0.1043374  0.4683937      psiA
## 2 0.4520801 0.07933756  0.3057571  0.6071842      psiA
## 3 0.4902693 0.07470921  0.3486771  0.6334401      psiA
## 4 0.5175615 0.07158990  0.3794996  0.6529933      psiA
## 5 0.3880981 0.08688928  0.2364156  0.5650799      psiA
## 6 0.3880981 0.08688928  0.2364156  0.5650799      psiA
##                              Cam_name      X       Y Land_type      droad
## 1        amethyst lake 415655 5838411 415655 5838411    Jasper 12759.7998
## 2         ancient wall 376992 5919664 376992 5919664    Jasper 47406.6016
## 3              astoria 427308 5839183 427308 5839183    Jasper  1134.0400
## 4            bess pass 343359 5911520 343359 5911520     Crown 76867.2031
## 5  brewster skywalk c2 481109 5789822 481109 5789822    Jasper    44.7214
## 6 brewster skywalk c2b 481109 5789822 481107 5789822    Jasper    49.2443
##    dstream elev      tpi     NDVI  elev.std
## 1  55.0000 1994 -212.058 7102.968 1.8858767
## 2  53.1507 1760 -373.933 6576.896 0.9404520
## 3 640.3120 1722 -259.626 6440.972 0.7869215
## 4 530.0000 1695    0.000 6789.304 0.6778340
## 5 101.2420 1825 -608.371 5605.156 1.2030700
## 6  97.0824 1825 -608.371 5605.156 1.2030700
ggplot(data=psi.all, aes(x=elev, y=est))+
   ggtitle("Estimated occupancy parameters vs. elevation")+
   geom_point()+
   geom_ribbon( aes(ymin=lower_0.95, ymax=upper_0.95),alpha=0.2)+
   facet_wrap(~parameter, ncol=2)
## Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning -
## Inf

# Why is psiBa so bad? This may be a case of complete separation.
# The detection probabilities are all fairly large so that over 5 visits, there is almost certain detection
# if the species is present. Consequently, the observed occupancy is likely a pretty good indication of the 
# actual occupancy.
RPresence::modAvg(aic.table, param="pA")[1,]
##                   est          se  lower_0.95 upper_0.95
## unit1_1-1 0.008479604 0.008619334 0.001145378  0.0599582
RPresence::modAvg(aic.table, param="pB")[1,]
##                 est         se lower_0.95 upper_0.95
## unit1_1-1 0.1421618 0.01884126  0.1090716  0.1832263
RPresence::modAvg(aic.table, param="rA")[1,]
##                 est         se lower_0.95 upper_0.95
## unit1_1-1 0.1271818 0.01085396  0.1073835  0.1500168
RPresence::modAvg(aic.table, param="rBA")[1,]
##                  est         se lower_0.95 upper_0.95
## unit1_1-1 0.06080363 0.00710522 0.04828086 0.07631401
RPresence::modAvg(aic.table, param="rBa")[1,]
##                  est          se lower_0.95 upper_0.95
## unit1_1-1 0.06080363 0.007105256 0.04828081  0.0763141
# Compute the observed occupance of each species at each camera
# Don't forget that cameras record number of times bear are seen
obs.occ <- data.frame(elev = site.covar$elev,
                      oogb = pmin(1, apply(gb.data,1,max, na.rm=TRUE)),
                      oobb = pmin(1, apply(bb.data,1,max, na.rm=TRUE)))
head(obs.occ)
##   elev oogb oobb
## 1 1994    1    0
## 2 1760    0    0
## 3 1722    0    0
## 4 1695    1    0
## 5 1825    0    0
## 6 1825    0    0
ggplot(data=obs.occ, aes(x=elev, y=oobb))+
   ggtitle("Observed occupancy of bb given gb")+
   geom_point()+
   geom_smooth(method="glm", method.args = list(family = quasibinomial(link = 'logit')))+
   facet_wrap(~oogb, ncol=1)
## `geom_smooth()` using formula 'y ~ x'

# and look at when the species are reversed
ggplot(data=obs.occ, aes(x=elev, y=oogb))+
   ggtitle("Observed occupancy of gb given bb")+
   geom_point()+
   geom_smooth(method="glm", method.args = list(family = quasibinomial(link = 'logit')))+
   facet_wrap(~oobb, ncol=1)
## `geom_smooth()` using formula 'y ~ x'