In case someone wants to investigate the properties of these ICs, here is some code to get you started. You could run 1000 simulations for various values of nSites and nOccs and see which IC does best. In this example they all pick the correct model, and the rank order is the same too.
library(unmarked)
nSites <- 30
nOcc <- 3
set.seed(7)
x1good <- rnorm(nSites)
x2junk <- rnorm(nOcc)
x3good <- matrix(rnorm(nSites*nOcc), nSites, nOcc)
x4junk <- matrix(rnorm(nSites*nOcc), nSites, nOcc)
phi <- plogis(-1 + 1*x1good) # Truth
p <- plogis(1 + -1*x3good) # Truth
Z <- rbinom(nSites, 1, phi)
y <- matrix(NA, nSites, nOcc)
for(i in 1:nSites) {
y[i,] <- rbinom(nOcc, Z[i], p[i,])
}
umf <- unmarkedFrameOccu(y=y,
siteCovs=data.frame(x1good=x1good, x2junk=x2junk),
obsCovs=list(x3good=x3good, x4junk=x4junk))
fms <- list()
fms$Null <- occu(~1 ~1, umf)
fms$x1. <- occu(~1 ~x1good, umf)
fms$.x3 <- occu(~x3good ~1, umf)
fms$x1.x3 <- occu(~x3good ~x1good, umf)
fms$x1x2.x3x4 <- occu(~x3good + x4junk ~ x1good + x2junk, umf)
fitlist <- fitList(fits=fms)
modSel(fitlist)
# n = number of sites
AICc1 <- function(fit) {
K <- length(coef(fit))
y <- getY(fit@data)
n <- nrow(y) # Assumes no missing data
AIC <- fit@AIC
AICc <- AIC + 2*K*(K+1) / (n-K-1)
return(AICc)
}
# n = total number of observations
AICc2 <- function(fit) {
K <- length(coef(fit))
y <- getY(fit@data)
n <- length(y) # Assumes no missing data
AIC <- fit@AIC
n <- nSites*nOcc
AICc <- AIC + 2*K*(K+1) / (n-K-1)
return(AICc)
}
(AICrank <- sort(sapply(fms, function(x) x@AIC)))
(AICc1rank <- sort(sapply(fms, AICc1)))
(AICc2rank <- sort(sapply(fms, AICc2)))