econml.dml.NonParamDML

class econml.dml.NonParamDML(*, model_y, model_t, model_final, featurizer=None, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False, use_ray=False, ray_remote_func_options=None)[source]

基类: econml.dml.dml._BaseDML

非参数双重机器学习(Double ML)估计器的基类,可以使用任意最终机器学习模型来估计 CATE。仅适用于一维连续处理或二元分类处理,并使用重新加权技巧,将最终 CATE 估计简化为加权平方损失最小化。model_final 参数必须在拟合时支持 sample_weight 关键字参数。

参数
  • model_y (估计器,默认 'auto') – 决定如何将结果变量拟合到特征变量上。

    • 如果设置为 'auto',模型将从一组线性模型和森林模型中自动选择最佳拟合模型

    • 否则,请参阅模型选择以了解支持的选项范围;如果指定单个模型,当 discrete_outcome 为 True 时应为分类器,否则为回归器。

  • model_t (估计器,默认 'auto') – 决定如何将处理变量拟合到特征变量上。

    • 如果设置为 'auto',模型将从一组线性模型和森林模型中自动选择最佳拟合模型

    • 否则,请参阅模型选择以了解支持的选项范围;如果指定单个模型,当 discrete_treatment 为 True 时应为分类器,否则为回归器。

  • model_final (估计器) – 用于将结果残差拟合到处理残差上的估计器。必须实现 fitpredict 方法。可以是任意 scikit-learn 回归器。fit 方法必须接受 sample_weight 作为关键字参数。

  • featurizer (转换器) – 在拟合最终模型时用于对原始特征进行特征化的转换器。必须实现 fit_transform 方法。

  • discrete_outcome (bool, 默认 False) – 是否将结果变量视为二元变量

  • discrete_treatment (bool, 默认 False) – 是否将处理变量值视为分类变量而非连续变量

  • treatment_featurizer (转换器, 可选) – 必须支持 fit_transform 和 transform 方法。用于在最终 CATE 回归中创建复合处理。最终 CATE 将在 featurizer.fit_transform(T) 的结果上训练。如果 featurizer=None,则 CATE 在 T 上训练。

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

  • cv (int,交叉验证生成器或可迭代对象,默认 2) – 决定交叉验证的分割策略。cv 的可能输入有:

    • None,使用默认的 3 折交叉验证,

    • 整数,指定折数。

    • CV 分割器

    • 一个生成 (训练集,测试集) 分割(作为索引数组)的可迭代对象。

    对于整数/None 输入,如果处理变量是离散的,则使用 StratifiedKFold,否则使用 KFold(两种情况下都进行随机打乱)。

    除非使用可迭代对象,否则我们调用 split(concat[W, X], T) 来生成分割。如果 W 和 X 都为 None,则调用 split(ones((T.shape[0], 1)), T)

  • mc_iters (int, 可选) – 重复运行第一阶段模型的次数,以减少干扰项的方差。

  • mc_agg ({‘mean’, ‘median’},默认 ‘mean’) – 如何在 mc_iters 次交叉拟合的蒙特卡洛迭代中汇总每个样本的干扰项值。

  • random_state (int, RandomState 实例, 或 None, 默认 None) – 如果为 int,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器本身;如果为 None,则随机数生成器是 RandomState 实例,使用 np.random 的随机数生成器。

  • allow_missing (bool) – 是否允许 W 中存在缺失值。如果为 True,则需要提供能处理缺失值的 model_y、model_t 和 model_final。

  • use_ray (bool, 默认 False) – 是否使用 Ray 并行化交叉拟合步骤。如果为 True,则必须安装 Ray。

  • ray_remote_func_options (dict, 默认 None) – 使用 Ray 时传递给远程函数的选项。详见 https://docs.rayai.org.cn/en/latest/ray-core/api/doc/ray.remote.html

示例

离散处理变量的简单示例

