as_draws_matrix.projection function

Extract projected parameter draws and coerce to draws_matrix (see package posterior)

Extract projected parameter draws and coerce to draws_matrix (see package posterior)

These are the posterior::as_draws() and posterior::as_draws_matrix()

methods for projection objects (returned by project(), possibly as elements of a list). They extract the projected parameter draws and return them as a draws_matrix. In case of different (i.e., nonconstant) weights for the projected draws, a draws_matrix allows for a safer handling of these weights (safer in contrast to the matrix returned by as.matrix.projection()), in particular by providing the natural input for posterior::resample_draws() (see section "Examples" below).

## S3 method for class 'projection' as_draws_matrix(x, ...) ## S3 method for class 'projection' as_draws(x, ...)

Arguments

  • x: An object of class projection (returned by project(), possibly as elements of a list).
  • ...: Arguments passed to as.matrix.projection(), except for allow_nonconst_wdraws_prj.

Returns

An SprjxQS_prj x Q draws_matrix (see posterior::draws_matrix()) of projected draws, with SprjS_prj denoting the number of projected draws and QQ the number of parameters. If the projected draws have nonconstant weights, posterior::weight_draws() is applied internally.

Details

In case of the augmented-data projection for a multilevel submodel of a brms::categorical() reference model, the multilevel parameters (and therefore also their names) slightly differ from those in the brms

reference model fit (see section "Augmented-data projection" in extend_family()'s documentation).

Examples

# Data: dat_gauss <- data.frame(y = df_gaussian$y, df_gaussian$x) # The `stanreg` fit which will be used as the reference model (with small # values for `chains` and `iter`, but only for technical reasons in this # example; this is not recommended in general): fit <- rstanarm::stan_glm( y ~ X1 + X2 + X3 + X4 + X5, family = gaussian(), data = dat_gauss, QR = TRUE, chains = 2, iter = 500, refresh = 0, seed = 9876 ) # Projection onto an arbitrary combination of predictor terms (with a small # value for `nclusters`, but only for illustrative purposes; this is not # recommended in general): prj <- project(fit, predictor_terms = c("X1", "X3", "X5"), nclusters = 5, seed = 9182) # Applying the posterior::as_draws_matrix() generic to the output of # project() dispatches to the projpred::as_draws_matrix.projection() # method: prj_draws <- posterior::as_draws_matrix(prj) # Resample the projected draws according to their weights: set.seed(3456) prj_draws_resampled <- posterior::resample_draws(prj_draws, ndraws = 1000) # The values from the following two objects should be the same (in general, # this only holds approximately): print(proportions(table(rownames(prj_draws_resampled)))) print(weights(prj_draws)) # Treat the resampled draws like ordinary draws, e.g., summarize them: print(posterior::summarize_draws( prj_draws_resampled, "median", "mad", function(x) quantile(x, probs = c(0.025, 0.975)) )) # Or visualize them using the `bayesplot` package: if (requireNamespace("bayesplot", quietly = TRUE)) { print(bayesplot::mcmc_intervals(prj_draws_resampled)) }
  • Maintainer: Frank Weber
  • License: GPL-3 | file LICENSE
  • Last published: 2023-12-15