aboutsummaryrefslogtreecommitdiff
path: root/tests/testthat/test_occuRN.R
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testthat/test_occuRN.R')
-rw-r--r--tests/testthat/test_occuRN.R93
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/testthat/test_occuRN.R b/tests/testthat/test_occuRN.R
new file mode 100644
index 0000000..0fe384d
--- /dev/null
+++ b/tests/testthat/test_occuRN.R
@@ -0,0 +1,93 @@
+context("occuRN fitting function")
+skip_on_cran()
+
+test_that("occuRN can fit models",{
+
+ data(birds)
+ woodthrushUMF <- unmarkedFrameOccu(woodthrush.bin)
+
+ # R and C engines give same result
+ fm_R <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="R", K=5, control=list(maxit=1))
+ fm_C <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="C", K=5, control=list(maxit=1))
+ expect_equal(fm_R@AIC, fm_C@AIC)
+
+ # survey occasion-specific detection probabilities
+ fm_C <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="C", K=10)
+ #fm_R <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="R")
+
+ # check that output matches
+ #expect_equivalent(coef(fm_C),coef(fm_R),tol=1e-5)
+
+ # check output is correct
+ expect_equivalent(coef(fm_C),
+ c(0.7921122,-1.8328867,0.4268205,-0.1442194,0.4634105,0.7787513,
+ 0.8008794,1.0569827,0.8048578,0.8779660,0.9374874,0.7064848),tol=1e-3)
+
+ # check methods
+ gp <- getP(fm_C)
+ expect_equal(dim(gp), dim(woodthrushUMF@y))
+
+ pr <- predict(fm_C, 'state')
+ expect_equal(dim(pr), c(50,4))
+ expect_equal(pr[1,1], 2.204779, tol=1e-4)
+
+ pr <- predict(fm_C, 'det')
+ expect_equal(dim(pr), c(550,4))
+ expect_equal(pr[1,1], 0.13806, tol=1e-4)
+
+ res <- residuals(fm_C)
+ expect_equal(dim(res), dim(woodthrushUMF@y))
+ expect_equal(res[1,1], 0.73757, tol=1e-4)
+ r <- ranef(fm_C, K=10)
+ expect_equal(dim(r@post), c(50,11,1))
+
+ s <- simulate(fm_C, 2)
+ expect_equal(length(s), 2)
+ expect_equal(dim(s[[1]]), dim(woodthrushUMF@y))
+
+ pb <- parboot(fm_C, nsim=1)
+ expect_is(pb, "parboot")
+
+ # check error if random effect in formula
+ expect_error(occuRN(~(1|dummy)~1, umf))
+})
+
+test_that("occuRN can handle NAs",{
+
+ data(birds)
+ woodthrushUMF <- unmarkedFrameOccu(woodthrush.bin)
+
+ #Remove one observation
+ woodthrushUMF@y[1,1] <- NA
+
+ fm_C <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="C", K=10)
+ #fm_R <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="R")
+
+ # check that output matches
+ #expect_equivalent(coef(fm_C),coef(fm_R),tol=1e-5)
+
+ # check output is correct
+ expect_equivalent(coef(fm_C),
+ c(0.793042, -1.902789, 0.494098, -0.074573, 0.53074, 0.845903,
+ 0.867936, 1.123959, 0.871912, 0.944917, 1.004499, 0.773679), tol=1e-3)
+
+ #Remove entire site
+ woodthrush.bin_na <- woodthrush.bin
+ woodthrush.bin_na[1,] <- NA
+ woodthrushUMF <- unmarkedFrameOccu(woodthrush.bin_na)
+
+ expect_warning(fm_C <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="C", K=10))
+ #fm_R <- occuRN(~ obsNum ~ 1, woodthrushUMF, engine="R")
+
+ # check that site was removed
+ expect_equivalent(fm_C@sitesRemoved,1)
+
+ # check that output matches
+ #expect_equivalent(coef(fm_C),coef(fm_R),tol=1e-5)
+
+ # check output is correct
+ expect_equivalent(coef(fm_C),
+ c(0.783066, -1.920232, 0.448369, -0.009701, 0.490085, 0.814767,
+ 0.837669, 1.097903, 0.842467, 0.916831, 0.976707, 0.740672), tol=1e-3)
+})
+