econml.panel.dml.DynamicDML

class econml.panel.dml.DynamicDML(*, model_y='auto', model_t='auto', featurizer=None, fit_cate_intercept=True, linear_first_stages='deprecated', discrete_outcome=False, discrete_treatment=False, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False)[source]

基类: econml._cate_estimator.LinearModelFinalCateEstimatorMixin, econml._ortho_learner._OrthoLearner

用于动态处理效应估计的 CATE 估计器。

此估计器是双重机器学习(Double ML)方法的扩展,用于估计随时间顺序分配的处理效应。

此估计器是 _OrthoLearner 估计器的一个特例,因此它遵循两阶段过程:第一阶段以交叉拟合的方式估计一组干扰函数,最终阶段估计 CATE 模型。请参阅 _OrthoLearner 的文档,以了解此两阶段过程的描述。

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

    • 如果为 'auto',则模型将是线性模型和森林模型集合中的最佳拟合模型

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

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

    • 如果为 'auto',则模型将是线性模型和森林模型集合中的最佳拟合模型

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

  • featurizer (转换器, 可选) – 必须支持 fit_transform 和 transform 方法。用于在最终 CATE 回归中创建复合特征。如果 X 为 None,则忽略此参数。最终 CATE 将在 featurizer.fit_transform(X) 的结果上进行训练。如果 featurizer=None,则在 X 上训练 CATE。

  • fit_cate_intercept (bool, 默认 True) – 线性 CATE 模型是否应包含常数项。

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

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

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

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

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

    • 整数,指定折数。

    • CV 分割器

    • 一个可迭代对象,以索引数组的形式生成 (训练集, 测试集) 分割。可迭代对象应确保同一个组属于同一个分割。

    对于整数/None 输入,使用 GroupKFold

    除非使用可迭代对象,否则我们调用 split(X, T, groups) 生成分割。

  • 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,则需要提供能够处理缺失值的 nuisance_models。

示例

使用默认模型的简单示例

from econml.panel.dml import DynamicDML

np.random.seed(123)

n_panels = 100  # number of panels
n_periods = 3  # number of time periods per panel
n = n_panels * n_periods
groups = np.repeat(a=np.arange(n_panels), repeats=n_periods, axis=0)
X = np.random.normal(size=(n, 1))
T = np.random.normal(size=(n, 2))
y = np.random.normal(size=(n, ))
est = DynamicDML()
est.fit(y, T, X=X, W=None, groups=groups, inference="auto")
>>> est.const_marginal_effect(X[:2])
array([[-0.363..., -0.049..., -0.044...,  0.042..., -0.202...,
         0.023...],
       [-0.128...,  0.424...,  0.050... , -0.203..., -0.115...,
        -0.135...]])
>>> est.effect(X[:2], T0=0, T1=1)
array([-0.594..., -0.107...])
>>> est.effect(X[:2], T0=np.zeros((2, n_periods*T.shape[1])), T1=np.ones((2, n_periods*T.shape[1])))
array([-0.594..., -0.107...])
>>> est.coef_
array([[ 0.112... ],
       [ 0.227...],
       [ 0.045...],
       [-0.118...],
       [ 0.041...],
       [-0.076...]])
>>> est.coef__interval()
(array([[-0.060...],
       [-0.008...],
       [-0.120...],
       [-0.392...],
       [-0.120...],
       [-0.257...]]), array([[0.286...],
       [0.463...],
       [0.212... ],
       [0.156...],
       [0.204...],
       [0.104...]]))
__init__(*, model_y='auto', model_t='auto', featurizer=None, fit_cate_intercept=True, linear_first_stages='deprecated', discrete_outcome=False, discrete_treatment=False, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False)[source]

方法

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

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

获取每个时间段的处理名称。

coef__inference()

常数边际处理效应线性模型中系数的推断。

coef__interval(*[, alpha])

常数边际处理效应线性模型中的系数。

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

从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。

intercept__inference()

常数边际处理效应线性模型中截距的推断。

intercept__interval(*[, alpha])

常数边际处理效应线性模型中的截距。

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

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

summary([alpha, value, decimals, ...])

常数边际处理效应线性模型中系数和截距的摘要。

属性

bias_part_of_coef

coef_

常数边际处理效应线性模型中的系数。

dowhy

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

featurizer

featurizer_

fit_cate_intercept_

intercept_

常数边际处理效应线性模型中的截距。

model_final

model_final_

models_nuisance_

models_t

models_y

nuisance_scores_t

nuisance_scores_y

original_featurizer

ortho_learner_model_final_

residuals_

