#' Extract the Number of Observations Used to Fit a \pkg{dynamite} Model
#'
#' @export
#' @family output
#' @param object \[`dynamitefit`]\cr The model fit object.
#' @param ... Not used.
#' @return Total number of non-missing observations as an `integer`.
#' @srrstats {RE4.5} Provides the number of observations.
#' @examples
#' data.table::setDTthreads(1) # For CRAN
#' nobs(gaussian_example_fit)
#'
nobs.dynamitefit <- function(object, ...) {
stopifnot_(
!missing(object),
"Argument {.arg object} is missing."
)
stopifnot_(
is.dynamitefit(object),
"Argument {.var object} must be a {.cls dynamitefit} object."
)
sampling_vars <- get_data(object)
cg <- attr(object$dformulas$all, "channel_groups")
n_cg <- n_unique(cg)
n_obs <- 0L
for (i in seq_len(n_cg)) {
cg_idx <- which(cg == i)
n_cg <- ifelse_(
length(cg_idx) > 1L,
paste0("n_obs_", object$stan$channel_group_vars[[i]]$y_cg),
paste0("n_obs_", object$dformulas$all[[cg_idx]]$name)
)
n_obs <- n_obs + sum(sampling_vars[[n_cg]])
}
n_obs
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.