Extract the posterior sample
For models fit using MCMC (algorithm="sampling"
), the posterior sample
—the post-warmup draws from the posterior distribution— can be extracted
from a fitted model object as a matrix, data frame, or array. The
as.matrix
and as.data.frame
methods merge all chains together,
whereas the as.array
method keeps the chains separate. For models fit
using optimization ("optimizing"
) or variational inference
("meanfield"
or "fullrank"
), there is no posterior sample but
rather a matrix (or data frame) of 1000 draws from either the asymptotic
multivariate Gaussian sampling distribution of the parameters or the
variational approximation to the posterior distribution.
## S3 method for class 'stanreg' as.matrix(x, ..., pars = NULL, regex_pars = NULL) ## S3 method for class 'stanreg' as.array(x, ..., pars = NULL, regex_pars = NULL) ## S3 method for class 'stanreg' as.data.frame(x, ..., pars = NULL, regex_pars = NULL)
x |
A fitted model object returned by one of the
rstanarm modeling functions. See |
... |
Ignored. |
pars |
An optional character vector of parameter names. |
regex_pars |
An optional character vector of regular
expressions to use for parameter selection. |
A matrix, data.frame, or array, the dimensions of which depend on
pars
and regex_pars
, as well as the model and estimation
algorithm (see the Description section above).
if (!exists("example_model")) example(example_model) # Extract posterior sample after MCMC draws <- as.matrix(example_model) print(dim(draws)) # For example, we can see that the median of the draws for the intercept # is the same as the point estimate rstanarm uses print(median(draws[, "(Intercept)"])) print(example_model$coefficients[["(Intercept)"]]) # The as.array method keeps the chains separate draws_array <- as.array(example_model) print(dim(draws_array)) # iterations x chains x parameters # Extract draws from asymptotic Gaussian sampling distribution # after optimization fit <- stan_glm(mpg ~ wt, data = mtcars, algorithm = "optimizing") draws <- as.data.frame(fit) print(colnames(draws)) print(nrow(draws)) # 1000 draws are taken # Extract draws from variational approximation to the posterior distribution fit2 <- update(fit, algorithm = "meanfield") draws <- as.data.frame(fit2, pars = "wt") print(colnames(draws)) print(nrow(draws)) # 1000 draws are taken
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.