aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Kellner <ken@kenkellner.com>2024-04-01 10:00:52 -0400
committerKen Kellner <ken@kenkellner.com>2024-04-01 10:00:52 -0400
commit1815977b07218e38bcb34de745dfe43ec36429c2 (patch)
tree674198c0deb818c8138ac49024d6fc8e040c455a
parent5b2b00e6cb1befc8a1bb73b1607968e7f014b0c3 (diff)
Fix fitted with certain Dail-Madsen models, fixes #278HEADmaster
-rw-r--r--R/unmarkedFit.R6
-rw-r--r--tests/testthat/test_pcountOpen.R13
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)))
+
})