econml.metalearners.DomainAdaptationLearner

class econml.metalearners.DomainAdaptationLearner(*, models, final_models, propensity_model=LogisticRegression(), categories='auto', allow_missing=False)[源代码]

基类: econml._cate_estimator.TreatmentExpansionMixin, econml._cate_estimator.LinearCateEstimator

使用领域适应技术来解释

处理组之间的协变量偏移(选择偏差)的元算法。

参数
  • models (对照组单元和处理组单元的结果估计器) – 可以是应用于所有对照组和处理组单元的单个估计器,或者是一个元组/列表,其中每个处理组(包括对照组)有一个估计器。必须实现 fitpredict 方法。fit 方法必须接受 sample_weight 参数。

  • final_models (每个处理的伪处理效应估计器) – 可以是应用于所有对照组和处理组单元的单个估计器,或者是一个元组/列表,其中每个处理组(不包括对照组)有一个估计器。必须实现 fitpredict 方法。

  • propensity_model (倾向性函数估计器) – 必须实现 fitpredict_proba 方法。fit 方法必须能够接受 X 和 T,其中 T 的形状是 (n, 1) 数组。

  • categories ('auto' 或 list, 默认 'auto') – 编码离散处理时使用的类别(或使用 'auto' 表示使用唯一的排序值)。第一个类别将被视为对照处理。

  • allow_missing (bool) – 是否允许 X 中存在缺失值。如果为 True,则需要提供可以处理缺失值的 models, final_models, 和 propensity_model。

示例

一个简单示例

from econml.metalearners import DomainAdaptationLearner
from sklearn.linear_model import LinearRegression

np.random.seed(123)
X = np.random.normal(size=(1000, 5))
T = np.random.binomial(1, scipy.special.expit(X[:, 0]))
y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))
est = DomainAdaptationLearner(
    models=LinearRegression(),
    final_models=LinearRegression()
)
est.fit(y, T, X=X)
>>> est.effect(X[:3])
array([0.51238..., 1.99864..., 0.68553...])
__init__(*, models, final_models, propensity_model=LogisticRegression(), categories='auto', allow_missing=False)[源代码]

方法

__init__(*, models, final_models[, ...])

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)]\)

const_marginal_ate_inference([X])

模型产生的数量 \(E_X[\theta(X)]\) 的推断结果。

const_marginal_ate_interval([X, alpha])

模型产生的数量 \(E_X[\theta(X)]\) 的置信区间。

const_marginal_effect(X)

计算每个样本在特征向量上的常数边际处理效应。

const_marginal_effect_inference([X])

模型产生的数量 \(\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[, inference])

构建 DomainAdaptationLearner 的实例。

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)\) 的置信区间。

shap_values(X, *[, feature_names, ...])

最终阶段模型 (const_marginal_effect) 的 Shap 值

属性

dowhy

获取 DoWhyWrapper 的实例,以允许使用 dowhy 包的其他功能。(例如因果图、反驳测试等)

transformer

ate(X=None, *, T0=0, T1=1)

计算平均处理效应 \(E_X[\tau(X, T0, T1)]\)

效应在两个处理点之间计算,并对 X 变量的总体进行平均。

参数
  • T0 ((m, d_t) 矩阵 或 长度为 m 的向量) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 m 的向量) – 每个样本的目标处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

τ – 每个结果上的平均处理效应。注意,当 Y 是向量而不是二维数组时,结果将是一个标量。

返回类型

float 或 (d_y,) 数组

ate_inference(X=None, *, T0=0, T1=1)

模型产生的数量 \(E_X[\tau(X, T0, T1)]\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 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) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 1) – 每个样本的目标处理

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(ate(X, T0, T1) 的类型, ate(X, T0, T1) 的类型)

cate_feature_names(feature_names=None)

获取特征名称的公共接口。

将由对输入特征应用变换的估计器覆盖。

参数

feature_names (list of str, 长度为 X.shape[1] 或 None) – 输入特征的名称。如果为 None 且 X 是一个数据框,则默认为数据框的列名。

返回

out_feature_names – 返回特征名称。

返回类型

list of str 或 None

cate_output_names(output_names=None)

获取输出名称的公共接口。

将由对输出应用变换的估计器覆盖。

参数

output_names (list of str, 长度为 Y.shape[1] 或 None) – 结果的名称。如果为 None 且传递给 fit 的 Y 是一个数据框,则默认为数据框的列名。

返回

output_names – 返回输出名称。

返回类型

list of str

cate_treatment_names(treatment_names=None)

获取处理名称。

如果处理是离散的或经过特征化处理的,它将返回扩展的处理名称。

参数

treatment_names (list of str, 长度为 T.shape[1], 可选) – 处理的名称。如果为 None 且传递给 fit 的 T 是一个数据框,则默认为数据框的列名。

返回

out_treatment_names – 返回(可能扩展的)处理名称。

返回类型

list of str

const_marginal_ate(X=None)

计算平均常数边际 CATE \(E_X[\theta(X)]\)

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征。

返回

theta – 每个处理对每个结果的平均常数边际 CATE。注意,当 Y 或 特征化处理的 T(如果 treatment_featurizer 为 None 则为 T)是向量而不是二维数组时,输出中对应的单维度将被折叠(例如,如果两者都是向量,则此方法的输出也将是标量)。

