bvar | R Documentation |
bvar
is used to create objects of class "bvar"
.
A plot function for objects of class "bvar"
.
Forecasting a Bayesian VAR object of class "bvar"
with credible bands.
bvar(
data = NULL,
exogen = NULL,
y,
x = NULL,
A0 = NULL,
A = NULL,
B = NULL,
C = NULL,
Sigma = NULL
)
## S3 method for class 'bvar'
plot(x, ci = 0.95, type = "hist", ...)
## S3 method for class 'bvar'
predict(object, ..., n.ahead = 10, new_x = NULL, new_d = NULL, ci = 0.95)
data |
the original time-series object of endogenous variables. |
exogen |
the original time-series object of unmodelled variables. |
y |
a time-series object of endogenous variables with |
x |
an object of class |
A0 |
either a |
A |
either a |
B |
either a |
C |
either a |
Sigma |
a |
ci |
a numeric between 0 and 1 specifying the probability mass covered by the credible intervals. Defaults to 0.95. |
type |
either |
... |
additional arguments. |
object |
an object of class |
n.ahead |
number of steps ahead at which to predict. |
new_x |
an object of class |
new_d |
a matrix of new deterministic variables. Must have |
For the VARX model
A_0 y_t = \sum_{i = 1}^{p} A_i y_{t-i} + \sum_{i = 0}^{s} B_i x_{t - i} + C d_t + u_t
the function collects the S draws of a Gibbs sampler (after the burn-in phase) in a standardised object,
where y_t
is a K-dimensional vector of endogenous variables,
A_0
is a K \times K
matrix of structural coefficients.
A_i
is a K \times K
coefficient matrix of lagged endogenous variabels.
x_t
is an M-dimensional vector of unmodelled, non-deterministic variables
and B_i
its corresponding coefficient matrix.
d_t
is an N-dimensional vector of deterministic terms
and C
its corresponding coefficient matrix.
u_t
is an error term with u_t \sim N(0, \Sigma_u)
.
For time varying parameter and stochastic volatility models the respective coefficients and error covariance matrix of the above model are assumed to be time varying, respectively.
The draws of the different coefficient matrices provided in A0
, A
,
B
, C
and Sigma
have to correspond to the same MCMC iterations.
For the VAR model
A_0 y_t = \sum_{i = 1}^{p} A_{i} y_{t-i} + \sum_{i = 0}^{s} B_{i} x_{t-i} + C D_t + u_t,
with u_t \sim N(0, \Sigma)
the function produces n.ahead
forecasts.
An object of class "bvar"
containing the following components, if specified:
data |
the original time-series object of endogenous variables. |
exogen |
the original time-series object of unmodelled variables. |
y |
a |
x |
a |
A0 |
an |
A0_lambda |
an |
A0_sigma |
an |
A |
an |
A_lambda |
an |
A_sigma |
an |
B |
an |
B_lambda |
an |
B_sigma |
an |
C |
an |
C_lambda |
an |
C_sigma |
an |
Sigma |
an |
Sigma_lambda |
an |
Sigma_sigma |
an |
specifications |
a list containing information on the model specification. |
A time-series object of class "bvarprd"
.
Lütkepohl, H. (2006). New introduction to multiple time series analysis (2nd ed.). Berlin: Springer.
# Get data
data("e1")
e1 <- diff(log(e1))
e1 <- window(e1, end = c(1978, 4))
# Generate model data
data <- gen_var(e1, p = 2, deterministic = "const")
# Add priors
model <- add_priors(data,
coef = list(v_i = 0, v_i_det = 0),
sigma = list(df = 0, scale = .00001))
# Set RNG seed for reproducibility
set.seed(1234567)
iterations <- 400 # Number of iterations of the Gibbs sampler
# Chosen number of iterations and burnin should be much higher.
burnin <- 100 # Number of burn-in draws
draws <- iterations + burnin # Total number of MCMC draws
y <- t(model$data$Y)
x <- t(model$data$Z)
tt <- ncol(y) # Number of observations
k <- nrow(y) # Number of endogenous variables
m <- k * nrow(x) # Number of estimated coefficients
# Priors
a_mu_prior <- model$priors$coefficients$mu # Vector of prior parameter means
a_v_i_prior <- model$priors$coefficients$v_i # Inverse of the prior covariance matrix
u_sigma_df_prior <- model$priors$sigma$df # Prior degrees of freedom
u_sigma_scale_prior <- model$priors$sigma$scale # Prior covariance matrix
u_sigma_df_post <- tt + u_sigma_df_prior # Posterior degrees of freedom
# Initial values
u_sigma_i <- diag(1 / .00001, k)
# Data containers for posterior draws
draws_a <- matrix(NA, m, iterations)
draws_sigma <- matrix(NA, k^2, iterations)
# Start Gibbs sampler
for (draw in 1:draws) {
# Draw conditional mean parameters
a <- post_normal(y, x, u_sigma_i, a_mu_prior, a_v_i_prior)
# Draw variance-covariance matrix
u <- y - matrix(a, k) %*% x # Obtain residuals
u_sigma_scale_post <- solve(u_sigma_scale_prior + tcrossprod(u))
u_sigma_i <- matrix(rWishart(1, u_sigma_df_post, u_sigma_scale_post)[,, 1], k)
# Store draws
if (draw > burnin) {
draws_a[, draw - burnin] <- a
draws_sigma[, draw - burnin] <- solve(u_sigma_i)
}
}
# Generate bvar object
bvar_est <- bvar(y = model$data$Y, x = model$data$Z,
A = draws_a[1:18,], C = draws_a[19:21, ],
Sigma = draws_sigma)
# Load data
data("e1")
e1 <- diff(log(e1)) * 100
# Generate model
model <- gen_var(e1, p = 1, deterministic = 2,
iterations = 100, burnin = 10)
# Chosen number of iterations and burn-in should be much higher.
# Add priors
model <- add_priors(model)
# Obtain posterior draws
object <- draw_posterior(model)
# Plot draws
plot(object)
# Load data
data("e1")
e1 <- diff(log(e1)) * 100
e1 <- window(e1, end = c(1978, 4))
# Generate model data
model <- gen_var(e1, p = 0, deterministic = "const",
iterations = 100, burnin = 10)
# Chosen number of iterations and burnin should be much higher.
# Add prior specifications
model <- add_priors(model)
# Obtain posterior draws
object <- draw_posterior(model)
# Generate forecasts
bvar_pred <- predict(object, n.ahead = 10, new_d = rep(1, 10))
# Plot forecasts
plot(bvar_pred)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.