aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Kellner <ken@kenkellner.com>2022-08-24 14:07:16 -0400
committerKen Kellner <ken@kenkellner.com>2022-08-24 14:07:16 -0400
commit5063b596ad880b1cba772090c1e48eb13a7c7bdd (patch)
tree0213132dada09869173086e5885f10e6eeb24f8f
parent27f104bbd349ecacf704a8e9b3c287b3bedab5d0 (diff)
Roll back changes to GDR lambda calculations from 7c65a32f8, they result in bad simulated datasets
-rw-r--r--DESCRIPTION4
-rw-r--r--R/gdistremoval.R21
-rw-r--r--R/simulate.R20
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)