返回类型

(d_y, d_f_t) 矩阵,其中 d_f_t 是特征化处理的维度。如果 treatment_featurizer 为 None,则 d_f_t = d_t。

const_marginal_ate_inference(X=None)

模型产生的数量 \(E_X[\theta(X)]\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

PopulationSummaryResults – 推断结果实例包含预测和预测标准误差,并且可以按需计算置信区间、z统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

const_marginal_ate_interval(X=None, *, alpha=0.05)

模型产生的数量 \(E_X[\theta(X)]\) 的置信区间。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(const_marginal_ate(X) 的类型 , const_marginal_ate(X) 的类型)

const_marginal_effect(X)[源代码]

计算每个样本在特征向量上的常数边际处理效应。

参数

X (矩阵, 形状 (m × dₓ)) – 每个样本的特征矩阵。

返回

τ_hat – 每个处理对每个结果的常数边际 CATE,对应于每个样本 X[i]。注意,当 Y 是向量而不是二维数组时,输出中对应的单维度将被折叠。

返回类型

矩阵, 形状 (m, d_y, d_t)

const_marginal_effect_inference(X=None)

模型产生的数量 \(\theta(X)\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数

X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

InferenceResults – 推断结果实例包含预测和预测标准误差,并且可以按需计算置信区间、z统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

const_marginal_effect_interval(X=None, *, alpha=0.05)

模型产生的数量 \(\theta(X)\) 的置信区间。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(const_marginal_effect(X) 的类型 , const_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) 矩阵 或 长度为 m 的向量) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 m 的向量) – 每个样本的目标处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

τ – 每个样本在每个结果上的异质处理效应。注意,当 Y 是向量而不是二维数组时,相应的单维度将被折叠(因此此方法将返回一个向量)。

返回类型

(m, d_y) 矩阵

effect_inference(X=None, *, T0=0, T1=1)

模型产生的数量 \(\tau(X, T0, T1)\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 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) 矩阵, 可选) – 每个样本的特征

  • T0 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 0) – 每个样本的基础处理

  • T1 ((m, d_t) 矩阵 或 长度为 m 的向量, 默认 1) – 每个样本的目标处理

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(effect(X, T0, T1) 的类型, effect(X, T0, T1) 的类型)

fit(Y, T, *, X, inference=None)[源代码]

构建 DomainAdaptationLearner 的实例。

参数
  • Y (array_like, 形状 (n, ) 或 (n, d_y)) – 处理策略的结果。

  • T (array_like, 形状 (n, ) 或 (n, 1)) – 处理策略。只接受二元处理作为输入。如果形状是 (n, 1),T 将被展平。

  • X (array_like, 形状 (n, d_x)) – 捕获异质性的特征向量。

  • inference (str, Inference 实例, 或 None) – 执行推断的方法。此估计器支持 'bootstrap'(或 BootstrapInference 的实例)。

返回

self

返回类型

self 的一个实例。

marginal_ate(T, X=None)

计算平均边际效应 \(E_{T, X}[\partial\tau(T, X)]\)

边际效应围绕基础处理点计算,并对 X 的总体进行平均。

参数
  • T ((m, d_t) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

grad_tau – 每个结果上的平均边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中相应的单维度将被折叠(例如,如果两者都是向量,则此方法的输出将是标量)。

返回类型

(d_y, d_t) 数组

marginal_ate_inference(T, X=None)

模型产生的数量 \(E_{T,X}[\partial \tau(T, X)]\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • T ((m, d_t) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

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) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(marginal_ate(T, X) 的类型, marginal_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) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

grad_tau – 每个样本在每个结果上的异质边际效应。注意,当 Y 或 T 是向量而不是二维数组时,输出中相应的单维度将被折叠(例如,如果两者都是向量,则此方法的输出也将是向量)。

返回类型

(m, d_y, d_t) 数组

marginal_effect_inference(T, X=None)

模型产生的数量 \(\partial \tau(T, X)\) 的推断结果。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • T ((m, d_t) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

返回

InferenceResults – 推断结果实例包含预测和预测标准误差,并且可以按需计算置信区间、z统计量和 p 值。它还可以输出这些推断结果的数据框摘要。

返回类型

对象

marginal_effect_interval(T, X=None, *, alpha=0.05)

模型产生的数量 \(\partial \tau(T, X)\) 的置信区间。仅在调用 fit 方法时,当 inference 不是 None 时可用。

参数
  • T ((m, d_t) 矩阵) – 每个样本的基础处理

  • X ((m, d_x) 矩阵, 可选) – 每个样本的特征

  • alpha (float, 范围 [0, 1], 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2, 1-alpha/2 置信区间。

返回

lower, upper – 每个数量的置信区间的下界和上界。

返回类型

tuple(marginal_effect(T, X) 的类型, marginal_effect(T, X) 的类型)

shap_values(X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100)[源代码]

最终阶段模型 (const_marginal_effect) 的 Shap 值

参数
  • X ((m, d_x) 矩阵) – 每个样本的特征。应该与最终阶段拟合的 X 形状相同。

  • feature_names (list of str, 长度为 X.shape[1], 可选) – 输入特征的名称。

  • 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 包的其他功能。(例如因果图、反驳测试等)

返回

DoWhyWrapperDoWhyWrapper 的一个实例

返回类型

实例