## Started 2020-12-13
library(openCR)
## to avoid ASAN/UBSAN errors on CRAN, following advice of Kevin Ushey
## e.g. https://github.com/RcppCore/RcppParallel/issues/169
Sys.setenv(RCPP_PARALLEL_BACKEND = "tinythread")
# create small working proximity dataset
suppressWarnings(smallCH <- join(subset(ovenCHp, sessions = 1:3, traps = 1:20, dropnullocc = FALSE)))
msk <- make.mask(traps(smallCH), buffer = 200, nx = 20, type = 'trapbuffer')
argssecr <- list(capthist = smallCH, mask = msk,
start = list(lambda0 = 0.037, sigma = 65.3, phi = 0.497, f = 0.560),
movementmodel = "static",
details = list(LLonly = TRUE))
argsmove <- list(capthist = smallCH, mask = msk, type = "PLBsecrf",
start = list(lambda0 = 0.037, sigma = 65.3, phi = 0.497, f = 0.560, move.a = 100),
movementmodel = "BVN", edgemethod = "truncate", sparsekernel = FALSE,
kernelradius = 10, details = list(LLonly = TRUE))
argsmoves <- list(capthist = smallCH, mask = msk, type = "PLBsecrf",
start = list(lambda0 = 0.037, sigma = 65.3, phi = 0.497, f = 0.560, move.a = 100),
movementmodel = "BVN", edgemethod = "truncate", sparsekernel = TRUE,
kernelradius = 20, details = list(LLonly = TRUE))
test_that("test data OK", {
expect_equal(sum(smallCH), 60)
expect_equal(RPSV(smallCH, CC = TRUE), 43.85065, tolerance = 1e-5)
})
test_that("correct PLBsecr likelihood", {
argssecr$type = 'PLBsecrf'
expect_equal(do.call(openCR.fit, argssecr)[1], -357.296968,
tolerance = 1e-4, check.attributes = FALSE)
})
test_that("correct JSSAsecr likelihood", {
argssecr$start$superD <- 2.0
argssecr$type = 'JSSAsecrf'
expect_equal(do.call(openCR.fit, argssecr)[1], -359.89066477,
tolerance = 1e-4, check.attributes = FALSE)
})
test_that("correct movement likelihood", {
expect_equal(do.call(openCR.fit, argsmove)[1], -358.092530,
tolerance = 1e-4, check.attributes = FALSE)
argsmove$edgemethod <- "wrap"
expect_error(do.call(openCR.fit, argsmove))
argsmove$mask <- make.mask(traps(smallCH), buffer = 200, nx = 20,
type = 'traprect')
expect_equal(do.call(openCR.fit, argsmove)[1], -358.17621329,
tolerance = 1e-4, check.attributes = FALSE)
argsmove$movementmodel <- "BVE"
argsmove$details$r0 <- 0 # historical
expect_equal(do.call(openCR.fit, argsmove)[1], -358.28315775,
tolerance = 1e-4, check.attributes = FALSE)
argsmove$movementmodel <- "BVT"
argsmove$start$move.b <- 5
argsmove$details$r0 <- 0.5
expect_equal(do.call(openCR.fit, argsmove)[1], -357.34627618,
tolerance = 1e-4, check.attributes = FALSE)
# sparse kernel 2.0.0
expect_equal(do.call(openCR.fit, argsmoves)[1], -358.326036775 ,
tolerance = 1e-4, check.attributes = FALSE)
})
test_that("error if non-rectangular mask for wrapped movement", {
expect_error(openCR.fit (smallCH, type='PLBsecrf', mask = msk,
movementmodel='normal', edgemethod = 'wrap'))
})
## 2021-06-13 check for openCR.esa bug of Trent McDonald
## fast 'fit' without maximization gives an openCR object to play with
smallfit <- openCR.fit(smallCH, mask = msk, type = 'PLBsecrf',
start = list(lambda0 = 0.037, sigma = 65.3, phi = 0.497, f = 0.560),
method = 'none')
test_that("correct effective sampling area", {
expect_equal(openCR.esa(smallfit)[1], 13.47202,
tolerance = 1e-4, check.attributes = FALSE)
})
test_that("correct derived superpopulation density", {
der <- derived(smallfit)
expect_equal(der$superD, 2.078382,
tolerance = 1e-4, check.attributes = FALSE)
expect_equal(der$estimates$D[3],1.079069,
tolerance = 1e-4, check.attributes = FALSE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.