diff options
author | Ken Kellner <ken@kenkellner.com> | 2022-08-24 14:07:16 -0400 |
---|---|---|
committer | Ken Kellner <ken@kenkellner.com> | 2022-08-24 14:07:16 -0400 |
commit | 5063b596ad880b1cba772090c1e48eb13a7c7bdd (patch) | |
tree | 0213132dada09869173086e5885f10e6eeb24f8f | |
parent | 27f104bbd349ecacf704a8e9b3c287b3bedab5d0 (diff) |
Roll back changes to GDR lambda calculations from 7c65a32f8, they result in bad simulated datasets
-rw-r--r-- | DESCRIPTION | 4 | ||||
-rw-r--r-- | R/gdistremoval.R | 21 | ||||
-rw-r--r-- | R/simulate.R | 20 |
3 files changed, 34 insertions, 11 deletions
diff --git a/DESCRIPTION b/DESCRIPTION index 5423c29..1bbd46b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: unmarked -Version: 1.2.5.9005 -Date: 2022-08-22 +Version: 1.2.5.9006 +Date: 2022-08-24 Type: Package Title: Models for Data from Unmarked Animals Authors@R: c( diff --git a/R/gdistremoval.R b/R/gdistremoval.R index 43295f4..dc91934 100644 --- a/R/gdistremoval.R +++ b/R/gdistremoval.R @@ -517,9 +517,10 @@ setMethod("fitted", "unmarkedFitGDR", function(object){ T <- object@data@numPrimary # Adjust log lambda when there is a random intercept - loglam <- log(predict(object, "lambda", level=NULL)$Predicted) - loglam <- E_loglam(loglam, object, "lambda") - lam <- exp(loglam) + #loglam <- log(predict(object, "lambda", level=NULL)$Predicted) + #loglam <- E_loglam(loglam, object, "lambda") + #lam <- exp(loglam) + lam <- predict(object, "lambda", level=NULL)$Predicted if(object@output == "density"){ ua <- getUA(object@data) A <- rowSums(ua$a) @@ -587,9 +588,10 @@ setMethod("ranef", "unmarkedFitGDR", function(object){ Kmin = apply(ysum, 1, max, na.rm=T) - loglam <- log(predict(object, "lambda", level=NULL)$Predicted) - loglam <- E_loglam(loglam, object, "lambda") - lam <- exp(loglam) + #loglam <- log(predict(object, "lambda", level=NULL)$Predicted) + #loglam <- E_loglam(loglam, object, "lambda") + #lam <- exp(loglam) + lam <- predict(object, "lambda", level=NULL)$Predicted if(object@output == "density"){ ua <- getUA(object@data) A <- rowSums(ua$a) @@ -644,9 +646,10 @@ setMethod("ranef", "unmarkedFitGDR", function(object){ setMethod("simulate", "unmarkedFitGDR", function(object, nsim, seed=NULL, na.rm=FALSE){ # Adjust log lambda when there is a random intercept - loglam <- log(predict(object, "lambda", level=NULL)$Predicted) - loglam <- E_loglam(loglam, object, "lambda") - lam <- exp(loglam) + #loglam <- log(predict(object, "lambda", level=NULL)$Predicted) + #loglam <- E_loglam(loglam, object, "lambda") + #lam <- exp(loglam) + lam <- predict(object, "lambda", level=NULL)$Predicted if(object@output == "density"){ ua <- getUA(object@data) A <- rowSums(ua$a) diff --git a/R/simulate.R b/R/simulate.R index 5df7247..a8887cb 100644 --- a/R/simulate.R +++ b/R/simulate.R @@ -64,6 +64,7 @@ setMethod("simulate", "character", model <- blank_umFit(object) fit <- suppressWarnings(simulate_fit(model, formulas, guide, design, ...)) coefs <- check_coefs(coefs, fit) + #fit <- replace_sigma(coefs, fit) coefs <- generate_random_effects(coefs, fit) fit <- replace_estimates(fit, coefs) ysims <- suppressWarnings(simulate(fit, nsim)) @@ -84,6 +85,25 @@ setMethod("simulate", "character", umfs }) +# Insert specified random effects SD into proper S4 slot in model object +# This is mostly needed by GDR which uses the SD to calculate +# N with E_loglam (this is currently disabled so the function is not needed) +#replace_sigma <- function(coefs, fit){ +# required_subs <- names(fit@estimates@estimates) +# formulas <- sapply(names(fit), function(x) get_formula(fit, x)) +# rand <- lapply(formulas, lme4::findbars) +# if(!all(sapply(rand, is.null))){ +# rvar <- lapply(rand, function(x) unlist(lapply(x, all.vars))) +# for (i in required_subs){ +# if(!is.null(rand[[i]][[1]])){ +# signame <- rvar[[i]] +# old_coefs <- coefs[[i]] +# fit@estimates@estimates[[i]]@randomVarInfo$estimates <- coefs[[i]][[signame]] +# } +# } +# } +# fit +#} generate_random_effects <- function(coefs, fit){ required_subs <- names(fit@estimates@estimates) |