Authors: Jeremy Coyle, Nima Hejazi, and Mark van der Laan

## What’s hal9001?

hal9001 is an R package providing an implementation of the scalable Highly Adaptive Lasso (HAL), a nonparametric regression estimator that applies L1-regularized regression (i.e., the Lasso) to a design matrix composed of indicator functions corresponding to a set of covariates and interactions thereof. Recent theoretical results show that HAL is endowed with several important optimality properties, making it well-suited for the estimation of highly complex functional forms as well as to attain fast convergence rates of nuisance functions via data-adaptive techniques (i.e., machine learning) in the context of nonparametric causal inference (e.g., the construction of targeted minimum loss-based estimators).

For detailed discussions of the Highly Adaptive Lasso estimator, the interested reader might consider consulting Benkeser and van der Laan (2016), van der Laan (2017a), and van der Laan (2017b).

## Installation

You can install the development version of hal9001 from GitHub via devtools with

devtools::install_github("tlverse/hal9001", build_vignettes = FALSE)

## Issues

If you encounter any bugs or have any specific feature requests, please file an issue.

## Example

This minimal example shows how to use hal9001 to obtain predictions based on the Highly Adaptive Lasso. For details on the properties of the estimator, the interested reader is referred to Benkeser and van der Laan (2016) and van der Laan (2017a).

# load the hal9001 package
library(hal9001)
#> hal9001 v0.2.2: The Scalable Highly Adaptive Lasso

# simulate data
set.seed(385971)
n = 100
p = 3
x <- xmat <- matrix(rnorm(n * p), n, p)
y <- x[, 1] * sin(x[, 2]) + rnorm(n, mean = 0, sd = 0.2)

# fit the HAL regression
hal_fit <- fit_hal(X = x, Y = y)
#> [1] "I'm sorry, Dave. I'm afraid I can't do that."
hal_fit\$times
#>                   user.self sys.self elapsed user.child sys.child
#> design_matrix         0.002    0.000   0.003          0         0
#> remove_duplicates     0.005    0.000   0.005          0         0
#> reduce_basis          0.000    0.000   0.000          0         0
#> lasso                 0.260    0.001   0.261          0         0
#> total                 0.267    0.001   0.269          0         0

# training sample prediction
preds <- predict(hal_fit, new_data = x)
mean(hal_mse <- (preds - y)^2)
#> [1] 0.005114472

## Contributions

Contributions are very welcome. Interested contributors should consult our contribution guidelines prior to submitting a pull request.

## Citation

After using the hal9001 R package, please cite the following:

    @misc{coyle2018hal9001,
author = {Coyle, Jeremy R and Hejazi, Nima S},
title = {{hal9001}: The Scalable {Highly Adaptive Lasso}},
year  = {2018},
howpublished = {\url{https://github.com/tlverse/hal9001}},
url = {},
doi = {}
}

The contents of this repository are distributed under the GPL-3 license. See file LICENSE for details.