The easiest way to install the package from CRAN is with the command:
install.packages("desla")
Working versions of updates to the package are available on GitHub. These can be installed easily with the devtools package:
install.packages("devtools")
You can then install the desla package from the GitHub depository directly by running:
::install_github("RobertAdamek/desla") devtools
After installation, the package can be loaded in the standard way:
library(desla)
The following toy example demonstrates how to use the functions. Let’s first simulate some data:
set.seed(312)
<-matrix(rnorm(100*100), nrow=100)
X<-X[,1:4] %*% c(1, 2, 3, 4) + rnorm(100) y
desla
The desla()
function provides inference on parameters of
the linear regression model of y
on X
, using
the desparsified lasso as detailed in Adamek et al. (2022a). First, we
specify the indices of variables for which confidence intervals are
required via the argument H
. The desla()
function then simply takes the response y
, the predictor
matrix X
and the set of indices H
as input.
Its output is an object of class desla
, that can be used to
conduct inference on the desired set of parameters.
<-1:3
H<-desla(X=X, y=y, H=H) d
The function summary()
provides a quick way to view the
main results:
summary(d)
#>
#> Call:
#> desla(X = X, y = y, H = H)
#>
#>
#> Coefficients:
#> Estimate Std. Error z value Pr(>|z|)
#> X1 1.0788 0.1304 8.272 <2e-16 ***
#> X2 1.9753 0.1386 14.247 <2e-16 ***
#> X3 2.9455 0.1320 22.317 <2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Joint test of significance:
#>
#> Joint test statistic 6.232e+02
#> p-value 9.436e-135
#>
#> Selected lambdas:
#>
#> Initial regression 0.06688
#> X1 0.28620
#> X2 0.28734
#> X3 0.28570
#>
#> Selected variables:
#>
#> Initial regression X1, X2, X3, X4
#> X1 X91
#> X2 none
#> X3 none
The point estimates are accessible via the output slot
bhat
or the coef()
function. Confidence
intervals can be accessed via the output slot intervals
or
the confint()
function. For optional arguments and other
details, see the function documentation with the command
?desla
.
HDLP()
The second key function of the package is the HDLP()
function which implements the high-dimensional local projections
detailed in Adamek et al. (2022b). As an example, consider the response
of y
to a shock in the fourth predictor variable, and
imagine that:
We classify the first three predictor variables as “slow moving” and enter the equation contemporaneously (ordered before the fourth variable);
The 5th up to 10th variables are classified as “fast moving” and only enter with a lag (thus ordered after the fourth variable). Then the following lines of code obtain the impulse responses with two lags included, up to a maximum horizon of 5. By applying the plot function to the output of the HDLP function, the corresponding impulse response function can be visualized.
<-HDLP(x=X[,4], y=y, q=X[,1:3], r = X[,6:10], hmax=5, lags=2)
hplot(h)
The function also implements the state-based local projections of
Ramey & Zubairy (2018) with the optional
state_variables
argument. State variables can be created in
two ways:
TRUE
) for the observations belongig to that state:<- matrix(c(rep(1, 50), rep(0, 100), rep(1, 50)), ncol=2,
s_dummies dimnames = list(NULL, c("A","B")))
# Factor corresponding to s_dummies above
<- factor(c(rep("A", 50), rep("B", 50)), levels = c("A","B"))
s_factor # A second state variable
<- factor(c(rep("C", 25), rep("D", 50), rep("C", 25)), levels = c("C","D"))
a_second_factor <- data.frame(S1 = s_factor, S2 = a_second_factor) s_twofactors
Both options work with the same syntax in HDLP()
. In
case of doubt, a user can consult the function
create_state_dummies()
- which is also used internally in
HDLP()
- to check if the states are created as desired.
We show it here for the first option. Two separate impulse response
functions are obtained for the response of y
to a shock in
the fourth predictor: one for state A
and one for state
B
.
<- HDLP(x=X[,4], y=y, q=X[,1:3], r=X[,6:10], state_variables=s_dummies, hmax=5, lags=2)
h_s plot(h_s)
For other optional arguments and details, see the function
documentation with the command ?HDLP
.
Adamek, R., S. Smeekes, and I. Wilms (2022a). Lasso inference for high-dimensional time series. Journal of Econometrics, Forthcoming.
Adamek, R., S. Smeekes, and I. Wilms (2022b). Local Projection inference in High Dimensions. arXiv e-print 2209.03218.
Ramey, V. A. and S. Zubairy (2018). Government spending multipliers in good times and in bad: evidence from US historical data. Journal of Political Economy 126, 850–901.