R: Quantile forest

quantile_forest {grf} | R Documentation

## Quantile forest

### Description

Trains a regression forest that can be used to estimate quantiles of the conditional distribution of Y given X = x.

### Usage

    quantile_forest(X, Y, quantiles = c(0.1, 0.5, 0.9),
      regression.splitting = FALSE, sample.fraction = 0.5, mtry = NULL,
      num.trees = 2000, min.node.size = NULL, honesty = TRUE,
      honesty.fraction = NULL, alpha = 0.05, imbalance.penalty = 0,
      clusters = NULL, samples.per.cluster = NULL, num.threads = NULL,
      seed = NULL)

### Arguments

`X` | The covariates used in the quantile regression.
`Y` | The outcome.
`quantiles` | Vector of quantiles used to calibrate the forest.
`regression.splitting` | Whether to use regression splits when growing trees instead of specialized splits based on the quantiles (the default). Setting this flag to true corresponds to the approach to quantile forests from Meinshausen (2006).
`sample.fraction` | Fraction of the data used to build each tree. Note: If honesty = TRUE, these subsamples will further be cut by a factor of honesty.fraction.
`mtry` | Number of variables tried for each split.
`num.trees` | Number of trees grown in the forest. Note: Getting accurate confidence intervals generally requires more trees than getting accurate predictions.
`min.node.size` | A target for the minimum number of observations in each tree leaf. Note that nodes with size smaller than min.node.size can occur, as in the original randomForest package.
`honesty` | Whether to use honest splitting (i.e., sub-sample splitting).
`honesty.fraction` | The fraction of data that will be used for determining splits if honesty = TRUE. Corresponds to set J1 in the notation of the paper. When using the defaults (honesty = TRUE and honesty.fraction = NULL), half of the data will be used for determining splits
`alpha` | A tuning parameter that controls the maximum imbalance of a split.
`imbalance.penalty` | A tuning parameter that controls how harshly imbalanced splits are penalized.
`clusters` | Vector of integers or factors specifying which cluster each observation corresponds to.
`samples.per.cluster` | If sampling by cluster, the number of observations to be sampled from each cluster when training a tree. If NULL, we set samples.per.cluster to the size of the smallest cluster. If some clusters are smaller than samples.per.cluster, the whole cluster is used every time the cluster is drawn. Note that clusters with less than samples.per.cluster observations get relatively smaller weight than others in training the forest, i.e., the contribution of a given cluster to the final forest scales with the minimum of the number of observations in the cluster and samples.per.cluster.
`num.threads` | Number of threads used in training. By default, the number of threads is set to the maximum hardware concurrency.
`seed` | The seed of the C++ random number generator.

### Value

A trained quantile forest object.

### Examples

    ## Not run:
    # Generate data.
    n = 50; p = 10
    X = matrix(rnorm(n*p), n, p)
    X.test = matrix(0, 101, p)
    X.test[,1] = seq(-2, 2, length.out = 101)
    Y = X[,1] * rnorm(n)

    # Train a quantile forest.
    q.forest = quantile_forest(X, Y, quantiles=c(0.1, 0.5, 0.9))

    # Make predictions.
    q.hat = predict(q.forest, X.test)

    # Make predictions for different quantiles than those used in training.
    q.hat = predict(q.forest, X.test, quantiles=c(0.1, 0.9))

    # Train a quantile forest using regression splitting instead of quantile-based
    # splits, emulating the approach in Meinshausen (2006).
    meins.forest = quantile_forest(X, Y, regression.splitting=TRUE)

    # Make predictions for the desired quantiles.
    q.hat = predict(meins.forest, X.test, quantiles=c(0.1, 0.5, 0.9))

    ## End(Not run)

[Package grf version 0.10.3 Index]