Skip to contents

Generate pulse effect formulae for a given autoregressive distributed lag (ADL) model

Usage

pulse.calculator(x.vrbl, y.vrbl = NULL, limit)

Arguments

x.vrbl

a named numeric vector in which the names correspond to an independent variable and its lags and the numbers correspond to the specific lag order of each variable

y.vrbl

a named numeric vector in which the names correspond to lags of the dependent variable and the numbers correspond to the specific lag order of each variable. Can be NULL if the model has no lagged dependent variables

limit

an integer representing the number of periods after the initial shock (s) to calculate the Impulse Response Function

Value

a list of limit + 1 mpoly formulae containing the pulse effect formula in each period

Details

pulse.calculator does no calculation. It generates a list of mpoly formulae that contain variable names that represent the pulse effect in each period. The expectation is that these will be evaluated using coefficients from an object containing an ADL model with corresponding variables. Note: mpoly does not allow variable names with a .; variables passed to pulse.calculator should not include this character

Author

Soren Jordan, Garrett N. Vande Kamp, and Reshi Rajan

Examples

# ADL(1,1)
x.lags <- c("x" = 0, "l_1_x" = 1) # lags of x
y.lags <- c("l_1_y" = 1)
s <- 5
pulses <- pulse.calculator(x.vrbl = x.lags, y.vrbl = y.lags, limit = s)
pulses
#> [[1]]
#> x 
#> 
#> [[2]]
#> l_1_x  +  l_1_y x 
#> 
#> [[3]]
#> l_1_y l_1_x  +  l_1_y^2 x 
#> 
#> [[4]]
#> l_1_y^2 l_1_x  +  l_1_y^3 x 
#> 
#> [[5]]
#> l_1_y^3 l_1_x  +  l_1_y^4 x 
#> 
#> [[6]]
#> l_1_y^4 l_1_x  +  l_1_y^5 x 
#> 
# Will also handle finite dynamics
x.lags <- c("x" = 0, "l_1_x" = 1) # lags of x
finite.pulses <- pulse.calculator(x.vrbl = x.lags, limit = s)