plot.tsmodel.distribution {tsmethods}R Documentation

Plots of predictive distributions

Description

Plots for objects generated from probabilistic models returning a forecast distribution.

Usage

## S3 method for class 'tsmodel.distribution'
plot(
  x,
  y = NULL,
  median_color = "black",
  median_type = 1,
  median_width = 3,
  interval_quantiles = c(0.025, 0.975),
  gradient_color = "steelblue",
  interval_color = "cyan",
  interval_type = 2,
  interval_width = 2,
  ylim = NULL,
  ylab = "",
  n_x = NCOL(x),
  x_axes = TRUE,
  add = FALSE,
  zero_out = FALSE,
  date_class = "Date",
  ...
)

## S3 method for class 'tsmodel.predict'
plot(
  x,
  y = NULL,
  plot_original = TRUE,
  median_color = "black",
  median_type = 1,
  median_width = 3,
  interval_quantiles = c(0.025, 0.975),
  gradient_color = "steelblue",
  interval_color = "cyan",
  interval_type = 2,
  interval_width = 2,
  ylim = NULL,
  ylab = "",
  n_original = NULL,
  x_axes = TRUE,
  zero_out = FALSE,
  ...
)

Arguments

x

an object of class “tsmodel.distribution” or “tsmodel.predict”.

y

not used.

median_color

the color used for plotting the median value.

median_type

the line type for the median.

median_width

the width of the median line.

interval_quantiles

the quantiles to include in the plot.

gradient_color

the gradient color to use for the distribution.

interval_color

the color of the quantile lines.

interval_type

the line type for the quantiles.

interval_width

the width of the quantile lines.

ylim

user specified limits for the y-axis.

ylab

user specified label for y-axis.

n_x

the number of time periods from the end to plot for x.

x_axes

whether to print the x-axis (usually time/date).

add

whether to overlay another “tsmodel.distribution” on top of a current plot. This will only plot the median and quantiles and not the full distribution with gradient color.

zero_out

whether to zero any negative value in the prediction intervals.

date_class

when overlaying (add argument) one distribution (“tsmodel.distribution” on top of another, particularly if it is added to a plot based on “tsmodel.predict”, then in order for this to work correctly the two date classes have to be the same. The “tsmodel.predict” plot method infers the class from the original time series which is contained in the object. Since the “tsmodel.distribution” carries no additional information other than the column names of the date/time stamps, then it is upto the user to supply what this should be.

...

additional arguments to the plot.default function.

plot_original

whether to include the original dataset in the plot.

n_original

the number of time periods from the end to plot for the original series. Defaults to plotting the whole series.

Value

a plot of the predicted distribution.

Note

Any matrix representing a distribution of values at points in time, with time in the columns (date labels in columns) and the distribution in rows can be set to class “tsmodel.distribution” and then passed to the plot function which can generate a nice distribution plot. The “tsmodel.predict” is a list with the posterior predictive (or simulated) distribution (the “tsmodel.distribution”) in addition to the original series (original.series) of class zoo or xts.

Examples

library(xts)
months <- c("01","02","03","04","05","06","07","08","09","10","11","12")
dates <- as.Date(paste0(sort(rep(1973:1978, 12)),"-",rep(months, 6), "-",rep("01",12*6)))
y <- xts(as.numeric(USAccDeaths), dates)
samples <- do.call(cbind, lapply(1:12, 
function(i){sample(as.numeric(y[format(index(y),"%m") == months[i]]), 100, replace = TRUE)}))
predict_dates <- as.Date(paste0(rep(1979, 12),"-",months, "-",rep("01",12)))
expected_value <- colMeans(samples)
p <- list()
colnames(samples) <- as.character(predict_dates)
class(samples) <- "tsmodel.distribution"
p$original_series <- y
p$distribution <- samples
p$mean <- xts(expected_value, predict_dates)
class(p) <- "tsmodel.predict"
actuals_available <- c(7798,7406,8363,8460,9217,9316)
plot(p, main = "USAccDeaths Resample Based Forecast", n_original = 12*3, 
gradient_color = "orange", interval_color = "deepskyblue", median_width = 1.5)
points(predict_dates[1:6], actuals_available, col = "green", cex = 1.5)

[Package tsmethods version 1.0.1 Index]