Medians and central interval estimates of yrep with y overlaid. See the Plot Descriptions section, below.

ppc_intervals(y, yrep, x, ..., prob = 0.9, size = 1, fatten = 3)

ppc_intervals_grouped(y, yrep, x, group, facet_args = list(), ...,
  prob = 0.9, size = 1, fatten = 3)

ppc_ribbon(y, yrep, x, ..., prob = 0.9, alpha = 0.33, size = 0.25)

ppc_ribbon_grouped(y, yrep, x, group, facet_args = list(), ..., prob = 0.9,
  alpha = 0.33, size = 0.25)

Arguments

y

A vector of observations. See Details.

yrep

An \(S\) by \(N\) matrix of draws from the posterior predictive distribution, where \(S\) is the size of the posterior sample (or subset of the posterior sample used to generate yrep) and \(N\) is the number of observations (the length of y). The columns of yrep should be in the same order as the data points in y for the plots to make sense. See Details for additional instructions.

x

A numeric vector the same length as y to use as the x-axis variable. For example, x could be a predictor variable from a regression model, a time variable for time-series models, etc. If x is missing then 1:length(y) is used for the x-axis.

...

Currently unused.

prob

A value between 0 and 1 indicating the desired probability mass to include in the yrep intervals. The default is 0.9.

group

A grouping variable (a vector or factor) the same length as y. Each value in group is interpreted as the group level pertaining to the corresponding value of y.

facet_args

An optional list of arguments (other than facets) passed to facet_wrap to control faceting.

alpha, size, fatten

Arguments passed to geoms. For ribbon plots alpha and size are passed to geom_ribbon. For interval plots size and fatten are passed to geom_pointrange.

Value

A ggplot object that can be further customized using the ggplot2 package.

Plot Descriptions

ppc_intervals, ppc_ribbon

100*prob% central intervals for yrep at each x value. ppc_intervals plots intervals as vertical bars with points indicating yrep medians and darker points indicating observed y values. ppc_ribbon plots a ribbon of connected intervals with a line through the median of yrep and a darker line connecting observed y values. In both cases an optional x variable can also be specified for the x-axis variable. Depending on the number of observations and the variability in the predictions at different values of x, one or the other of these plots may be easier to read than the other.

ppc_intervals_grouped, ppc_ribbon_grouped

Same as ppc_intervals and ppc_ribbon, respectively, but a separate plot (facet) is generated for each level of a grouping variable.

References

Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., and Rubin, D. B. (2013). Bayesian Data Analysis. Chapman & Hall/CRC Press, London, third edition. (Ch. 6)

See also

Other PPCs: PPC-discrete, PPC-distributions, PPC-errors, PPC-loo, PPC-overview, PPC-scatterplots, PPC-test-statistics

Examples

y <- rnorm(50) yrep <- matrix(rnorm(5000, 0, 2), ncol = 50) color_scheme_set("brightblue") ppc_ribbon(y, yrep)
ppc_intervals(y, yrep)
color_scheme_set("teal") year <- 1950:1999 ppc_ribbon(y, yrep, x = year, alpha = 0, size = 0.75) + ggplot2::xlab("Year")
color_scheme_set("pink") year <- rep(2000:2009, each = 5) group <- gl(5, 1, length = 50, labels = LETTERS[1:5]) ppc_ribbon_grouped(y, yrep, x = year, group) + ggplot2::scale_x_continuous(breaks = pretty)
ppc_ribbon_grouped( y, yrep, x = year, group, facet_args = list(scales = "fixed"), alpha = 1, size = 2 ) + xaxis_text(FALSE) + xaxis_ticks(FALSE) + panel_bg(fill = "gray20")
# NOT RUN { library("rstanarm") fit <- stan_glmer(mpg ~ wt + (1|cyl), data = mtcars) yrep <- posterior_predict(fit) color_scheme_set("purple") with(mtcars, ppc_intervals(mpg, yrep, x = wt, prob = 0.5)) + panel_bg(fill="gray90", color = NA) + grid_lines(color = "white") ppc_intervals_grouped(y = mtcars$mpg, yrep, prob = 0.8, x = mtcars$wt, group = mtcars$cyl) color_scheme_set("gray") ppc_intervals(mtcars$mpg, yrep, prob = 0.5) + ggplot2::scale_x_continuous( labels = rownames(mtcars), breaks = 1:nrow(mtcars) ) + xaxis_text(angle = -70, vjust = 1, hjust = 0) # }