Learn R Programming

rstan (version 2.7.0-1)

traceplot-methods: traceplot: draw the traces of the sample

Description

Draw the traceplot corresponding to one or more Markov chains, providing a visual way to inspect sampling behavior and assess mixing across chains and convergence.

Usage

## S3 method for class 'stanfit':
traceplot(object, pars, inc_warmup = TRUE, ask = FALSE,
    nrow = 4, ncol = 2, window = NULL, include = TRUE, ...)

Arguments

object
An instance of class stanfit.
pars
A vector of character string specifying the parameters to be plotted if include = TRUE. If include = FALSE, the elements of pars are excluded.
inc_warmup
TRUE or FALSE, indicating whether the warmup sample are included in the trace plot; defaults to TRUE
ask
TRUE or FALSE, to control (for the current device) whether the user is prompted before starting a new page of output in the case there are a lot of parameters (see devA
nrow
To specify the layout for the traceplots for multiple quantities: number of rows on every page. Together with ncol, the layout would be nrow * ncol. The layout by specifying nrow and ncol takes effects o
ncol
To specify the layout for the traceplots for multiple quantities: number of columns on every page.
window
To specify a window of all the iterations for plotting. Default of NULL means plotting all iterations. window needs to be an integer vector of at least length 1; smaller one specifies the starting iteration and the bigger one t
include
Logical scalar indicating whether to include (the default) or exclude the elements given by the pars argument.
...
Additional parameters passed to the underlying function plot.

Value

  • NULL

See Also

devAskNewPage

Examples

Run this code
library(rstan) 
fit <- stan(model_code = "parameters {real y;} model {y ~ normal(0,1);}") 
traceplot(fit)


# Create a stanfit object from reading CSV files of samples (saved in rstan
# package) generated by funtion stan for demonstration purpose from model as follows. 
# 
excode <- '
  transformed data {
    real y[20];
    y[1] <- 0.5796;  y[2]  <- 0.2276;   y[3] <- -0.2959; 
    y[4] <- -0.3742; y[5]  <- 0.3885;   y[6] <- -2.1585;
    y[7] <- 0.7111;  y[8]  <- 1.4424;   y[9] <- 2.5430; 
    y[10] <- 0.3746; y[11] <- 0.4773;   y[12] <- 0.1803; 
    y[13] <- 0.5215; y[14] <- -1.6044;  y[15] <- -0.6703; 
    y[16] <- 0.9459; y[17] <- -0.382;   y[18] <- 0.7619;
    y[19] <- 0.1006; y[20] <- -1.7461;
  }
  parameters {
    real mu;
    real<lower=0, upper=10> sigma;
    vector[2] z[3];
    real<lower=0> alpha;
  } 
  model {
    y ~ normal(mu, sigma);
    for (i in 1:3) 
      z[i] ~ normal(0, 1);
    alpha ~ exponential(2);
  } 
'
# exfit <- stan(model_code = excode, save_dso = FALSE, iter = 200, 
#               sample_file = "rstan_doc_ex.csv")
# 
exfit <- read_stan_csv(dir(system.file('misc', package = 'rstan'),
                       pattern='rstan_doc_ex_[[:digit:]].csv',
                       full.names = TRUE))

print(exfit)
## only print some parameters
print(exfit, pars = c("sigma", "alpha"))
traceplot(exfit)
traceplot(exfit, pars = "sigma")

## make traceplots of z[1,1], z[1,2], z[2,1], z[2,2]
traceplot(exfit, pars = paste0("z[", c(1, 1, 2, 2), ",", c(1, 2, 1, 2), "]"))

Run the code above in your browser using DataLab