I'm trying to model bobcat densities across a number of sessions and trap covariates. Read.capthist gives me no issues but when I try to run secr.fit, I get the following error:
Error in findvars.MS(trapcov, vars, c(4, 1)) :
covariate factor levels differ between sessions
Here is my code for read.capthist.
- Code: Select all
nocc <- c(rep(3,42),2,3,3,3,3,3,3)
CH <- read.capthist(captfile="STATE_Events_Scat.txt",trapfile=c("ABB500.txt","ANF500.txt","ASB500.txt","BCF500.txt","BOD500.txt","CACK500.txt","CDCO500.txt",
"CGO500.txt","CHO500.txt","CHSP500.txt","CKW500.txt","CMP500.txt","CPER500.txt","DG500.txt",
"DHSV500.txt","FIAB500.txt","FRES500.txt","HC500.txt","HJWA500.txt","HVWA500.txt","JF500.txt",
"JLD500.txt","JOTR500.txt","LDSF500.txt","MAM500.txt","MCC500.txt","MOJ500.txt","OG500.txt",
"PAN500.txt","PR500.txt","PW500.txt","RED500.txt","SA500.txt","SBNF500.txt","SC500.txt",
"SEQ500.txt","SHRS500.txt","SKE500.txt","SMNF500.txt","SPUR500.txt","SRWA500.txt","TEHA500.txt",
"TL500.txt","TNC500.txt","TUN500.txt","TUO500.txt","UBBW500.txt","WIS500.txt", "YBWA500.txt"),
detector='count', fmt='XY',noccasions = nocc, noncapt="NONE",tol=300,snapXY=T,
trapcovnames=c('Site','Region','Season','Connectivity','Transect_Type','Interval'))
session(CH) <- c("ABB","ANF","ASB","BCF","BOD","CACK","CDCO",
"CGO","CHO","CHSP","CKW","CMP","CPER","DG",
"DHSV","FIAB","FRES","HC","HJWA","HVWA","JF",
"JLD","JOTR","LDSF","MAM","MCC","MOJ","OG",
"PAN","PR","PW","RED","SA","SBNF","SC",
"SEQ","SHRS","SKE","SMNF","SPUR","SRWA","TEHA",
"TL","TNC","TUN","TUO","UBBW","WIS","YBWA")
Annoyingly, 4 of the 5 trap covariates are factors. I first tried this code for each of the factor covariates but ran into the same error.
- Code: Select all
for (i in 1:length(traps(CH)))
levels(covariates(traps(CH[[i]]))$Transect_Type) <- c("ATV","ATV-Unmaintained","Game","Hike","Multiuse","Other","Road","Road-Unmaintained","Wash")
sapply(traps(CH),function(x) levels(covariates(x)$Transect_Type))
for (i in 1:length(traps(CH)))
levels(covariates(traps(CH[[i]]))$Site) <- c("ABB","ANF","ASB","BCF","BOD","CACK","CDCO",
"CGO","CHO","CHSP","CKW","CMP","CPER","DG",
"DHSV","FIAB","FRES","HC","HJWA","HVWA","JF",
"JLD","JOTR","LDSF","MAM","MCC","MOJ","OG",
"PAN","PR","PW","RED","SA","SBNF","SC",
"SEQ","SHRS","SKE","SMNF","SPUR","SRWA","TEHA",
"TL","TNC","TUN","TUO","UBBW","WIS","YBWA")
sapply(traps(CH),function(x) levels(covariates(x)$Site))
for (i in 1:length(traps(CH)))
levels(covariates(traps(CH[[i]]))$Season) <- c("Spring","Summer","Fall","Winter")
sapply(traps(CH),function(x) levels(covariates(x)$Season))
for (i in 1:length(traps(CH)))
levels(covariates(traps(CH[[i]]))$Connectivity) <- c("Connections.with.Implementation.Flexibility","Conservation.Planning.Linkages","Large.Natural.Habitat.Areas","Limited.Connectivity.Opportunities","Irreplaceable.and.Essential.Corridors")
sapply(traps(CH),function(x) levels(covariates(x)$Connectivity))
I also tried using shareFactorLevels ( traps(CH) <- shareFactorLevels(traps(CH)) ) but it seems to convert my capture history (CH) into a traps object. When I run secr.fit it provides an error saying a 'capthist' object is required.
- Code: Select all
> traps(CH) <- shareFactorLevels(traps(CH))
> class(CH)
[1] "traps" "list"
> resultsdHEX <- secr.fit(
+ CH,
+ detectfn = 'HEX',
+ mask = msk,
+ binomN = 0,
+ trace = TRUE,
+ model = list(D~Elevation+HumanPopulation+NLCD+session, sigma~Connectivity+Season, lambda0~Region+Interval+Transect_Type+Season),
+ start=list(D = 0.001, lambda0=0.07, sigma=700),
+ verify=F
+ )
Error in secr.fit(CH, detectfn = "HEX", mask = msk, binomN = 0, trace = TRUE, :
requires 'capthist' object
What do you recommend? Would it be best to convert these factors to numeric? How would that impact the results?
Thanks in advance!
-John