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:

- A matrix with dummy variables, where each column indicates a 1 (or
`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")))
```

- A categorical variable (factor) where each entry indicates the state of the corresponding observation. This is particularly useful in the case of multiple state variables (which can be combined in a data frame), as the function then automatically creates the states as interactions between them.

```
# 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.