from econml.dml import NonParamDML
from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

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 = NonParamDML(
    model_y=RandomForestRegressor(min_samples_leaf=20),
    model_t=RandomForestClassifier(min_samples_leaf=20),
    model_final=RandomForestRegressor(min_samples_leaf=20),
    discrete_treatment=True
)
est.fit(y, T, X=X, W=None)
>>> est.effect(X[:3])
array([0.35318..., 1.28760..., 0.83506...])
__init__(*, model_y, model_t, model_final, featurizer=None, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False, use_ray=False, ray_remote_func_options=None)[source]

方法

__init__(*, model_y, model_t, model_final[, ...])

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

计算常数边际 CATE \(\theta(·)\)

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, W, sample_weight, ...])

从数据中估计反事实模型,即估计函数 τ(·,·,·), ∂τ(·,·)。

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

refit_final(*[, inference])

使用新的最终模型规范重新估计反事实模型,但使用缓存的第一阶段结果。

score(Y, T[, X, W, sample_weight])

在新数据集上对拟合的 CATE 模型进行评分。

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

最终阶段模型(常数边际效应)的 Shap 值

属性

dowhy

获取 DoWhyWrapper 实例,以利用 dowhy 包的其他功能。

featurizer_

model_cate

获取拟合的最终 CATE 模型。

model_final_

models_nuisance_

models_t

获取拟合的 E[T | X, W] 模型。

models_y

获取拟合的 E[Y | X, W] 模型。

nuisance_scores_t

nuisance_scores_y

original_featurizer

ortho_learner_model_final_

residuals_

来自第一阶段估计的残差以及相关的 X 和 W 的元组 (y_res, T_res, X, W)。样本顺序不保证与输入顺序相同。

rlearner_model_final_

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 值。它还可以输出这些推断结果的 DataFrame 摘要。

返回类型

对象

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(type of ate(X, T0, T1), type of ate(X, T0, T1)) )

cate_feature_names(feature_names=None)

获取输出特征名称。

参数

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

返回

out_feature_names – 输出特征 \(\phi(X)\) 的名称,即最终常数边际 CATE 模型对其呈线性的特征。它是与 coef_() 参数的每个条目相关的特征名称。当 featurizer 不为 None 且没有方法 get_feature_names(feature_names) 时不可用。否则返回 None。

返回类型

str 列表或 None

cate_output_names(output_names=None)

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

由对输出进行转换的估计器重写。

参数

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

返回

output_names – 返回输出名称。

返回类型

str 列表

cate_treatment_names(treatment_names=None)

获取处理变量名称。

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

参数

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

返回

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

返回类型

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 值。它还可以输出这些推断结果的 DataFrame 摘要。

返回类型

对象

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(type of const_marginal_ate(X) , type of const_marginal_ate(X) )

const_marginal_effect(X=None)

计算常数边际 CATE \(\theta(·)\)

边际效应是在给定 m 个测试样本 X[i] 的特征向量条件下计算的。

参数

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

返回

theta – 每个特征化处理变量对每个结果变量的常数边际 CATE,针对每个样本 X[i]。请注意,当 Y 或特征化后的 T(如果 treatment_featurizer 为 None,则为 T)是一个向量而非二维数组时,输出中相应的单维将被折叠(例如,如果两者都是向量,则此方法的输出也将是一个向量)。

返回类型

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

const_marginal_effect_inference(X=None)

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

参数

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

返回

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

返回类型

对象

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(type of const_marginal_effect(X) , type of 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 值。它还可以输出这些推断结果的 DataFrame 摘要。

返回类型

对象

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(type of effect(X, T0, T1), type of effect(X, T0, T1)) )

fit(Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None, cache_values=False, inference='auto')[source]

从数据中估计反事实模型,即估计函数 τ(·,·,·), ∂τ(·,·)。

