Generated draws from the posterior predictive distribution
of a bsts
object.
# S3 method for bsts
predict(object,
newdata = NULL,
horizon = 1,
burn = SuggestBurn(.1, object),
na.action = na.exclude,
olddata = NULL,
trials.or.exposure = 1,
quantiles = c(.025, .975),
...)
An object of class bsts
created by a call to the
function bsts
.
a vector, matrix, or data frame containing the
predictor variables to use in making the prediction. This is only
required if object
contains a regression compoent. If a data
frame, it must include variables with the same names as the data
used to fit object
. The first observation in newdata
is assumed to be one time unit after the end of the last observation
used in fitting object
, and the subsequent observations are
sequential time points. If the regression part of object
contains only a single predictor then newdata
can be a
vector. If newdata
is passed as a matrix it is the caller's
responsibility to ensure that it contains the correct number of
columns and that the columns correspond to those in
object$coefficients
.
An integer specifying the number of periods into the
future you wish to predict. If object
contains a regression
component then the forecast horizon is nrow(X)
, and this
argument is not used.
An integer describing the number of MCMC
iterations in object
to be discarded as burn-in. If
burn <= 0
then no burn-in period will be discarded.
A function determining what should be done with
missing values in newdata
.
This is an optional component allowing predictions to
be made conditional on data other than the data used to fit the
model. If omitted, then it is assumed that forecasts are to be made
relative to the final observation in the training data. If
olddata
is supplied then it will be filtered to get the
distribution of the next state before a prediction is made, and it
is assumed that the first entry in newdata
comes immediately
after the last entry in olddata
.
The value for olddata
depends on whether or not object
contains a regression component.
If a regression component is present, then olddata
is a data.frame
including variables with the same names
as the data used to fit object
, including the response .
If no regression component is present, then olddata
is a vector containing historical values of a time series.
For logit or Poisson models, the number of
binomial trials (or the exposure time) to assume at each time point
in the forecast period. This can either be a scalar (if the number
of trials is to be the same for each time period), or it can be a
vector with length equal to horizon
(if the model contains no
regression term) or nrow(newdata)
if the model contains a
regression term.
A numeric vector of length 2 giving the lower and upper quantiles to use for the forecast interval estimate.
This is a dummy argument included to match the signature
of the generic predict
function. It is not used.
Returns an object of class bsts.prediction
, which is a list
with the following components.
A vector giving the posterior mean of the prediction.
A two (column/row?) matrix giving the upper and lower bounds of the 95 percent credible interval for the prediction.
A matrix of draws from the posterior predictive distribution. Each row in the matrix is one MCMC draw. Columns represent time.
Samples from the posterior distribution of a Bayesian structural time series model. This function can be used either with or without contemporaneous predictor variables (in a time series regression).
If predictor variables are present, the regression coefficients are fixed (as opposed to time varying, though time varying coefficients might be added as state component). The predictors and response in the formula are contemporaneous, so if you want lags and differences you need to put them in the predictor matrix yourself.
If no predictor variables are used, then the model is an ordinary state space time series model.
Harvey (1990), "Forecasting, structural time series, and the Kalman filter", Cambridge University Press.
Durbin and Koopman (2001), "Time series analysis by state space methods", Oxford University Press.
bsts
.
AddLocalLevel
.
AddLocalLinearTrend
.
AddGeneralizedLocalLinearTrend
.
# NOT RUN {
data(AirPassengers)
y <- log(AirPassengers)
ss <- AddLocalLinearTrend(list(), y)
ss <- AddSeasonal(ss, y, nseasons = 12)
model <- bsts(y, state.specification = ss, niter = 500)
pred <- predict(model, horizon = 12, burn = 100)
plot(pred)
# }
Run the code above in your browser using DataLab