Learn R Programming

dynamac (version 0.1.8)

dynardl: Estimate and Simulate ARDL Model

Description

Estimate autoregressive distributed lag model and simulate interesting values (if desired)

Usage

dynardl(formula, data = list(), lags = list(), diffs = list(),
  lagdiffs = list(), levels = list(), ec = FALSE, trend = FALSE,
  constant = TRUE, modelout = FALSE, simulate = FALSE,
  shockvar = list(), shockval = sd(data[[shockvar]]), time = 10,
  qoi = "mean", forceset = NULL, range = 20, burnin = 20,
  sims = 1000, sig = 95, expectedval = FALSE)

Arguments

formula

a symbolic description of the model to be estimated. ARDL models are estimated using linear regression.

data

an optional data frame or list containing the the variables in the model.

lags

a list of variables and their corresponding lags to be estimated.

diffs

a vector of variables to be differenced. Only first differences are supported.

lagdiffs

a list of variables to be included in lagged differences.

levels

a vector of variables to be included in levels.

ec

estimate model in error-correction form, (i.e., y appears in first-differences). By default, ec is set to FALSE, meaning y will appear in levels.

trend

include a linear time trend. The default is FALSE.

constant

include a constant. The default is TRUE.

modelout

print the regression estimates in the console

simulate

simulate the reponse. Otherwise, just the regression model will be estimated. If simulate = FALSE, options shockvar, shockval, time, qoi, forceset, range, burnin, sims, sig, and expectedval, are ignored. The default is FALSE.

shockvar

the variable to be shocked. There is no default.

shockval

the amount by which the shockvar should be shocked. The default is one standard deviation of the shocked variable.

time

the time period in the simulation for the variable to be shocked.

qoi

summarize the response of the dependent variable with the mean or the median. Although the default is mean, if there is underlying skew in the distribution, it might be better summarized by median.

forceset

by default, in the simulations, variables in levels will be set to their means; variables in differences will be set to 0. Alternatively, users can set any variable in the model to a different value using a list in forceset. These values can be any user-defined value, including means, medians, percentiles, or other values of interest.

range

the range of the simulation to be conducted

burnin

the number of time periods to disregard before recording the values. These do not include the range; in other words, they take place before the range specified above. Users can increase the number of burnin periods, but probably should not decrease them. The default is 20.

sims

the number of simulations to use in creating the quantities of interest (the response of the dependent variable). The default is 1000.

sig

the significance level (1 - p) that the user wants for the simulations. The default level is 95% significance (sig = 95)

expectedval

if this is TRUE, the simulation will record the expected values of across the sims by averaging errors. We recommend setting it to FALSE, since expected values do not account for stochastic error present in the model itself.

Value

dynardl should always return an estimated model. It may or may not be simulated, according to the user. But the relevant regression output, model residuals (which can be tested for autocorrelation), and simulated response (if created) are stored in a list if the model is assigned to an object.

Details

Estimate an auto-regressive distributed lag model. Moreover, enable a graphical interpretation of the results (through area.simulation.plot or spike.simulation.plot) by simulating the response of the dependent variable to shocks in one of the regressors.

Examples

Run this code
# NOT RUN {
# Using the inequality data from dynamac
ardl.model <- dynardl(concern ~ incshare10 + urate, data = ineq, 
       lags = list("concern" = 1, "incshare10" = 1),
       diffs = c("incshare10", "urate"), 
       ec = TRUE, simulate = FALSE)
summary(ardl.model)

# Adding a lagged difference of the dependent variable
ardl.model.2 <- dynardl(concern ~ incshare10 + urate, data = ineq, 
       lags = list("concern" = 1, "incshare10" = 1),
       diffs = c("incshare10", "urate"), 
       lagdiffs = list("concern" = 1),
       ec = TRUE, simulate = FALSE)
summary(ardl.model.2)

# Does not work: levels and diffs must appear as a vector
# }
# NOT RUN {
ardl.model.3 <- dynardl(concern ~ incshare10 + urate, data = ineq, 
       lags = list("concern" = 1, "incshare10" = 1),
       levels = list("urate" = 1),
       diffs = list("incshare10" = 1, "urate" = 1), 
       lagdiffs = list("concern" = 1),
       ec = TRUE, simulate = FALSE)
# }
# NOT RUN {
ardl.model.3 <- dynardl(concern ~ incshare10 + urate, data = ineq, 
       lags = list("concern" = 1, "incshare10" = 1),
       levels = c("urate"),
       diffs = c("incshare10", "urate"), 
       lagdiffs = list("concern" = 1),
       ec = TRUE, simulate = FALSE)
# }

Run the code above in your browser using DataLab