Trace and density plots of MCMC chains for specific parameters of interest. Print plots to pdf by default.
MCMCtrace(object, params = "all", excl = NULL, ISB = TRUE,
iter = 5000, gvals = NULL, priors = NULL, post_zm = TRUE,
PPO_out = FALSE, Rhat = FALSE, n.eff = FALSE, ind = FALSE,
pdf = TRUE, plot = TRUE, open_pdf = TRUE, filename, wd = getwd(),
type = "both", ylim = NULL, xlim = NULL, xlab_tr, ylab_tr,
xlab_den, ylab_den, main_den = NULL, main_tr = NULL, lwd_den = 1,
lwd_pr = 1, lty_den = 1, lty_pr = 1, col_den, col_pr, col_txt,
sz_txt = 1.2, sz_ax = 1, sz_ax_txt = 1, sz_tick_txt = 1,
sz_main_txt = 1.2, pos_tick_x_tr = NULL, pos_tick_y_tr = NULL,
pos_tick_x_den = NULL, pos_tick_y_den = NULL)
Object containing MCMC output. See DETAILS below.
Character string (or vector of character strings) denoting parameters of interest.
Default 'all'
returns chains for all parameters.
Character string (or vector of character strings) denoting parameters to exclude. Used in conjunction with params
argument to select parameters of interest.
Ignore Square Brackets (ISB). Logical specifying whether square brackets should be ignored in the params
and excl
arguments. If TRUE
, square brackets are ignored - input from params
and excl
are otherwise matched exactly. If FALSE
, square brackets are not ignored - input from params
and excl
are matched using grep, which can take arguments in regular expression format. This allows partial names to be used when specifying parameters of interest.
Number of iterations to plot for trace and density plots. The default value is 5000, meaning the last 5000 iterations of the chain will be plotted.
Vector containing generating values if simulated data was used to fit model. These values will be plotted as vertical lines on the density plots to compare posterior distributions with the true parameter values used to generate the data. No line will be apparent if the generating value is outside the plotted range of the posterior distribution.
Matrix containing random draws from prior distributions corresponding to parameters of interest. If specified, priors are plotted along with posterior density plots. Percent overlap between prior and posterior (PPO) is also calculated and displayed on each plot. Each column of the matrix represents a prior for a different parameter. Parameters are plotted alphabetically - priors should be sorted accordingly. If priors
contains only one prior and more than one parameter is specified for the params
argument, this prior will be used for all parameters. The number of draws for each prior should equal the number of iterations specified by iter
(or total draws if less than iter
) times the number of chains, though the function will automatically adjust if more or fewer iterations are specified. See DETAILS below.
Logical - if post_zm = FALSE
x- and y-limits of density plots are scaled so that both the prior and posterior can be visualized on a single density plot (rather than zoomed on the posterior).
Logical - if PPO_out = TRUE
percent overlap between prior and posterior (PPO) will be output to a dataframe.
Logical - if Rhat = TRUE
potential scale reduction factor (Rhat) for each parameter is plotted on the trace plots.
Logical - if n.eff = TRUE
number of effective samples for each parameter is plotted on the trace plots.
Logical - if ind = TRUE
, separate density lines will be plotted for each chain. If ind= FALSE
, one density line will be plotted for all chains.
Logical - if pdf = TRUE
plots will be exported to a pdf.
Logical - if plot = FALSE
no plot will be output. Designed to be used in conjunction with PPO_out = TRUE
, to calculate PPO without displaying plot output.
Logical - if open_pdf = TRUE
pdf will open in viewer after being generated.
Name of pdf file to be printed. Default is 'MCMCtrace'.
Working directory for pdf output. Default is current directory.
Type of plot to be output. 'both'
outputs both trace and density plots, 'trace'
outputs only trace plots, and 'density'
outputs only density plots.
Vector of length two specifying limits for y-axis on density plots only. If specified, overrides argument post_zm
.
Vector of length two specifying limits for x-axis on density plots only. If specified, overrides argument post_zm
.
Character string specifying label for x-axis on trace plots.
Character string specifying label for x-axis on trace plots.
Character string specifying label for x-axis on density plots.
Character string specifying label for x-axis on density plots.
Character string (or vector of character strings if plotting > 1 parameter) specifying title(s) of density plot(s).
Character string (or vector of character strings if plotting > 1 parameter) specifying title(s) of trace plot(s).
Number specifying thickness of density line on density plots.
Number specifying thickness of prior line on density plots.
Number specifying the line type for the density line on density plots.
Number specifying the line type for the prior line on density plots.
Character string specifying color of density line on density plots. Does not specify color if ind = TRUE
.
Character string specifying color of prior line on density plots.
Character string specifying color of text (denoting PPO) on plot when value specified for priors
. If NULL
is specified, no text will be plot.
Number specifying size of text (denoting PPO) when value specified for priors
. If NULL
is specified, no text will be plot.
Number specifying thickness of axes and ticks.
Number specifying size of text for axes labels.
Number specifying size of text for tick labels on axis.
Number specifying size of text for main title.
Numeric vector specifying where ticks on x-axis should be placed for trace plots.
Numeric vector specifying where ticks on y-axis should be placed for trace plots.
Numeric vector specifying where ticks on x-axis should be placed for density plots.
Numeric vector specifying where ticks on y-axis should be placed for density plots.
object
argument can be a stanfit
object (rstan
package), a stanreg
object (rstanarm
package), a brmsfit
object (brms
package), an mcmc.list
object (coda
package), an R2jags
model object (R2jags
package), a jagsUI
model object (jagsUI
package), or a matrix containing MCMC chains (each column representing MCMC output for a single parameter, rows representing iterations in the chain). The function automatically detects the object type and proceeds accordingly.
Matrices for the priors
argument can be generated using commands such as rnorm, rgamma, runif, etc. Distributions not supported by base R can be generated by using the appropriate packages. It is important to note that some discrepancies between MCMC samplers and R may exist regarding the parameterization of distributions - one example of this is the use of precision in JAGS but standard deviation in R for the 'second parameter' of the normal distribution. If the number of draws for each prior distribution is greater than the total number used for the density plot (iter
times the number of chains), the function will use a subset of the prior draws. If the number of draws for each prior distribution is less than the total number used for the density plot, the function will resample (with replacement) from the prior to obtain the appropriate number of draws.
# NOT RUN {
#Load data
data(MCMC_data)
#Traceplots for all 'beta' parameters - pdf is generated by default
MCMCtrace(MCMC_data, params = 'beta', pdf = FALSE)
#Traceplots (individual density lines for each chain) just for 'beta[1]'
#'params' takes regular expressions when ISB = FALSE, square brackets
#must be escaped with '\\'
MCMCtrace(MCMC_data, params = 'beta\\[1\\]',
ISB = FALSE, ind = TRUE, pdf = FALSE)
#Plot prior on top of posterior, calculate prior/posterior overlap (PPO)
#just for 'beta[1]'
#Add Rhat and n.eff values to density plots
#'params' takes regular expressions when ISB = FALSE, square brackets must
#be escaped with '\\'
PR <- rnorm(15000, 0, 32)
MCMCtrace(MCMC_data, params = 'beta\\[1\\]', ISB = FALSE, priors = PR,
pdf = FALSE, Rhat = TRUE, n.eff = TRUE)
#Output PPO to R object without plotting trace plots
PR <- rnorm(15000, 0, 32)
PPO <- MCMCtrace(MCMC_data, params = 'beta\\[1\\]', ISB = FALSE,
priors = PR, plot = FALSE, PPO_out = TRUE)
# }
Run the code above in your browser using DataCamp Workspace