From 1815977b07218e38bcb34de745dfe43ec36429c2 Mon Sep 17 00:00:00 2001 From: Ken Kellner Date: Mon, 1 Apr 2024 10:00:52 -0400 Subject: Fix fitted with certain Dail-Madsen models, fixes #278 --- R/unmarkedFit.R | 6 +++--- tests/testthat/test_pcountOpen.R | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/R/unmarkedFit.R b/R/unmarkedFit.R index 84740b3..ad31218 100644 --- a/R/unmarkedFit.R +++ b/R/unmarkedFit.R @@ -559,7 +559,7 @@ setMethod("fitted", "unmarkedFitDailMadsen", if(is.null(Xom.offset)) Xom.offset <- rep(0, M*(T-1)) if(is.null(Xiota.offset)) Xiota.offset <- rep(0, M*(T-1)) - lambda <- exp(Xlam %*% coef(object, 'lambda') + Xlam.offset) + lambda <- as.vector(exp(Xlam %*% coef(object, 'lambda') + Xlam.offset)) if(identical(mixture, "ZIP")) { psi <- plogis(coef(object, type="psi")) lambda <- (1-psi)*lambda @@ -618,7 +618,7 @@ setMethod("fitted", "unmarkedFitDailMadsen", N[i,t] <- N[i,t-1]*exp(gamma[i,t-1]*(1-N[i,t-1]/omega[i,t-1]))+ iota[i, t-1] else if(identical(dynamics, "gompertz")) - N[i,1] <- N[i,t-1] * exp(gamma[i,t-1]*(1-log(N[i,t-1]+1)/ + N[i,t] <- N[i,t-1] * exp(gamma[i,t-1]*(1-log(N[i,t-1]+1)/ log(omega[i,t-1]+1))) + iota[i, t-1] else N[i,t] <- N[i,t-1] * omega[i,t-1] + gamma[i,t-1] @@ -633,7 +633,7 @@ setMethod("fitted", "unmarkedFitDailMadsen", N[i, t] <- N[i, t] * exp(gamma[i, t-1] * (1 - N[i,t] / omega[i,t-1]))+ iota[i, t-1] else if(identical(dynamics, "gompertz")) - N[i, 1] <- N[i, t] * exp(gamma[i, t-1] * (1 - + N[i, t] <- N[i, t] * exp(gamma[i, t-1] * (1 - log(N[i, t]+1) / log(omega[i, t-1] + 1))) + iota[i, t-1] else diff --git a/tests/testthat/test_pcountOpen.R b/tests/testthat/test_pcountOpen.R index c4bc456..c054a53 100644 --- a/tests/testthat/test_pcountOpen.R +++ b/tests/testthat/test_pcountOpen.R @@ -353,11 +353,24 @@ test_that("pcountOpen can fit models with various dynamics",{ c(1.2131713, 0.7301736, 1.1949289), tolerance=1e-5) + # issue #278 + ft2 <- fitted(m2) + expect_equal(dim(ft2), c(20,5)) + m3 <- pcountOpen(~1, ~1, ~1, ~1, umf, K=20, dynamics="trend") expect_equivalent(coef(m3), c(1.67211946, -0.06534021, 0.18287762), tolerance=1e-5) + m4 <- pcountOpen(~1, ~1, ~1, ~1, umf, K=20, dynamics="gompertz") + expect_equivalent(coef(m3), + c(1.67211946, -0.06534021, 0.18287762), + tolerance=1e-5) + + # issue #278 + ft4 <- fitted(m4) + expect_true(all(!is.na(ft4))) + }) -- cgit v1.2.3