7.5 因果森林

7.5.1 原理

  1. 无混杂条件

在无混杂条件下,方可进行准确的因果推断。

对于\(\{X_i, Y_i, W_i\}\)的数据,其中\(W_i\)表示是否接受处理,处理效应表示为

\[ \tau(x) = E[Y_i^{(1)}-Y_i^{(0)}|X_i = x] \]

由于在现实中没法同时观测到\(Y_i^{(1)}\)\(Y_i^{(0)}\),在无混杂条件

\[ \{Y_i^{(0)}, Y_i^{(1)}\} \perp W_i | X_i \]

无混杂条件说明了在控制\(X\)的情况下,对象是否接受干预是随机的,正是因为这种随机性使得我们可以根据现实观测来估计处理效应

成立的情况下,传统方法可以通过倾向得分\(e(x) = E(W_i|X_i=x)\)来估计处理效应

\[ E[Y_i(\frac{W_i}{e(x)} - \frac{1-W_i}{1-e(x)})|X_i = x]=\tau(x) \]

  1. 诚实树与因果森林

在高维场合下,树和森林可被视作具有自适应距离度量的NearestNeighbor方法。落在相同叶节点的观测具有高度相似性,当叶节点足够小时可以相信这些观测独立同分布。

KNN算法是基于某种距离度量找到邻居,而树中叶节点里的观测都是邻居

对此,根据树模型得到的处理效应估计为

\[ \begin{aligned} \hat \tau(x) &= \frac{1}{|\{i:W_i = 1, X_i \in L\}|}\sum_{\{i:W_i = 1, X_i \in L\}}^{Y_i} \\ &-\frac{1}{|\{i:W_i = 0, X_i \in L\}|}\sum_{\{i:W_i = 0, X_i \in L\}}^{Y_i} \end{aligned} \]

若是森林,则综合B棵树的估计结果

\[ \hat \tau(x) = B^{-1}\sum_{b=1}^B \hat \tau_b(x) \]

为了能够实现上述的估计,树模型也需要满足无混杂条件,因此需要引入诚实树的概念。对于任一观测,该观测要么用来分裂,要么用来估计因果效应。只有这样,对因果效应的估计才有一致性和渐近正态性。

对于诚实树,有两种构建方法——双重样本树倾向树

双重样本树,顾名思义,将样本分为两个独立子集,一个子集用于分裂(仅使用X和W),另一个子集用于在叶节点内估计处理效应(使用X,W,Y)。

倾向树,将指示变量W视为分类目标的响应变量,构建分类树,即用X去预测W(某种程度上就是在做倾向得分的事),然后再在生成的叶节点内基于Y估计处理效应。

7.5.2 实现

R语言grf包。

  • causal_forest():构建因果森林

  • multi_arm_causal_forest():适用于W为多分类水平的因果森林

  • average_treatment_effect():输出平均处理效应,支持统计推断,可获得置信区间

  • $predictions:输出每个观测的预测处理效应值