RMark Aerial Survey Sightability Model Specification

posts related to the RMark library, which may not be of general interest to users of 'classic' MARK

RMark Aerial Survey Sightability Model Specification

Postby kmcurtis » Tue Feb 09, 2021 9:03 pm

Hi all,

This is going to be dense but I am hitting a wall and would love some help. I am trying to build a hybrid sightability double-observer model for an aerial survey of mule deer in California. The end goal is to have a procedure in place that is easily replicable by my colleagues at the Cali Dept of Fish and Wildlife so I am trying to use RMark to automize as much of the process as possible. However, this has led me to hit a couple of conceptual walls where I do not understand how to structure my models in RMark function notation. I am following the hybrid modeling methods described in Griffin et al. (2013) (https://wildlife.onlinelibrary.wiley.co ... 2/jwmg.612) with some guidance from a paper by Bristow et al. (2019) (https://wildlife.onlinelibrary.wiley.co ... 02/wsb.940).

So some background info:
We have a subset of the deer population with GPS collars. During aerial surveys, observers recorded every group of deer that they saw, if any deer in the group were collared or not, which observer saw the group (front seat vs back seat), and then environmental covariates around the group (e.g. vegetation cover, topography). For GPS collared deer that were not seen during the survey, we returned after the survey was complete and determined the same missing covariate data for those deer. All categorical covariates were transformed into indicator variables (0/1) and continuous variables were log transformed.
I am completing 3 different modeling methods to determine which covariates impact deer group detection: Double-observer (DO), sightability, and hybrid DO-sightability.

The DO method uses the observational dataset (all observed deer with and without collars) and the detection history is based on the two observers (front seat and back seat): 10, 01, and 11 indicated groups seen by a front-seat observer, a back-seat observer, or both a front-seat and back-seat observer, respectively. Detection covariates are included as independent variables, and differences in detection probability between front-seat and back-seat observers are included using the “time” parameter where I interpret the "time" effect as a back-seat effect. Now, I am not sure if this is correct, but I have been setting p=c using the share=T specification because my understanding is that “c” is the recapture probability, which does not apply to these aerial surveys since the idea of c is that animal behavior might change the second time the animal is "captured", and that does not make much sense here.

Associated R code for the DO models:
DO.try1 = data.frame(ch = DO_all.sub$ch, Season = DO_all.sub$Season,
Veg_tall = DO_all.sub$Veg_tall, Topog = DO_all.sub$topog_full)
DO.try1$ch=as.character(DO.try1$ch) # where front seat is initial capture and back seat is
# second capture (ex. ch=01 if deer missed by front and seen by back)

DO.models=function(df){
DO.proc=process.data(df, model="Huggins")
DO.ddl=make.design.data(DO.proc)

p.dot=list(formula = ~time, share=T) # time accounts for back seat effect
p.season = list(formula = ~time + Season, share=T)
p.veg = list(formula = ~time + Season + Veg_tall, share=T)
p.topog = list(formula = ~time + Season + Topog, share=T)
p.vegtopog = list(formula = ~time + Season + Veg_tall + Topog, share=T)

cml=create.model.list("Huggins")
results=mark.wrapper(cml,data=DO.proc,ddl=DO.ddl,adjust=FALSE)
return(results)
}
DO.results=DO.models(DO.try1)
DO.results$model.table


The sightability method only uses the collared deer dataset (seen and missed deer with GPS collars). I am trying to induce MARK (through Rmark) to fit logistic regression models by fixing the detection probability during the “capture survey” to be 1. Then the detection status of the collared deer is the binary dependent variable and detection covariates are independent variables. So far my understanding of how to include the binary dependent detection variable is by setting the detection history to “11” if the collared deer was seen during the survey and “10” if the collared was missed -- This is something that I am not entirely sure I am doing correctly in RMark and would love feedback.

Associated R code for the sightability models:
sight.df.sub = data.frame(ch = sight.df$ch, Season = sight.df$Season,
Veg_tall = sight.df$Veg_tall, Topog = sight.df$Topog)
sight.df.sub$ch=as.character(sight.df.sub$ch)# Not sure if this is right but initial capture set to 1 # (ex. ch=11 if deer was seen or ch=10 if deer was missed)

sight.models=function(df){
sight.proc=process.data(df, model="Huggins")
sight.ddl=make.design.data(sight.proc)

p.dot=list(formula = ~1, share=T) # no need to account for back seat effect
p.season = list(formula = ~1 + Season, share=T)
p.veg = list(formula = ~1 + Season + Veg_tall, share=T)
p.topog = list(formula = ~1 + Season + Topog, share=T)
p.vegtopog = list(formula = ~1 + Season + Veg_tall + Topog, share=T)

cml=create.model.list("Huggins")
results=mark.wrapper(cml,data=sight.proc,ddl=sight.ddl,adjust=FALSE)
return(results)
}
sight.results=sight.models(sight.df.sub)
sight.results$model.table


Finally, the hybrid method uses all seen deer and all missed GPS collared deer. These observations were classified as conditional or unconditional depending on if there was a collared deer in the group. Conditional observations included deer groups that did not have a collared deer, therefore their inclusion in the dataset was conditional on their detection during the survey. Unconditional observations included all groups with a collared deer because they would always be included in the dataset regardless of detection during survey. Now for this I have been using the DO detection history (ex. ch=01 if missed by front but seen by back) for the conditional groups and the Sighability detection history (ex. ch=11 if deer was seen or ch=10 if deer was missed) for the unconditional groups. This is another part that I am not sure I am doing correctly in RMark and would love feedback.

Similar to double-observer modeling, I am structuring hybrid models to account for the effect of observer position (again using the “time” effect. In addition, I am trying to structure all hybrid models to include effects of detection covariates on the unconditional probability that a given observer (front-seat or backseat from either side of the helicopter) detected each group of animals). For this I have been using groups=”Uncond” where “Uncond” is 0 if the detection is conditional (i.e. no collared deer in group) and 1 if it is unconditional (i.e. collared deer is in group). Again, not sure if this is the right way to specify my models based on what I want. So far, the unconditional and conditional probabilities that are output by this model are exactly the same and I am not sure why. I think it may be because I have not figured out how to specify that I want the detection covariates to just impact the unconditional group.

Associated R code for the hybrid models:
hybrid.df.sub = data.frame(ch = hybrid1$ch, Uncond = as.factor(hybrid1$Unconditional),
Season = as.numeric(as.character(hybrid1$Season)),
Veg_tall = as.numeric(hybrid1$Veg_tall), Topog = as.numeric(hybrid1$Topog))
hybrid.df.sub$ch=as.character(hybrid1$ch) ### This is also where I am confused.
# Right now, for conditional groups ch is specfied the same as the DO model
# (ex. ch=01 if deer missed by front and seen by back) but for
# unconditional groups ch is specified like the sightability model
# (ex.first capture fixed and ch=11 if deer was seen or ch=10 if deer was missed)

hybrid.models=function(df){
hybrid.proc=process.data(df, model="Huggins", groups = "Uncond") # groups account for if deer was
# collared (unconditional) or not (conditional)
hybrid.ddl=make.design.data(hybrid.proc)

p.dot=list(formula = ~time, share=T) # time accounts for back seat effect
p.season = list(formula = ~time + Season, share=T)
p.veg = list(formula = ~time + Season + Veg_tall, share=T)
p.topog = list(formula = ~time + Season + Topog, share=T)
p.vegtopog = list(formula = ~time + Season + Veg_tall + Topog, share=T)

cml=create.model.list("Huggins")
results=mark.wrapper(cml,data=hybrid.proc,ddl=hybrid.ddl,adjust=FALSE)
return(results)
}
hybrid.results=hybrid.models(hybrid.df.sub)
hybrid.results$model.table


Thank you all in advance!!!

Kylie Curtis
PhD Student
San Diego State Univeristy
kmcurtis
 
Posts: 1
Joined: Tue Feb 09, 2021 7:32 pm

Re: RMark Aerial Survey Sightability Model Specification

Postby jlaake » Mon Mar 01, 2021 8:56 pm

I have been working with Kylie on this off-list and that led to a discussion with the authors of the hybrid observer method and others. I'm going to add an example with simulated data to RMark when I get around to the next release. In the meantime, if you are interested in analyzing this type of data you can contact me directly.
jlaake
 
Posts: 1417
Joined: Fri May 12, 2006 12:50 pm
Location: Escondido, CA


Return to RMark

Who is online

Users browsing this forum: No registered users and 10 guests

cron