MCMC-intervals | R Documentation |
Plot central (quantile-based) posterior interval estimates from MCMC draws. See the Plot Descriptions section, below, for details.
mcmc_intervals(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
prob = 0.5,
prob_outer = 0.9,
point_est = c("median", "mean", "none"),
outer_size = 0.5,
inner_size = 2,
point_size = 4,
rhat = numeric()
)
mcmc_areas(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
area_method = c("equal area", "equal height", "scaled height"),
prob = 0.5,
prob_outer = 1,
point_est = c("median", "mean", "none"),
rhat = numeric(),
border_size = NULL,
bw = NULL,
adjust = NULL,
kernel = NULL,
n_dens = NULL
)
mcmc_areas_ridges(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
prob_outer = 1,
prob = 1,
border_size = NULL,
bw = NULL,
adjust = NULL,
kernel = NULL,
n_dens = NULL
)
mcmc_intervals_data(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
prob = 0.5,
prob_outer = 0.9,
point_est = c("median", "mean", "none"),
rhat = numeric()
)
mcmc_areas_data(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
prob = 0.5,
prob_outer = 1,
point_est = c("median", "mean", "none"),
rhat = numeric(),
bw = NULL,
adjust = NULL,
kernel = NULL,
n_dens = NULL
)
mcmc_areas_ridges_data(
x,
pars = character(),
regex_pars = character(),
transformations = list(),
...,
prob_outer = 1,
prob = 1,
bw = NULL,
adjust = NULL,
kernel = NULL,
n_dens = NULL
)
x |
An object containing MCMC draws:
|
pars |
An optional character vector of parameter names. If neither
|
regex_pars |
An optional regular expression to use for
parameter selection. Can be specified instead of |
transformations |
Optionally, transformations to apply to parameters
before plotting. If Note: due to partial argument matching |
... |
Currently unused. |
prob |
The probability mass to include in the inner interval (for
|
prob_outer |
The probability mass to include in the outer interval. The
default is |
point_est |
The point estimate to show. Either |
inner_size , outer_size |
For |
point_size |
For |
rhat |
An optional numeric vector of R-hat estimates, with one element
per parameter included in |
area_method |
How to constrain the areas in |
border_size |
For |
bw , adjust , kernel , n_dens |
Optional arguments passed to
|
The plotting functions return a ggplot object that can be further
customized using the ggplot2 package. The functions with suffix
_data()
return the data that would have been drawn by the plotting
function.
mcmc_intervals()
Plots of uncertainty intervals computed from posterior draws with all chains merged.
mcmc_areas()
Density plots computed from posterior draws with all chains merged, with uncertainty intervals shown as shaded areas under the curves.
mcmc_areas_ridges()
Density plot, as in mcmc_areas()
, but drawn with overlapping
ridgelines. This plot provides a compact display of (hierarchically)
related distributions.
Other MCMC:
MCMC-combos
,
MCMC-diagnostics
,
MCMC-distributions
,
MCMC-nuts
,
MCMC-overview
,
MCMC-parcoord
,
MCMC-recover
,
MCMC-scatterplots
,
MCMC-traces
set.seed(9262017)
# load ggplot2 to use its functions to modify our plots
library(ggplot2)
# some parameter draws to use for demonstration
x <- example_mcmc_draws(params = 6)
dim(x)
dimnames(x)
color_scheme_set("brightblue")
mcmc_intervals(x)
mcmc_intervals(x, pars = c("beta[1]", "beta[2]"))
mcmc_areas(x, regex_pars = "beta\\[[1-3]\\]", prob = 0.8) +
labs(
title = "Posterior distributions",
subtitle = "with medians and 80% intervals"
)
color_scheme_set("red")
p <- mcmc_areas(
x,
pars = c("alpha", "beta[4]"),
prob = 2/3,
prob_outer = 0.9,
point_est = "mean",
border_size = 1.5 # make the ridgelines fatter
)
plot(p)
# control spacing at top and bottom of plot
# see ?ggplot2::expansion
p + scale_y_discrete(
limits = c("beta[4]", "alpha"),
expand = expansion(add = c(1, 2))
)
p + scale_y_discrete(
limits = c("beta[4]", "alpha"),
expand = expansion(add = c(.1, .3))
)
# relabel parameters
p + scale_y_discrete(
labels = c("alpha" = "param label 1",
"beta[4]" = "param label 2")
)
# relabel parameters and define the order
p + scale_y_discrete(
labels = c("alpha" = "param label 1",
"beta[4]" = "param label 2"),
limits = c("beta[4]", "alpha")
)
# color by rhat value
color_scheme_set("blue")
fake_rhat_values <- c(1, 1.07, 1.3, 1.01, 1.15, 1.005)
mcmc_intervals(x, rhat = fake_rhat_values)
# get the dataframe that is used in the plotting functions
mcmc_intervals_data(x)
mcmc_intervals_data(x, rhat = fake_rhat_values)
mcmc_areas_data(x, pars = "alpha")
color_scheme_set("gray")
p <- mcmc_areas(x, pars = c("alpha", "beta[4]"), rhat = c(1, 1.1))
p + legend_move("bottom")
p + legend_move("none") # or p + legend_none()
# Different area calculations
b3 <- c("beta[1]", "beta[2]", "beta[3]")
mcmc_areas(x, pars = b3, area_method = "equal area") +
labs(
title = "Curves have same area",
subtitle = "A wide, uncertain interval is spread thin when areas are equal"
)
mcmc_areas(x, pars = b3, area_method = "equal height") +
labs(
title = "Curves have same maximum height",
subtitle = "Local curvature is clearer but more uncertain curves use more area"
)
mcmc_areas(x, pars = b3, area_method = "scaled height") +
labs(
title = "Same maximum heights but heights scaled by square-root",
subtitle = "Compromise: Local curvature is accentuated and less area is used"
)
# apply transformations
mcmc_intervals(
x,
pars = c("beta[2]", "sigma"),
transformations = list("sigma" = "log", "beta[2]" = function(x) x + 3)
)
# apply same transformation to all selected parameters
mcmc_intervals(x, regex_pars = "beta", transformations = "exp")
## Not run:
# example using fitted model from rstanarm package
library(rstanarm)
fit <- stan_glm(
mpg ~ 0 + wt + factor(cyl),
data = mtcars,
iter = 500,
refresh = 0
)
x <- as.matrix(fit)
color_scheme_set("teal")
mcmc_intervals(x, point_est = "mean", prob = 0.8, prob_outer = 0.95)
mcmc_areas(x, regex_pars = "cyl", bw = "SJ",
rhat = rhat(fit, regex_pars = "cyl"))
## End(Not run)
## Not run:
# Example of hierarchically related parameters
# plotted with ridgelines
m <- shinystan::eight_schools@posterior_sample
mcmc_areas_ridges(m, pars = "mu", regex_pars = "theta", border_size = 0.75) +
ggtitle("Treatment effect on eight schools (Rubin, 1981)")
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.