返回R语言grf包函数列表
功能\作用概述:
训练可用于估计条件平均处理效果tau(X)的因果林。当治疗分配W是二元的且不确定时,我们得到tau(X)=E$Y(1)-Y(0)| X=X¥,其中Y(0)andY(1)是对应于两种可能治疗状态的潜在结果。当W是连续的时,我们有效地估计了平均部分效应Cov$Y,W | X=X¥/Var$W | X=X¥,并将其解释为给定的不确定治疗效应。
语法\用法:
causal_forest(
X,
Y,
W,
Y.hat = NULL,
W.hat = NULL,
num.trees = 2000,
sample.weights = NULL,
clusters = NULL,
equalize.cluster.weights = FALSE,
sample.fraction = 0.5,
mtry = min(ceiling(sqrt(ncol(X)) + 20), ncol(X)),
min.node.size = 5,
honesty = TRUE,
honesty.fraction = 0.5,
honesty.prune.leaves = TRUE,
alpha = 0.05,
imbalance.penalty = 0,
stabilize.splits = TRUE,
ci.group.size = 2,
tune.parameters = "none",
tune.num.trees = 200,
tune.num.reps = 50,
tune.num.draws = 1000,
compute.oob.predictions = TRUE,
orthog.boosting = FALSE,
num.threads = NULL,
seed = runif(1, 0, .Machine$integer.max)
)
参数说明:
X :
因果回归中使用的协变量。
Y :
结果(必须是没有NAs的数字向量)。
W :
治疗分配(必须是没有NAs的二进制或实数向量)。
Y.hat :
预期反应估计E$Y | Xi¥,边缘化过度治疗。如果Y.hat=NULL,则使用单独的回归林进行估计。有关此数量的进一步讨论,请参见GRF文件第6.1.1节。默认值为空。
W.hat :
治疗倾向估计值E$W | Xi¥。如果W.hat=NULL,则使用单独的回归林来估计。默认值为空。
num.trees :
森林中生长的树的数量。注:获得准确的置信区间通常比获得准确的预测需要更多的树。默认值为2000。
sample.weights :
(实验)给每个样品的重量估计。如果NULL,则每个观察都接收相同的重量。注意:为避免引入混淆,权重应与给定X的潜在结果无关。默认值为空。
clusters :
整数或因子向量,指定每个观测对应的簇到默认值为空(忽略)。
equalize.cluster.weights :
如果为FALSE,则为每个单元赋予相同的权重(以便较大的簇获得更多的权重)。如果为真,则每个簇在林中的权重相等。在这种情况下,在训练过程中,每棵树从每个绘制的簇中使用相同数量的观测值:如果最小的簇有K个单位,那么当我们在训练过程中对一个簇进行采样时,我们只给树生长过程一个随机的K个簇元素。在估计平均治疗效果时,每个观察的权重为1/簇大小,因此每个簇的总权重相同。请注意,如果此参数为FALSE,则还可以通过直接调整样本权重样本重量争论。如果这个论点是真的,样品重量必须设置为NULL。默认值为false。
sample.fraction :
用于构建每个树。注意:如果诚实=真,这些子样本将进一步减少一个系数诚实。分数. 默认值为0.5。
mtry :
每次拆分尝试的变量数。默认值为√pthe,其中p是变量数。
min.node.size :
每片树叶上最少观察次数的目标。注意,节点的大小小于最小节点大小可能发生,就像在原始森林中一样包。默认值是5。
honesty :
是否使用诚实拆分(即子样本拆分)。默认值为是的,因为对诚实的详细描述,诚实。分数, 诚实。修剪。叶子,以及有关参数调整的建议,请参阅grfalgorithm参考。
honesty.fraction :
如果诚实=真,将用于确定拆分的数据部分。与纸上记号中的J1相对应。默认值为0.5(即一半的数据用于确定拆分)。
honesty.prune.leaves :
如果为TRUE,则修剪估计样本树,以便没有叶为空。如果为FALSE,则保留splits示例中确定的树(如果遇到空休假,则跳过该树,并且不参与估计)。将此值设置为FALSE可能会提高小数据/功率不足数据的性能,但需要更多树(注意:调整不会调整树的数量)。仅在启用诚实时适用。默认值为TRUE。
alpha :
控制分裂最大不平衡度的调谐参数。默认值为0.05。
imbalance.penalty :
一个调整参数,控制如何严厉不平衡分裂惩罚。默认值为0。
stabilize.splits :
在确定分裂不平衡时是否应考虑治疗。默认值为TRUE。
ci.group.size :
森林会生长的ci组大小每棵树子样本为了提供置信区间,ci组大小必须至少为2。默认值为2。
tune.parameters :
参数名向量调音。如果“all”:所有可调参数都通过交叉验证进行调整。以下参数可调:(“样品分数“,”mtry“,”最小节点大小", "诚实。分数","诚实。修剪。叶子“,”阿尔法“,”不平衡。惩罚"). 如果诚实是假的,那么诚实。*参数不是已调谐。默认值为“无”(未调整任何参数)。
tune.num.trees :
用于适应调整模型的每个“迷你林”中的树数。默认值为200。
tune.num.reps :
用于拟合调整模型的林数。默认值为50。
tune.num.draws :
使用模型选择最佳参数时考虑的随机参数值的数目。默认值为1000。
compute.oob.predictions :
是否应该预先计算训练集上的OOB预测。默认值为TRUE。
orthog.boosting :
(实验)如果为真,则当Y.hat=NULL或W.hat为NULL时,使用增强回归估计缺失量森林。森林自动选择增压步数。默认值为FALSE。
num.threads :
训练中使用的线程数。默认情况下,线程数设置为最大硬件并发数。
seed :
C++随机数生成器的种子。
示例\实例:
# Train a causal forest.
n < - 500
p < - 10
X < - matrix(rnorm(n * p), n, p)
W < - rbinom(n, 1, 0.5)
Y < - pmax(X[, 1], 0) * W + X[, 2] + pmin(X[, 3], 0) + rnorm(n)
c.forest < - causal_forest(X, Y, W)
# Predict using the forest.
X.test < - matrix(0, 101, p)
X.test[, 1] < - seq(-2, 2, length.out = 101)
c.pred < - predict(c.forest, X.test)
# Predict on out-of-bag training samples.
c.pred < - predict(c.forest)
# Predict with confidence intervals; growing more trees is now recommended.
c.forest < - causal_forest(X, Y, W, num.trees = 4000)
c.pred < - predict(c.forest, X.test, estimate.variance = TRUE)
# In some examples, pre-fitting models for Y and W separately may
# be helpful (e.g., if different models use different covariates).
# In some applications, one may even want to get Y.hat and W.hat
# using a completely different method (e.g., boosting).
n < - 2000
p < - 20
X < - matrix(rnorm(n * p), n, p)
TAU < - 1 / (1 + exp(-X[, 3]))
W < - rbinom(n, 1, 1 / (1 + exp(-X[, 1] - X[, 2])))
Y < - pmax(X[, 2] + X[, 3], 0) + rowMeans(X[, 4:6]) / 2 + W * TAU + rnorm(n)
forest.W < - regression_forest(X, W, tune.parameters = "all")
W.hat < - predict(forest.W)$predictions
forest.Y < - regression_forest(X, Y, tune.parameters = "all")
Y.hat < - predict(forest.Y)$predictions
forest.Y.varimp < - variable_importance(forest.Y)
# Note: Forests may have a hard time when trained on very few variables
# (e.g., ncol(X) = 1, 2, or 3). We recommend not being too aggressive
# in selection.
selected.vars < - which(forest.Y.varimp / mean(forest.Y.varimp) > 0.2)
tau.forest < - causal_forest(X[, selected.vars], Y, W,
W.hat = W.hat, Y.hat = Y.hat,
tune.parameters = "all"
)
tau.hat < - predict(tau.forest)$predictions