girf: Gernalised Impulse Response Function

View source: R/girf.R

girfR Documentation

Gernalised Impulse Response Function

Description

Computes the generalised impulse response coefficients of an object of class "bgvar" for 'n.ahead' steps.

Usage

girf(
  object,
  impulse,
  response,
  n.ahead = 5,
  shock = "sd",
  ci = 0.95,
  cumulative = FALSE,
  mc.cores = NULL
)

Arguments

object

an object of class "bgvar", usually, a result of a call to combine_submodels.

impulse

a character vector of the impulse country and variable, respectively.

response

a character vector of the response country and variable, respectively.y.

n.ahead

number of steps ahead.

shock

size of the shock. Either "sd" (default) for a standard deviation of the impulse variable, "nsd" for a negativ standard deviation, or a numeric.

ci

a numeric between 0 and 1 specifying the probability mass covered by the credible intervals. Defaults to 0.95.

cumulative

logical specifying whether a cumulative IRF should be calculated.

mc.cores

the number of cores to use, i.e. at most how many child processes will be run simultaneously. The option is initialized from environment variable MC_CORES if set. Must be at least one, and parallelization requires at least two cores.

Value

A time-series object of class "bgvarirf".

References

Lütkepohl, H. (2007). New introduction to multiple time series analyis (2nd ed.). Berlin: Springer.

Pesaran, H. H., & Shin, Y. (1998). Generalized impulse response analysis in linear multivariate models. Economics Letters, 58, 17-29.

Examples

# Load data
data("gvar2019")

# Create regions
temp <- create_regions(country_data = gvar2019$country_data,
             weight_data = gvar2019$weight_data,
             region_weights = gvar2019$region_weights,
             regions = list(EA =  c("AT", "BE", "DE", "ES", "FI", "FR", "IT", "NL")),
             period = 3)

country_data <- temp$country_data
weight_data <- temp$weight_data
global_data = gvar2019$global_data

# Difference series to make them stationary
country_data <- diff_variables(country_data, variables = c("y", "Dp", "r"), multi = 100)
global_data <- diff_variables(global_data, multi = 100)

# Create time varying weights
weight_data <- create_weights(weight_data, period = 3, country_data = country_data)

# Generate specifications
model_specs <- create_specifications(
                 country_data = country_data,
                 global_data = global_data,
                 countries = c("US", "JP", "CA", "NO", "GB", "EA"), 
                 domestic = list(variables = c("y", "Dp", "r"), lags = 1),
                 foreign = list(variables = c("y", "Dp", "r"), lags = 1),
                 global = list(variables = c("poil"), lags = 1),
                 deterministic = list(const = TRUE, trend = FALSE, seasonal = FALSE),
                 iterations = 10,
                 burnin = 10)
# Note that the number of iterations and burnin draws should be much higher!
                                     
# Overwrite country-specific specifications
model_specs[["US"]][["domestic"]][["variables"]] <- c("y", "Dp", "r")
model_specs[["US"]][["foreign"]][["variables"]] <- c("y", "Dp")

# Create estimation objects
country_models <- create_models(country_data = country_data,
                                weight_data = weight_data,
                                global_data = global_data,
                                model_specs = model_specs)

# Add priors
models_with_priors <- add_priors(country_models,
                                 coef = list(v_i = 1 / 9, v_i_det = 1 / 10),
                                 sigma = list(df = 3, scale = .0001))

# Obtain posterior draws
object <- draw_posterior(models_with_priors)

# Solve GVAR
gvar <- combine_submodels(object)

# Obtain GIRF
gvar_girf <- girf(gvar, impulse = c("EA", "r"), response = c("EA", "y"), n.ahead = 20)

# Plot GIRF
plot(gvar_girf)


franzmohr/bgvars documentation built on Sept. 2, 2023, 12:45 p.m.