参数
  • Y ((n × d_y) 矩阵或长度为 n 的向量) – 每个样本的结果变量

  • T ((n × dₜ) 矩阵或长度为 n 的向量) – 每个样本的处理变量

  • X ((n × dₓ) 矩阵, 可选) – 每个样本的特征变量

  • W ((n × d_w) 矩阵, 可选) – 每个样本的控制变量

  • sample_weight ((n,) array_like, 可选) – 每个样本的个体权重。如果为 None,则假定权重相等。

  • freq_weight ((n,) int 类型的 array_like, 可选) – 观测值的权重。观测值 i 被视为 freq_weight[i] 个独立观测值的平均结果。当 sample_var 不为 None 时,应提供此参数。

  • sample_var ({(n,), (n, d_y)} nd array_like, 可选) – 用于计算代表观测值 i 的平均结果的原始 freq_weight[i] 个观测值的结果变量的方差。

  • groups ((n,) 向量, 可选) – 属于同一组的所有行在分割时将保持在一起。如果 groups 不为 None,则传递给此类的初始化器的 cv 参数必须支持其 split 方法的 ‘groups’ 参数。

  • cache_values (bool, 默认 False) – 是否缓存输入和第一阶段结果,这将允许重新拟合不同的最终模型。

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

返回类型

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 值。它还可以输出这些推断结果的 DataFrame 摘要。

返回类型

对象

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(type of marginal_ate(T, X), type of 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 值。它还可以输出这些推断结果的 DataFrame 摘要。

返回类型

对象

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(type of marginal_effect(T, X), type of marginal_effect(T, X) )

refit_final(*, inference='auto')[source]

使用新的最终模型规范重新估计反事实模型,但使用缓存的第一阶段结果。

为了成功执行此操作,必须在调用 fit 时设置 cache_values=True。此调用将仅重新拟合最终模型。此调用将使用任何更改最终阶段估计参数的当前设置。如果同时更改了任何影响第一阶段干扰项估计的参数,则此调用将无效。需要再次调用 fit 方法来更改第一阶段估计结果。

参数

inference (推断方法, 可选) – 表示推断方法的字符串或对象

返回

self – 此实例

返回类型

对象

score(Y, T, X=None, W=None, sample_weight=None)

在新数据集上对拟合的 CATE 模型进行评分。基于在 fit 时创建的拟合残差干扰项模型,为新数据集生成干扰项参数。它使用不同交叉拟合折叠拟合的模型的平均预测值。然后计算最终残差 Y 对残差 T 回归的 MSE。

如果 model_final 没有 score 方法,则会引发 AttributeError

参数
  • Y ((n, d_y) 矩阵或长度为 n 的向量) – 每个样本的结果变量

  • T ((n, d_t) 矩阵或长度为 n 的向量) – 每个样本的处理变量

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

  • W ((n, d_w) 矩阵, 可选) – 每个样本的控制变量

  • sample_weight ((n,) 向量, 可选) – 每个样本的权重

返回

score – 最终 CATE 模型在新数据上的 MSE。

返回类型

float

shap_values(X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100)[source]

最终阶段模型(常数边际效应)的 Shap 值

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

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

返回

DoWhyWrapperDoWhyWrapper 的一个实例

返回类型

实例

property model_cate

获取拟合的最终 CATE 模型。

返回

model_cate – 调用 fit 后拟合的 model_final 对象实例,它对应于常数边际 CATE 模型。

返回类型

type(model_final) 类型的对象

property models_t

获取拟合的 E[T | X, W] 模型。

返回

models_tmodel_y 对象实例的嵌套列表。子列表的数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是该训练折叠拟合的模型实例。

返回类型

type(model_t) 对象的嵌套列表

property models_y

获取拟合的 E[Y | X, W] 模型。

返回

models_ymodel_y 对象实例的嵌套列表。子列表的数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是该训练折叠拟合的模型实例。

返回类型

type(model_y) 对象的嵌套列表

property residuals_

来自第一阶段估计的残差以及相关的 X 和 W 的元组 (y_res, T_res, X, W)。样本顺序不保证与输入顺序相同。