一个包含第一阶段估计残差及其关联的 X 和 W 的元组 (y_res, T_res, X, W)。

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 ([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)[source]

获取输出特征名称。

参数

feature_names (长度为 X.shape[1] 的字符串列表 或 None) – 输入特征的名称。如果为 None 且 X 是数据框,则默认为数据框的列名。

返回

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

返回类型

字符串列表 或 None

cate_output_names(output_names=None)

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

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

参数

output_names (长度为 Y.shape[1] 的字符串列表 或 None) – 结果变量的名称。如果为 None 且传递给 fit 的 Y 是数据框,则默认为数据框的列名。

返回

output_names – 返回输出名称。

返回类型

字符串列表

cate_treatment_names(treatment_names=None)[source]

获取每个时间段的处理名称。

如果处理变量是离散的,它将返回扩展的处理变量名称。

参数

treatment_names (长度为 T.shape[1] 的字符串列表 或 None) – 处理变量的名称。如果为 None 且传递给 fit 的 T 是数据框,则默认为数据框的列名。

返回

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

返回类型

字符串列表

coef__inference()

常数边际处理效应线性模型中系数的推断。

返回

InferenceResults – 最终线性模型中系数的推断

返回类型

对象

coef__interval(*, alpha=0.05)

常数边际处理效应线性模型中的系数。

参数

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

返回

lb, ub – 每个量的置信区间的下限和上限。

返回类型

tuple(coef_() 的类型, coef_() 的类型)

const_marginal_ate(X=None)[source]

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

参数

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

返回

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

返回类型

(d_y, 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 ([0, 1] 范围内的浮点数, 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2 到 1-alpha/2 的置信区间。

返回

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

返回类型

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

const_marginal_effect(X=None)[source]

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

边际效应是条件于一组 m 个测试样本 X[i] 的特征向量。

参数

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

返回

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

返回类型

(m, d_y, d_t) 矩阵 或 (d_y, d_t) 矩阵 (如果 X 为 None)

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 ([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 ([0, 1] 范围内的浮点数, 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2 到 1-alpha/2 的置信区间。

返回

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

返回类型

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

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

从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。

输入数据必须包含大小相同的组,这些组对应于分配处理变量的时间段数。

数据最好采用面板格式,组内成员聚集在一起。如果组内成员未出现在一起,则假设如下:

  • 数据集中组的第一个实例假定对应于该组的第一个时间段

  • 数据集中组的第二个实例假定对应于该组的第二个时间段

…等。

仅将每个单元在第一个时间段的特征 X 的值用于异质性分析。后续时间段的 X 值用作时变控制变量,但不用于异质性分析。

参数
  • Y ((n, d_y) 矩阵或长度为 n 的向量) – 每个样本的结果变量(必需:n = n_groups * n_periods)

  • T ((n, d_t) 矩阵或长度为 n 的向量) – 每个样本的处理变量(必需:n = n_groups * n_periods)

  • X ((n, d_x) 矩阵, 可选) – 每个样本的特征(必需:n = n_groups * n_periods)。仅将每个单元在第一个时间段的特征用于异质性分析,其余特征与 W 一起用作时变控制变量

  • W ((n, d_w) 矩阵, 可选) – 每个样本的控制变量(必需:n = n_groups * n_periods)

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

  • sample_var ((n,) 向量, 可选) – 每个样本的样本方差

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

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

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

返回

self

返回类型

DynamicDML 实例

intercept__inference()

常数边际处理效应线性模型中截距的推断。

返回

InferenceResults – 最终线性模型中截距的推断

返回类型

对象

intercept__interval(*, alpha=0.05)

常数边际处理效应线性模型中的截距。

参数

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

返回

lower, upper – 置信区间的下限和上限。

返回类型

tuple(intercept_() 的类型, intercept_() 的类型)

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 ([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 ([0, 1] 范围内的浮点数, 默认 0.05) – 报告区间的总体置信水平。报告的是 alpha/2 到 1-alpha/2 的置信区间。

返回

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

返回类型

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

refit_final(inference=None)

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

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

参数

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

返回

self – 此实例

返回类型

对象

score(Y, T, X=None, W=None, sample_weight=None, *, groups)[source]

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

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

参数
  • Y ((n, d_y) 矩阵或长度为 n 的向量) – 每个样本的结果变量(必需:n = n_groups * n_periods)

  • T ((n, d_t) 矩阵或长度为 n 的向量) – 每个样本的处理变量(必需:n = n_groups * n_periods)

  • X ((n, d_x) 矩阵, 可选) – 每个样本的特征(必需:n = n_groups * n_periods)

  • W ((n, d_w) 矩阵, 可选) – 每个样本的控制变量(必需:n = n_groups * n_periods)

  • groups ((n,) 向量, 必需) – 在分割时,属于同一组的所有行将保持在一起。

返回

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

返回类型

浮点数

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 (长度为 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 对象的嵌套字典

summary(alpha=0.05, value=0, decimals=3, feature_names=None, treatment_names=None, output_names=None)

常数边际处理效应线性模型中系数和截距的摘要。

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

  • value (浮点数, 默认 0) – 您想在零假设下检验的指标的平均值。

  • decimals (int, 默认 3) – 每列要保留的小数位数。

  • feature_names (字符串列表, 可选) – 输入特征的名称

  • treatment_names (字符串列表, 可选) – 处理变量的名称

  • output_names (字符串列表, 可选) – 输出变量的名称

返回

smry – 这包含摘要表和文本,可以打印或转换为各种输出格式。

返回类型

Summary 实例

property coef_

常数边际处理效应线性模型中的系数。

返回

coef – 其中 n_x 是进入最终模型的特征数量(如果 CATE 估计器包含 featurizer,则为 X 的维度或 featurizer.fit_transform(X) 的维度),n_t 是处理变量的数量,n_y 是结果变量的数量。如果原始输入是向量而不是二维数组,则省略相应的维度。对于二元处理变量,也省略 n_t 维度。

返回类型

(n_x,) 或 (n_t, n_x) 或 (n_y, n_t, n_x) 类数组

property dowhy

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

返回

DoWhyWrapperDoWhyWrapper 的一个实例

返回类型

实例

属性 intercept_

常数边际处理效应线性模型中的截距。

返回

截距 – 其中 n_t 是处理的数量,n_y 是结果的数量。如果原始输入是向量而不是二维数组,则省略维度。对于二元处理,n_t 维度也被省略。

返回类型

float 或 (n_y,) 或 (n_y, n_t) array_like

属性 residuals_

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