Maps a named uncertainty model to the corresponding fit and sample functions
for use with baselinenowcast::baselinenowcast().
Usage
get_uncertainty_fns(
model_name = c("negative_binomial", "normal", "skellam"),
robust_sample = FALSE
)Arguments
- model_name
Character. One of
"negative_binomial","normal", or"skellam".- robust_sample
Logical. If
TRUE, the returneduncertainty_sampleris made robust to invalid distribution parameters where possible. For the Skellam model this passesrobust = TRUEtosample_skellam()so that a variance <= |pred| widens the variance instead of erroring. No-op for the"normal"and"negative_binomial"models, which cannot fail this way. Default isFALSE.
Value
A named list with two elements:
uncertainty_model: A function for fitting uncertainty parametersuncertainty_sampler: A function for sampling from the fitted model
Examples
# Get normal distribution functions
fns <- get_uncertainty_fns("normal")
fns$uncertainty_model
#> function (obs, pred)
#> {
#> baselinenowcast::fit_by_horizon(obs, pred, fit_model = fit_normal)
#> }
#> <bytecode: 0x55f74b7639a0>
#> <environment: 0x55f74b766b20>
fns$uncertainty_sampler
#> function (pred, uncertainty_params)
#> {
#> uncertainty_params <- vctrs::vec_recycle(uncertainty_params,
#> size = length(pred), x_arg = "uncertainty_params")
#> sampled_pred <- round(rnorm(n = length(pred), mean = pred,
#> sd = sqrt(uncertainty_params)))
#> return(sampled_pred)
#> }
#> <bytecode: 0x55f74b768d88>
#> <environment: namespace:nowcastNHSN>
# Use with baselinenowcast
if (FALSE) { # \dontrun{
fns <- get_uncertainty_fns("skellam")
nowcast <- baselinenowcast::baselinenowcast(
reporting_triangle,
uncertainty_model = fns$uncertainty_model,
uncertainty_sampler = fns$uncertainty_sampler
)
} # }