aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Kellner <ken@kenkellner.com>2022-04-07 14:29:53 -0400
committerKen Kellner <ken@kenkellner.com>2022-04-07 14:29:53 -0400
commit73b9948f109ab5c2f0fec4812833f189d88d8b08 (patch)
tree5e12e98385e59a2044c6c4126211ba6d5c974867
parentfde76ddf42366bf3c97f425e0f5c572f44198310 (diff)
Use new loglik code instead of saving log_lik parameter when possible
-rw-r--r--DESCRIPTION7
-rw-r--r--NAMESPACE1
-rw-r--r--R/fit.R30
-rw-r--r--R/fitlist.R3
-rw-r--r--R/inputs.R7
-rw-r--r--R/kfold.R80
-rw-r--r--R/loglik.R151
-rw-r--r--R/ubmsFit-methods.R12
-rw-r--r--man/extract_log_lik.Rd34
-rw-r--r--src/loglik.cpp (renamed from src/kfold.cpp)0
-rw-r--r--tests/testthat/test_distsamp.R2
-rw-r--r--tests/testthat/test_fit.R13
-rw-r--r--tests/testthat/test_spatial.R7
-rw-r--r--tests/testthat/test_ubmsFit_methods.R2
14 files changed, 227 insertions, 122 deletions
diff --git a/DESCRIPTION b/DESCRIPTION
index 4342039..5b2ce8c 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -61,11 +61,12 @@ Collate:
'distsamp.R'
'fitlist.R'
'kfold.R'
- 'occuRN.R'
- 'mb_chisq.R'
- 'multinomPois.R'
'occuTTD.R'
+ 'multinomPois.R'
+ 'occuRN.R'
'pcount.R'
+ 'loglik.R'
+ 'mb_chisq.R'
'plot_effects.R'
'plot_posteriors.R'
'predict.R'
diff --git a/NAMESPACE b/NAMESPACE
index a2ca771..66e95af 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -2,6 +2,7 @@
export(RSR)
export(cauchy)
+export(extract_log_lik)
export(gamma)
export(gof)
export(logistic)
diff --git a/R/fit.R b/R/fit.R
index 03d276e..d7f60fc 100644
--- a/R/fit.R
+++ b/R/fit.R
@@ -26,15 +26,15 @@ ubmsFit <- function(model, call, data, response, submodels, ...){
#Fit model
fit <- fit_model(model, response, submodels, ...)
- # Exit early if just returning Stan inputs
- if(check_return_inputs(...)) return(fit)
#Remove placeholder submodels
submodels <- remove_placeholders(submodels)
#Construct output
- new(fit_class(model), call=call, data=data, stanfit=fit,
- response=response, submodels=submodels, loo=get_loo(fit))
+ out <- new(fit_class(model), call=call, data=data, stanfit=fit,
+ response=response, submodels=submodels, loo=empty_loo())
+ out@loo <- get_loo(out)
+ out
}
remove_placeholders <- function(submodels){
@@ -43,17 +43,6 @@ remove_placeholders <- function(submodels){
submodels
}
-# Function to check if just Stan inputs should be returned
-# Used by kfold method
-# Pass return_inputs=TRUE in ... when calling stan_*
-check_return_inputs <- function(...){
- args <- list(...)
- if("return_inputs" %in% names(args)){
- if(args$return_inputs) return(TRUE)
- }
- FALSE
-}
-
fit_class <- function(mod){
cap <- paste0(toupper(substr(mod,1,1)), substr(mod,2,nchar(mod)))
paste0("ubmsFit",cap)
@@ -64,11 +53,6 @@ fit_class <- function(mod){
fit_model <- function(name, response, submodels, ...){
model <- name_to_stanmodel(name, submodels)
inp <- build_stan_inputs(name, response, submodels)
- # Should just Stan inputs be returned?
- if(check_return_inputs(...)){
- inp$submodels <- submodels
- return(inp)
- }
mod <- stanmodels[[model]]
mod@model_name <- name
fit <- sampling(mod, data=inp$stan_data, pars=inp$pars, ...)
@@ -110,9 +94,3 @@ setMethod("stanfit_names", "ubmsSubmodelList", function(object, ...){
out <- unname(out)
out
})
-
-get_loo <- function(stanfit, cores=getOption("mc.cores", 1)){
- loglik <- loo::extract_log_lik(stanfit, merge_chains=FALSE)
- r_eff <- loo::relative_eff(exp(loglik), cores=cores)
- loo::loo(loglik, r_eff=r_eff, cores=cores)
-}
diff --git a/R/fitlist.R b/R/fitlist.R
index 5da3889..ce8ae27 100644
--- a/R/fitlist.R
+++ b/R/fitlist.R
@@ -49,7 +49,8 @@ setMethod("fitList", "list", function(...){
#' @importFrom unmarked modSel
#' @export
setMethod("modSel", "ubmsFitList", function(object, ...){
- loos <- lapply(object@models, loo, ...)
+ #loos <- lapply(object@models, loo, ...)
+ loos <- lapply(object@models, function(x) x@loo)
elpd <- sapply(loos, function(x) x$estimates[1])
p_loo <- sapply(loos, function(x) x$estimates[2])
compare <- loo::loo_compare(loos)[names(elpd),]
diff --git a/R/inputs.R b/R/inputs.R
index 107eae0..81735db 100644
--- a/R/inputs.R
+++ b/R/inputs.R
@@ -3,7 +3,7 @@
model_code <- name_to_modelcode(name)
y_data <- get_stan_data(response)
- pars <- get_pars(submodels)
+ pars <- get_pars(submodels, name %in% c("occuTTD","distsamp"))
submodels <- unname(submodels@submodels)
types <- sapply(submodels, function(x) x@type)
submodel_data <- lapply(submodels, get_stan_data)
@@ -39,13 +39,14 @@ add_placeholder_priors <- function(submodel_data, types){
setGeneric("get_pars", function(object, ...) standardGeneric("get_pars"))
-setMethod("get_pars", "ubmsSubmodelList", function(object, ...){
+setMethod("get_pars", "ubmsSubmodelList", function(object, keep_loglik=FALSE, ...){
#Remove placeholder submodels - we don't want to save those parameters
submodels <- object@submodels
submodels <- submodels[!sapply(submodels, is_placeholder)]
submodels <- unname(submodels)
out <- unlist(lapply(submodels, get_pars))
- c(out, "log_lik")
+ if(keep_loglik) out <- c(out, "log_lik")
+ out
})
setMethod("get_pars", "ubmsSubmodel", function(object, ...){
diff --git a/R/kfold.R b/R/kfold.R
index 3ec8f79..f49c047 100644
--- a/R/kfold.R
+++ b/R/kfold.R
@@ -13,9 +13,9 @@
#' @export
setMethod("kfold", "ubmsFit", function(x, K=10, folds=NULL, quiet=FALSE, ...){
if(is.null(folds)){
- folds <- loo::kfold_split_random(K, numSites(x@data))
+ folds <- loo::kfold_split_random(K, unmarked::numSites(x@data))
} else {
- stopifnot(length(folds) == numSites(x@data))
+ stopifnot(length(folds) == unmarked::numSites(x@data))
stopifnot(max(folds) == K)
}
@@ -40,12 +40,12 @@ ll_fold <- function(i, object, folds){
train_data <- object@data[which(!folds==i),]
cl$data <- train_data
cl$refresh <- 0
- refit <- suppressWarnings(eval(cl))
+ refit <- suppressWarnings(eval(cl, parent.frame(3)))
test_data <- object@data[which(folds==i),]
cl$data <- test_data
cl$return_inputs <- TRUE
- inps <- eval(cl)
+ inps <- eval(cl, parent.frame(3))
refit@submodels <- inps$submodels
ll <- get_loglik(refit, inps)
@@ -55,75 +55,3 @@ ll_fold <- function(i, object, folds){
out[,not_missing] <- ll
out
}
-
-# Calculate parameter from X, Z, offset
-# Can't use posterior_linpred for this because it doesn't drop NAs
-# Inps are output from get_stan_inputs()
-calculate_par <- function(object, inps, submodel){
- X <- inps$stan_data[[paste0("X_",submodel)]]
- beta <- extract(object, paste0("beta_", submodel))[[1]]
- lp <- X %*% t(beta)
- if(inps$stan_data[[paste0("has_random_",submodel)]]){
- Z <- Z_matrix(inps$submodels[submodel])
- b <- extract(object, paste0("b_", submodel))[[1]]
- lp <- lp + Z %*% t(b)
- }
- lp <- lp + inps$stan_data[[paste0("offset_",submodel)]]
- do.call(inps$submodels[submodel]@link, list(lp))
-}
-
-setGeneric("get_loglik", function(object, ...) standardGeneric("get_loglik"))
-
-setMethod("get_loglik", "ubmsFit", function(object, inps, ...){
- stop("Method not available for this fit type", call.=FALSE)
-})
-
-setMethod("get_loglik", "ubmsFitOccu", function(object, inps, ...){
- psi <- calculate_par(object, inps, submodel="state")
- p <- calculate_par(object, inps, submodel="det")
- get_loglik_occu(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
- psi, p, inps$stan_data$Kmin)
-})
-
-setMethod("get_loglik", "ubmsFitPcount", function(object, inps, ...){
- lam <- calculate_par(object, inps, submodel="state")
- p <- calculate_par(object, inps, submodel="det")
- get_loglik_pcount(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
- lam, p, inps$stan_data$K, inps$stan_data$Kmin)
-})
-
-setMethod("get_loglik", "ubmsFitOccuRN", function(object, inps, ...){
- lam <- calculate_par(object, inps, submodel="state")
- p <- calculate_par(object, inps, submodel="det")
- get_loglik_occuRN(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
- lam, p, inps$stan_data$K, inps$stan_data$Kmin)
-})
-
-setMethod("get_loglik", "ubmsFitMultinomPois", function(object, inps, ...){
- lam <- calculate_par(object, inps, submodel="state")
- p <- calculate_par(object, inps, submodel="det")
- get_loglik_multinomPois(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
- lam, p, inps$stan_data$y_dist)
-})
-
-setMethod("get_loglik", "ubmsFitColext", function(object, inps, ...){
- psi <- calculate_par(object, inps, submodel="state")
- psicube <- array(NA, c(dim(psi), 2))
- psicube[,,1] <- 1 - psi
- psicube[,,2] <- psi
- psicube <- aperm(psicube, c(1,3,2))
-
- col <- calculate_par(object, inps, submodel="col")
- ext <- calculate_par(object, inps, submodel="ext")
- phicube <- array(NA, c(dim(col), 4))
- phicube[,,1] <- 1 - col
- phicube[,,2] <- col
- phicube[,,3] <- ext
- phicube[,,4] <- 1 - ext
- phicube <- aperm(phicube, c(1,3,2))
- pmat <- calculate_par(object, inps, submodel="det")
-
- get_loglik_colext(inps$stan_data$y, inps$stan_data$M, inps$stan_data$Tsamp-1,
- inps$stan_data$J, inps$stan_data$si-1, psicube,
- phicube, pmat, 1 - inps$stan_data$Kmin)
-})
diff --git a/R/loglik.R b/R/loglik.R
new file mode 100644
index 0000000..bccdf47
--- /dev/null
+++ b/R/loglik.R
@@ -0,0 +1,151 @@
+# Calculate parameter from X, Z, offset
+# Can't use posterior_linpred for this because it doesn't drop NAs
+# Inps are output from get_stan_inputs()
+calculate_par <- function(object, inps, submodel, permute=FALSE){
+ X <- inps$stan_data[[paste0("X_",submodel)]]
+ beta <- extract_posterior(object, paste0("beta_", submodel))
+ lp <- X %*% t(beta)
+ if(inps$stan_data[[paste0("has_random_",submodel)]]){
+ Z <- Z_matrix(inps$submodels[submodel])
+ b <- extract_posterior(object, paste0("b_", submodel))
+ lp <- lp + Z %*% t(b)
+ }
+ lp <- lp + inps$stan_data[[paste0("offset_",submodel)]]
+ do.call(inps$submodels[submodel]@link, list(lp))
+}
+
+extract_posterior <- function(object, par, permute=FALSE){
+ if(permute) return(extract(object@stanfit, par)[[1]])
+ ex <- extract(object@stanfit, par, permuted=FALSE)
+ smp <- lapply(1:ncol(ex), function(x){
+ sapply(1:dim(ex)[3], function(i) ex[,x,i,drop=FALSE])
+ })
+ do.call("rbind", smp)
+}
+
+setGeneric("get_loglik", function(object, ...) standardGeneric("get_loglik"))
+
+#' @include fit.R
+setMethod("get_loglik", "ubmsFit", function(object, inps, ...){
+ stop("Method not available for this fit type", call.=FALSE)
+})
+
+#' @include occu.R
+setMethod("get_loglik", "ubmsFitOccu", function(object, inps, ...){
+ psi <- calculate_par(object, inps, submodel="state")
+ p <- calculate_par(object, inps, submodel="det")
+ get_loglik_occu(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
+ psi, p, inps$stan_data$Kmin)
+})
+
+#' @include pcount.R
+setMethod("get_loglik", "ubmsFitPcount", function(object, inps, ...){
+ lam <- calculate_par(object, inps, submodel="state")
+ p <- calculate_par(object, inps, submodel="det")
+ get_loglik_pcount(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
+ lam, p, inps$stan_data$K, inps$stan_data$Kmin)
+})
+
+#' @include occuRN.R
+setMethod("get_loglik", "ubmsFitOccuRN", function(object, inps, ...){
+ lam <- calculate_par(object, inps, submodel="state")
+ p <- calculate_par(object, inps, submodel="det")
+ get_loglik_occuRN(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
+ lam, p, inps$stan_data$K, inps$stan_data$Kmin)
+})
+
+#' @include multinomPois.R
+setMethod("get_loglik", "ubmsFitMultinomPois", function(object, inps, ...){
+ lam <- calculate_par(object, inps, submodel="state")
+ p <- calculate_par(object, inps, submodel="det")
+ get_loglik_multinomPois(inps$stan_data$y, inps$stan_data$M, inps$stan_data$si-1,
+ lam, p, inps$stan_data$y_dist)
+})
+
+#' @include colext.R
+setMethod("get_loglik", "ubmsFitColext", function(object, inps, ...){
+ psi <- calculate_par(object, inps, submodel="state")
+ psicube <- array(NA, c(dim(psi), 2))
+ psicube[,,1] <- 1 - psi
+ psicube[,,2] <- psi
+ psicube <- aperm(psicube, c(1,3,2))
+
+ col <- calculate_par(object, inps, submodel="col")
+ ext <- calculate_par(object, inps, submodel="ext")
+ phicube <- array(NA, c(dim(col), 4))
+ phicube[,,1] <- 1 - col
+ phicube[,,2] <- col
+ phicube[,,3] <- ext
+ phicube[,,4] <- 1 - ext
+ phicube <- aperm(phicube, c(1,3,2))
+ pmat <- calculate_par(object, inps, submodel="det")
+
+ get_loglik_colext(inps$stan_data$y, inps$stan_data$M, inps$stan_data$Tsamp-1,
+ inps$stan_data$J, inps$stan_data$si-1, psicube,
+ phicube, pmat, 1 - inps$stan_data$Kmin)
+})
+
+
+#' Extract Pointwise Log-likelihood From Model
+#'
+#' Extracts the pointwise log-likelihood matrix or array from a model.
+#' This is useful as an input for functions in the \code{loo} package.
+#' If called on a \code{ubmsFit} object, the log-likelihood matrix or array
+#' is calculated using the posterior distributions of the parameters; the
+#' log-likelihood values are not actually saved inside the model object.
+#' If called on a \code{stanfit} object, \code{loo::extract_log_lik} is used.
+#' In this case, the log-likelihood must be saved as one of the output
+#' parameters in Stan.
+#'
+#' @param object A \code{ubmsFit} or \code{stanfit} object
+#' @param parameter_name The name of the log-likelihood parameter in the
+#' Stan output; ignored when \code{object} is a \code{ubmsFit}
+#' @param merge_chains If \code{TRUE} (the default), all Markov chains are
+#' merged together (i.e., stacked) and a matrix is returned. If ‘FALSE’
+#' they are kept separate and an array is returned.
+#'
+#' @return A matrix (samples x sites) or array (samples x chains x sites)
+#'
+#' @aliases extract_log_lik,ubmsFit-method extract_log_lik,ubmsFitOccuTTD-method
+#' @aliases extract_log_lik,ubmsFitDistsamp-method
+#' @export
+setGeneric("extract_log_lik",
+ function(object, parameter_name="log_lik", merge_chains=TRUE){
+ loo::extract_log_lik(object, parameter_name, merge_chains)
+ })
+
+setMethod("extract_log_lik", "ubmsFit",
+ function(object, parameter_name = "log_lik", merge_chains=TRUE){
+ inps <- rebuild_inputs(object)
+ ll <- get_loglik(object, inps, merge_chains)
+ if(!merge_chains){
+ nchain <- length(rstan::get_inits(object@stanfit))
+ niter <- nrow(ll) / nchain
+ ll <- array(ll, c(niter, nchain, ncol(ll)))
+ }
+ ll
+})
+
+#' @include occuTTD.R
+setMethod("extract_log_lik", "ubmsFitOccuTTD",
+ function(object, parameter_name = "log_lik", merge_chains=TRUE){
+ loo::extract_log_lik(object@stanfit, parameter_name, merge_chains)
+})
+
+#' @include distsamp.R
+setMethod("extract_log_lik", "ubmsFitDistsamp",
+ function(object, parameter_name = "log_lik", merge_chains=TRUE){
+ loo::extract_log_lik(object@stanfit, parameter_name, merge_chains)
+})
+
+get_loo <- function(object, cores=getOption("mc.cores", 1)){
+ loglik <- extract_log_lik(object, merge_chains=FALSE)
+ r_eff <- loo::relative_eff(exp(loglik), cores=cores)
+ loo::loo(loglik, r_eff=r_eff, cores=cores)
+}
+
+empty_loo <- function(){
+ out <- list()
+ class(out) <- "psis_loo"
+ out
+}
diff --git a/R/ubmsFit-methods.R b/R/ubmsFit-methods.R
index f54ff3c..ba42790 100644
--- a/R/ubmsFit-methods.R
+++ b/R/ubmsFit-methods.R
@@ -160,7 +160,7 @@ setMethod("getY", "ubmsFit", function(object){
#' @importFrom loo loo
#' @export
setMethod("loo", "ubmsFit", function(x, ..., cores=getOption("mc.cores", 1)){
- loglik <- loo::extract_log_lik(x@stanfit, merge_chains=FALSE)
+ loglik <- extract_log_lik(x, merge_chains=FALSE)
r_eff <- loo::relative_eff(exp(loglik), cores=cores)
loo::loo(loglik, r_eff=r_eff, cores=cores)
})
@@ -178,7 +178,7 @@ setMethod("loo", "ubmsFit", function(x, ..., cores=getOption("mc.cores", 1)){
#' @importFrom loo waic
#' @export
setMethod("waic", "ubmsFit", function(x, ...){
- loglik <- loo::extract_log_lik(x@stanfit)
+ loglik <- extract_log_lik(x)
loo::waic(loglik)
})
@@ -285,3 +285,11 @@ was_parallel <- function(object){
setMethod("get_stancode", "ubmsFit", function(object, ...){
rstan::get_stancode(object@stanfit, ...)
})
+
+# Re-create inputs
+rebuild_inputs <- function(object){
+ inps <- build_stan_inputs(object@stanfit@model_name,
+ object@response, object@submodels)
+ inps$submodels <- object@submodels
+ inps
+}
diff --git a/man/extract_log_lik.Rd b/man/extract_log_lik.Rd
new file mode 100644
index 0000000..371b894
--- /dev/null
+++ b/man/extract_log_lik.Rd
@@ -0,0 +1,34 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/loglik.R
+\name{extract_log_lik}
+\alias{extract_log_lik}
+\alias{extract_log_lik,ubmsFit-method}
+\alias{extract_log_lik,ubmsFitOccuTTD-method}
+\alias{extract_log_lik,ubmsFitDistsamp-method}
+\title{Extract Pointwise Log-likelihood From Model}
+\usage{
+extract_log_lik(object, parameter_name = "log_lik", merge_chains = TRUE)
+}
+\arguments{
+\item{object}{A \code{ubmsFit} or \code{stanfit} object}
+
+\item{parameter_name}{The name of the log-likelihood parameter in the
+Stan output; ignored when \code{object} is a \code{ubmsFit}}
+
+\item{merge_chains}{If \code{TRUE} (the default), all Markov chains are
+merged together (i.e., stacked) and a matrix is returned. If ‘FALSE’
+they are kept separate and an array is returned.}
+}
+\value{
+A matrix (samples x sites) or array (samples x chains x sites)
+}
+\description{
+Extracts the pointwise log-likelihood matrix or array from a model.
+This is useful as an input for functions in the \code{loo} package.
+If called on a \code{ubmsFit} object, the log-likelihood matrix or array
+is calculated using the posterior distributions of the parameters; the
+log-likelihood values are not actually saved inside the model object.
+If called on a \code{stanfit} object, \code{loo::extract_log_lik} is used.
+In this case, the log-likelihood must be saved as one of the output
+parameters in Stan.
+}
diff --git a/src/kfold.cpp b/src/loglik.cpp
index 16b3b88..16b3b88 100644
--- a/src/kfold.cpp
+++ b/src/loglik.cpp
diff --git a/tests/testthat/test_distsamp.R b/tests/testthat/test_distsamp.R
index 101d22f..8a8c22a 100644
--- a/tests/testthat/test_distsamp.R
+++ b/tests/testthat/test_distsamp.R
@@ -95,7 +95,7 @@ test_that("stan_distsamp produces accurate results",{
stan_mod <- suppressWarnings(stan_distsamp(~1~1, ltUMF_big, keyfun="exp",
chains=2, iter=200, refresh=0))
um_mod <- distsamp(~1~1, ltUMF_big, keyfun="exp")
- expect_RMSE(coef(stan_mod), coef(um_mod), 0.01)
+ expect_RMSE(coef(stan_mod), coef(um_mod), 0.02)
stan_mod <- suppressWarnings(stan_distsamp(~1~1, ltUMF_big, output="abund",
chains=2, iter=200, refresh=0))
diff --git a/tests/testthat/test_fit.R b/tests/testthat/test_fit.R
index 636dd01..6ff842d 100644
--- a/tests/testthat/test_fit.R
+++ b/tests/testthat/test_fit.R
@@ -36,8 +36,9 @@ test <- process_stanfit(sf, sl)
skip_if(!good_fit, "Test setup failed")
test_that("ubmsFit object is constructed correctly",{
-
- ufit <- suppressWarnings(ubmsFit("occu", call("dummy"), umf, resp, sl,
+ ufit <- suppressWarnings(ubmsFit("occu",
+ as.call(str2lang("stan_occu(formula = ~1 ~ 1, data = umf, chains = 2, iter = 40)")),
+ umf, resp, sl,
chains=2, iter=40, refresh=0))
expect_true(inherits(ufit, "ubmsFit"))
expect_true(inherits(ufit@stanfit, "stanfit"))
@@ -58,10 +59,10 @@ test_that("remove_placeholders removes placeholder submodels from list",{
expect_equal(list_remove, sl)
})
-test_that("get_loo generates loo object from stanfit",{
- loo_obj <- suppressWarnings(get_loo(sf))
- expect_true(inherits(loo_obj, "psis_loo"))
-})
+#test_that("get_loo generates loo object from stanfit",{
+# loo_obj <- suppressWarnings(get_loo(sf))
+# expect_true(inherits(loo_obj, "psis_loo"))
+#})
test_that("fit_model builds model correctly",{
ufit <- suppressWarnings(
diff --git a/tests/testthat/test_spatial.R b/tests/testthat/test_spatial.R
index ed1307a..bb1f33f 100644
--- a/tests/testthat/test_spatial.R
+++ b/tests/testthat/test_spatial.R
@@ -26,10 +26,11 @@ for (i in sample(1:500, 300, replace=FALSE)){
}
umf <- unmarkedFrameOccu(y=y, siteCovs=dat_occ, obsCovs=dat_p)
-
+umf20 <- umf[1:20,]
+umf10 <- umf[1:10,]
fit <- suppressMessages(suppressWarnings(stan_occu(~1~cov1+RSR(x,y,1),
- data=umf[1:20,], chains=2, iter=200, refresh=0)))
-fit2 <- suppressWarnings(stan_occu(~1~1, data=umf[1:10,], chains=2, iter=200, refresh=0))
+ data=umf20, chains=2, iter=200, refresh=0)))
+fit2 <- suppressWarnings(stan_occu(~1~1, data=umf10, chains=2, iter=200, refresh=0))
test_that("spatial model output structure", {
expect_is(fit, "ubmsFitOccu")
diff --git a/tests/testthat/test_ubmsFit_methods.R b/tests/testthat/test_ubmsFit_methods.R
index 8acc733..c5974d5 100644
--- a/tests/testthat/test_ubmsFit_methods.R
+++ b/tests/testthat/test_ubmsFit_methods.R
@@ -88,7 +88,7 @@ test_that("extract method works for ubmsFit",{
ex_all <- extract(fit)
expect_is(ex_all, "list")
expect_equal(names(ex_all), c("beta_state","b_state","sigma_state",
- "beta_det","log_lik","lp__"))
+ "beta_det","lp__"))
})
test_that("traceplot method works for ubmsFit",{