econml.orf.DROrthoForest
- class econml.orf.DROrthoForest(*, n_trees=500, min_leaf_size=10, max_depth=10, subsample_ratio=0.7, bootstrap=False, lambda_reg=0.01, propensity_model=LogisticRegression(penalty='l1', solver='saga'), model_Y=<econml.sklearn_extensions.linear_model.WeightedLassoCVWrapper object>, propensity_model_final=None, model_Y_final=None, categories='auto', n_jobs=-1, backend='loky', verbose=3, batch_size='auto', random_state=None, allow_missing=False)[source]
Bases:
econml.orf._ortho_forest.BaseOrthoForest
使用双重稳健矩函数处理离散处理的 OrthoForest。
一种使用核两阶段估计学习异质性处理效应的双森林方法。
- 参数
n_trees (int, 默认值 500) – 森林中的因果估计器数量。
min_leaf_size (int, 默认值 10) – 叶子中的最小样本数量。
max_depth (int, 默认值 10) – 扩展树时要执行的最大分裂次数。
subsample_ratio (float, 默认值 0.7) – 训练因果树时使用的总样本比例。大于 1.0 的值将被视为等于 1.0。当 bootstrap=True 时,该参数将被忽略。
bootstrap (bool, 默认值 False) – 是否使用 bootstrap 子抽样。
lambda_reg (float, 默认值 0.01) – 在第二阶段拟合的局部线性部分施加的 L2 惩罚的正则化系数。这不适用于局部截距,仅适用于线性部分的系数。
propensity_model (估计器, 默认值 sklearn.linear_model.LogisticRegression(penalty=’l1’, solver=’saga’, multi_class=’auto’)) – 用于估计每个叶子中处理倾向的模型。将在特征和控制变量(连接后)上进行训练。必须实现 fit 和 predict_proba 方法。
model_Y (估计器, 默认值 sklearn.linear_model.LassoCV(cv=3)) – 用于学习每个叶子中潜在结果的估计器。将在特征、控制变量和独热编码处理(连接后)上进行训练。如果希望每个处理组使用不同的模型,请参阅
MultiModelWrapper
辅助类。模型必须实现 fit 和 predict 方法。propensity_model_final (估计器, 可选) – 用于在预测时估计处理倾向的模型。将在特征和控制变量(连接后)上进行训练。必须实现 fit 和 predict_proba 方法。如果参数设置为
None
,则默认为 propensity_model 参数的值。model_Y_final (估计器, 可选) – 用于在预测时学习潜在结果的估计器。将在特征、控制变量和独热编码处理(连接后)上进行训练。如果希望每个处理组使用不同的模型,请参阅
MultiModelWrapper
辅助类。模型必须实现 fit 和 predict 方法。如果参数设置为None
,则默认为 model_Y 参数的值。categories (‘auto’ 或 list) – 编码离散处理时使用的类别(或使用 ‘auto’ 来使用唯一排序的值)。第一个类别将被视为对照处理。
n_jobs (int, 默认值 -1) – 并行运行
fit()
和effect()
的作业数量。-1
表示使用所有处理器。由于 OrthoForest 方法计算量大,建议将 n_jobs 设置为 -1。backend (‘threading’ 或 ‘loky’, 默认值 ‘loky’) – 使用 joblib 库进行并行化时应使用哪个后端。
verbose (int, 默认值 3) – 详细程度
batch_size (int 或 ‘auto’, 默认值 ‘auto’) – 并行化作业的批次大小
random_state (int, RandomState 实例, 或 None, 默认值 None) – 如果是 int,random_state 是随机数生成器使用的种子;如果是
RandomState
实例,random_state 是随机数生成器;如果是 None,随机数生成器是RandomState
实例,由np.random
使用。allow_missing (bool) – 是否允许 W 中存在缺失值。如果为 True,将需要提供可以处理缺失值的 nuisance_models。
- __init__(*, n_trees=500, min_leaf_size=10, max_depth=10, subsample_ratio=0.7, bootstrap=False, lambda_reg=0.01, propensity_model=LogisticRegression(penalty='l1', solver='saga'), model_Y=<econml.sklearn_extensions.linear_model.WeightedLassoCVWrapper object>, propensity_model_final=None, model_Y_final=None, categories='auto', n_jobs=-1, backend='loky', verbose=3, batch_size='auto', random_state=None, allow_missing=False)[source]
方法
__init__
(*[, n_trees, min_leaf_size, ...])ate
([X, T0, T1])计算平均处理效应 \(E_X[\tau(X, T0, T1)]\)。
ate_inference
([X, T0, T1])模型产生的数量 \(E_X[\tau(X, T0, T1)]\) 的推断结果。
ate_interval
([X, T0, T1, alpha])模型产生的数量 \(E_X[\tau(X, T0, T1)]\) 的置信区间。
cate_feature_names
([feature_names])获取特征名称的公共接口。
cate_output_names
([output_names])获取输出名称的公共接口。
cate_treatment_names
([treatment_names])获取处理名称。
const_marginal_ate
([X])计算平均恒定边际 CATE \(E_X[\theta(X)]\)。
模型产生的数量 \(E_X[\theta(X)]\) 的推断结果。
const_marginal_ate_interval
([X, alpha])模型产生的数量 \(E_X[\theta(X)]\) 的置信区间。
计算以特征向量 X 为条件的恒定边际 CATE θ(·)。
模型产生的数量 \(\theta(X)\) 的推断结果。
const_marginal_effect_interval
([X, alpha])模型产生的数量 \(\theta(X)\) 的置信区间。
effect
([X, T0, T1])计算异质性处理效应 \(\tau(X, T0, T1)\)。
effect_inference
([X, T0, T1])模型产生的数量 \(\tau(X, T0, T1)\) 的推断结果。
effect_interval
([X, T0, T1, alpha])模型产生的数量 \(\tau(X, T0, T1)\) 的置信区间。
fit
(Y, T, *, X[, W, inference])从训练集 (Y, T, X, W) 构建一个正交随机森林。
marginal_ate
(T[, X])计算平均边际效应 \(E_{T, X}[\partial\tau(T, X)]\)。
marginal_ate_inference
(T[, X])模型产生的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的推断结果。
marginal_ate_interval
(T[, X, alpha])模型产生的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的置信区间。
marginal_effect
(T[, X])计算异质性边际效应 \(\partial\tau(T, X)\)。
marginal_effect_inference
(T[, X])模型产生的数量 \(\partial \tau(T, X)\) 的推断结果。
marginal_effect_interval
(T[, X, alpha])模型产生的数量 \(\partial \tau(T, X)\) 的置信区间。
static moment_and_mean_gradient_estimator_func(Y, T, X, W, nuisance_estimates, parameter_estimate)[source]
计算由 (Y, T, X, W) 给出的点处的矩和均值梯度。
static nuisance_estimator_generator(propensity_model, model_Y, random_state=None, second_stage=False)[source]
根据类中的模型输入生成 nuisance 估计器。
static parameter_estimator_func(Y, T, X, nuisance_estimates, sample_weight=None)[source]
计算由 (Y, T) 给出的点处的目标参数以及相应的 nuisance 估计。
static second_stage_parameter_estimator_gen(lambda_reg)[source]
对于第二阶段参数估计,我们添加了一个局部线性校正。因此,我们拟合了一个局部线性函数,而不是局部常数函数。我们还对线性部分进行惩罚以降低方差。
shap_values
(X, *[, feature_names, ...])最终阶段模型的 Shap 值 (const_marginal_effect)
属性
获取
DoWhyWrapper
实例,以便使用 dowhy 包的其他功能。(例如,因果图、反驳测试等)transformer
- ate(X=None, *, T0=0, T1=1)
计算平均处理效应 \(E_X[\tau(X, T0, T1)]\)。
在两个处理点之间计算效应,并对 X 变量的总体进行平均。
- 参数
T0 ((m, d_t) matrix 或 length m 的向量) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量) – 每个样本的目标处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
τ – 每个结果上的平均处理效应。注意,当 Y 是向量而不是二维数组时,结果将是一个标量
- 返回类型
float or (d_y,) array
- ate_inference(X=None, *, T0=0, T1=1)
模型产生的数量 \(E_X[\tau(X, T0, T1)]\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
T0 ((m, d_t) matrix 或 length m 的向量, 默认值 0) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量, 默认值 1) – 每个样本的目标处理
- 返回值
PopulationSummaryResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- ate_interval(X=None, *, T0=0, T1=1, alpha=0.05)
模型产生的数量 \(E_X[\tau(X, T0, T1)]\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
T0 ((m, d_t) matrix 或 length m 的向量, 默认值 0) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量, 默认值 1) – 每个样本的目标处理
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
ate(X, T0, T1)
, type ofate(X, T0, T1))
)
- cate_feature_names(feature_names=None)
获取特征名称的公共接口。
由对输入特征应用转换的估计器覆盖。
- 参数
feature_names (length X.shape[1] 的 str 列表 或 None) – 输入特征的名称。如果为 None 且 X 是一个 dataframe,则默认为 dataframe 中的列名。
- 返回值
out_feature_names – 返回特征名称。
- 返回类型
str 列表 或 None
- cate_output_names(output_names=None)
获取输出名称的公共接口。
由对输出应用转换的估计器覆盖。
- 参数
output_names (length Y.shape[1] 的 str 列表 或 None) – 结果的名称。如果为 None 且传递给 fit 的 Y 是一个 dataframe,则默认为 dataframe 中的列名。
- 返回值
output_names – 返回输出名称。
- 返回类型
str 列表
- cate_treatment_names(treatment_names=None)
获取处理名称。
如果处理是离散的或特征化的,它将返回展开的处理名称。
- 参数
treatment_names (length T.shape[1] 的 str 列表, 可选) – 处理的名称。如果为 None 且传递给 fit 的 T 是一个 dataframe,则默认为 dataframe 中的列名。
- 返回值
out_treatment_names – 返回(可能展开的)处理名称。
- 返回类型
str 列表
- const_marginal_ate(X=None)[source]
计算平均恒定边际 CATE \(E_X[\theta(X)]\)。
- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征。
- 返回值
theta – 每个处理在每个结果上的平均恒定边际 CATE。注意,当 Y 或 T 是向量而不是二维数组时,输出中对应的单例维度将被折叠(例如,如果两者都是向量,则此方法的输出将是一个标量)
- 返回类型
(d_y, d_t) matrix
- const_marginal_ate_inference(X=None)
模型产生的数量 \(E_X[\theta(X)]\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
PopulationSummaryResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- const_marginal_ate_interval(X=None, *, alpha=0.05)
模型产生的数量 \(E_X[\theta(X)]\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
const_marginal_ate(X)
, type ofconst_marginal_ate(X)
)
- const_marginal_effect(X)[source]
计算以特征向量 X 为条件的恒定边际 CATE θ(·)。
- 参数
X (array_like, shape (n, d_x)) – 捕获异质性的特征向量。
- 返回值
Theta – 每个处理在每个样本上的恒定边际 CATE。
- 返回类型
matrix , shape (n, d_t)
- const_marginal_effect_inference(X=None)
模型产生的数量 \(\theta(X)\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
InferenceResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- const_marginal_effect_interval(X=None, *, alpha=0.05)
模型产生的数量 \(\theta(X)\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
const_marginal_effect(X)
, type ofconst_marginal_effect(X)
)
- effect(X=None, *, T0=0, T1=1)
计算异质性处理效应 \(\tau(X, T0, T1)\)。
在给定一组 m 个测试样本 \(\{T0_i, T1_i, X_i\}\) 的特征向量条件下,计算两个处理点之间的效应。
- 参数
T0 ((m, d_t) matrix 或 length m 的向量) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量) – 每个样本的目标处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
τ – 每个结果上每个样本的异质性处理效应。注意,当 Y 是向量而不是二维数组时,对应的单例维度将被折叠(因此此方法将返回一个向量)
- 返回类型
(m, d_y) matrix
- effect_inference(X=None, *, T0=0, T1=1)
模型产生的数量 \(\tau(X, T0, T1)\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
T0 ((m, d_t) matrix 或 length m 的向量, 默认值 0) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量, 默认值 1) – 每个样本的目标处理
- 返回值
InferenceResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- effect_interval(X=None, *, T0=0, T1=1, alpha=0.05)
模型产生的数量 \(\tau(X, T0, T1)\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
X ((m, d_x) matrix, 可选) – 每个样本的特征
T0 ((m, d_t) matrix 或 length m 的向量, 默认值 0) – 每个样本的基础处理
T1 ((m, d_t) matrix 或 length m 的向量, 默认值 1) – 每个样本的目标处理
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
effect(X, T0, T1)
, type ofeffect(X, T0, T1))
)
- fit(Y, T, *, X, W=None, inference='auto')[source]
从训练集 (Y, T, X, W) 构建一个正交随机森林。
- 参数
Y (array_like, shape (n, )) – 处理方案的结果。必须是向量。
T (array_like, shape (n, )) – 离散处理方案向量。处理方案应该是一组从 0 开始的连续整数,其中 0 表示对照组。否则,处理方案将按字典顺序排序,最小的值被视为对照组。
X (array_like, shape (n, d_x)) – 捕获异质性的特征向量。
W (array_like, shape (n, d_w), 可选) – 高维控制变量。
inference (str,
Inference
实例, 或 None) – 执行推断的方法。此估计器支持 ‘bootstrap’(或BootstrapInference
的实例)和 ‘blb’(或BLBInference
的实例)
- 返回值
self
- 返回类型
self 的实例。
- marginal_ate(T, X=None)
计算平均边际效应 \(E_{T, X}[\partial\tau(T, X)]\)。
边际效应围绕基础处理点计算,并对 X 的总体进行平均。
- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
grad_tau – 每个结果上的平均边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中对应的单例维度将被折叠(例如,如果两者都是向量,则此方法的输出将是一个标量)
- 返回类型
(d_y, d_t) array
- marginal_ate_inference(T, X=None)
模型产生的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
PopulationSummaryResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- marginal_ate_interval(T, X=None, *, alpha=0.05)
模型产生的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
marginal_ate(T, X)
, type ofmarginal_ate(T, X)
)
- marginal_effect(T, X=None)
计算异质性边际效应 \(\partial\tau(T, X)\)。
在给定一组 m 个测试样本 \(\{T_i, X_i\}\) 的特征向量条件下,边际效应围绕基础处理点计算。如果 treatment_featurizer 为 None,则在此计算中忽略基础处理,结果等同于 const_marginal_effect。
- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
grad_tau – 每个结果上每个样本的异质性边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中对应的单例维度将被折叠(例如,如果两者都是向量,则此方法的输出也将是一个向量)
- 返回类型
(m, d_y, d_t) array
- marginal_effect_inference(T, X=None)
模型产生的数量 \(\partial \tau(T, X)\) 的推断结果。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
- 返回值
InferenceResults – 推断结果实例包含预测和预测标准误,可以按需计算置信区间、Z 统计量和 P 值。它还可以输出这些推断结果的数据框摘要。
- 返回类型
- marginal_effect_interval(T, X=None, *, alpha=0.05)
模型产生的数量 \(\partial \tau(T, X)\) 的置信区间。仅当调用 fit 方法时,
inference
不为None
时可用。- 参数
T ((m, d_t) matrix) – 每个样本的基础处理
X ((m, d_x) matrix, 可选) – 每个样本的特征
alpha (float in [0, 1], 默认值 0.05) – 所报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 的置信区间。
- 返回值
lower, upper – 每个数量的置信区间的下限和上限。
- 返回类型
tuple(type of
marginal_effect(T, X)
, type ofmarginal_effect(T, X)
)
- static moment_and_mean_gradient_estimator_func(Y, T, X, W, nuisance_estimates, parameter_estimate)[source]
计算由 (Y, T, X, W) 给出的点处的矩和均值梯度。
- static nuisance_estimator_generator(propensity_model, model_Y, random_state=None, second_stage=False)[source]
根据类中的模型输入生成 nuisance 估计器。
- static parameter_estimator_func(Y, T, X, nuisance_estimates, sample_weight=None)[source]
计算由 (Y, T) 给出的点处的目标参数以及相应的 nuisance 估计。
- 计算由 (Y, T) 给出的点处的目标参数以及相应的 nuisance 估计。
对于第二阶段参数估计,我们添加了一个局部线性校正。因此,我们拟合了一个局部线性函数,而不是局部常数函数。我们还对线性部分进行惩罚以降低方差。
- shap_values(X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100)
最终阶段模型的 Shap 值 (const_marginal_effect)
- 参数
X ((m, d_x) matrix) – 每个样本的特征。应该与最终阶段拟合的 X 具有相同的形状。
feature_names (length X.shape[1] 的 str 列表, 可选) – 输入特征的名称。
treatment_names (list, 可选) – 特征化处理的名称。在离散处理场景中,名称不应包含基线处理(即对照处理,默认按字母顺序较小)的名称。
output_names (list, 可选) – 结果的名称。
background_samples (int , 默认值 100) – 用于计算基线效应的样本数量。如果为 None,则使用所有样本。
- 返回值
shap_outs – 一个嵌套字典,使用每个输出名称(例如当 output_names=None 时为 ‘Y0’, ‘Y1’, …)和每个处理名称(例如当 treatment_names=None 时为 ‘T0’, ‘T1’, …)作为键,使用 shap_values 解释对象作为值。如果在 fit 时输入的 数据也包含元数据(例如是 pandas DataFrames),则将使用处理、结果和特征的列元数据,而不是上述默认值(除非用户通过显式传递相应的名称进行覆盖)。
- 返回类型
Explanation 对象的嵌套字典
- property dowhy
获取
DoWhyWrapper
实例,以便使用 dowhy 包的其他功能。(例如,因果图、反驳测试等)- 返回值
DoWhyWrapper –
DoWhyWrapper
的一个实例- 返回类型
实例