econml.iv.dml.NonParamDMLIV

class econml.iv.dml.NonParamDMLIV(*, model_y_xw='auto', model_t_xw='auto', model_t_xwz='auto', model_final, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None, discrete_instrument=False, featurizer=None, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False)[source]

基类: econml.iv.dml._dml._BaseDMLIV

非参数 DMLIV 的基类,它允许在 DMLIV 算法的最终阶段使用任意基于平方损失的机器学习方法。该方法必须支持样本权重,并且 fit 方法必须将 sample_weights 作为输入(例如随机森林),即 fit(X, y, sample_weight=None)。它通过将 DMLIV 算法的最终阶段平方损失重写为以下形式来实现这一点:

\[\sum_i (\E[T|X_i, Z_i] - \E[T|X_i])^2 * ((Y_i - \E[Y|X_i])/(\E[T|X_i, Z_i] - \E[T|X_i]) - \theta(X))^2\]

然后这可以被视为加权平方损失回归,其中目标标签是

\[\tilde{Y}_i = (Y_i - \E[Y|X_i])/(\E[T|X_i, Z_i] - \E[T|X_i])\]

并且每个样本的权重是

\[V(X_i) = (\E[T|X_i, Z_i] - \E[T|X_i])^2\]

因此,我们可以调用任何回归模型,输入为

fit(X, \(\tilde{Y}_i\), sample_weight= \(V(X_i)\))

参数
  • model_y_xw (estimator, default 'auto') – 决定如何将结果拟合到特征和控制变量(\(\E[Y | X, W]\))。

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

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

  • model_t_xw (estimator, default 'auto') – 决定如何将处理拟合到特征和控制变量(\(\E[T | X, W]\))。

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

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

  • model_t_xwz (estimator, default 'auto') – 决定如何将处理拟合到特征、控制变量和工具变量(\(\E[T | X, W, Z]\))。

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

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

  • model_final (estimator) – 用于使用样本权重 V(X) 预测 \(\tilde{Y}\) 的最终模型

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

  • discrete_outcome (bool, default False) – 结果是否应被视为二分类

  • discrete_treatment (bool, default False) – 处理值是否应被视为分类量,而不是连续量

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

  • discrete_instrument (bool, default False) – 工具变量值是否应被视为分类量,而不是连续量

  • categories (‘auto’ 或 list, default ‘auto’) – 编码离散处理时使用的类别(或 ‘auto’ 表示使用唯一的排序值)。第一个类别将被视为控制处理。

  • cv (int, cross-validation generator or an iterable, default 2) – 决定交叉验证分割策略。cv 的可能输入是

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

    • 整数,指定折数。

    • CV 分割器

    • 一个可迭代对象,以索引数组形式生成 (train, test) 分割。

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

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

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

  • mc_agg ({‘mean’, ‘median’}, default ‘mean’) – 如何跨 mc_iters 蒙特卡罗交叉拟合迭代聚合每个样本的干扰值。

  • random_state (int, RandomState instance, or None, default None) – 如果是 int,random_state 是随机数生成器使用的种子;如果是 RandomState 实例,random_state 是随机数生成器;如果是 None,随机数生成器是 np.random 使用的 RandomState 实例。

  • allow_missing (bool) – 是否允许 X, W 中存在缺失值。如果为 True,将需要提供可以处理缺失值的干扰模型和 model_final。

示例

一个简单示例

from econml.iv.dml import NonParamDMLIV
from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression

# Define the data generation functions
def dgp(n, p, true_fn):
    X = np.random.normal(0, 1, size=(n, p))
    Z = np.random.binomial(1, 0.5, size=(n,))
    nu = np.random.uniform(0, 10, size=(n,))
    coef_Z = 0.8
    C = np.random.binomial(
        1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)
    )  # Compliers when recomended
    C0 = np.random.binomial(
        1, 0.06 * np.ones(X.shape[0])
    )  # Non-compliers when not recommended
    T = C * Z + C0 * (1 - Z)
    y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))
    return y, T, Z, X

def true_heterogeneity_function(X):
    return 5 * X[:, 0]

np.random.seed(123)
y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)
est = NonParamDMLIV(
    model_final=StatsModelsLinearRegression(),
    discrete_treatment=True, discrete_instrument=True,
    cv=5
)
est.fit(Y=y, T=T, Z=Z, X=X)
>>> est.effect(X[:3])
array([-5.98517...,  9.03610..., -3.56684...])
__init__(*, model_y_xw='auto', model_t_xw='auto', model_t_xwz='auto', model_final, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None, discrete_instrument=False, featurizer=None, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False)[source]

方法

__init__(*[, model_y_xw, model_t_xw, ...])

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, *, Z[, X, W, sample_weight, ...])

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

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, Z[, X, W, sample_weight])

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

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

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

属性

dowhy

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

featurizer_

model_cate

获取拟合的最终 CATE 模型。

model_final_

models_nuisance_

models_t_xw

获取 \(\E[T | X]\) 的拟合模型。

models_t_xwz

获取 \(\E[T | X, Z]\) 的拟合模型。

models_y_xw

获取 \(\E[Y | X]\) 的拟合模型。

nuisance_scores_t_xw

获取 t_xw 模型在样本外训练数据上的评分

nuisance_scores_t_xwz

获取 t_xwz 模型在样本外训练数据上的评分

nuisance_scores_y_xw

获取 y_xw 模型在样本外训练数据上的评分

original_featurizer

ortho_learner_model_final_

residuals_

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

转换器

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

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

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

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

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

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

返回

τ – 每个结果的平均处理效应。注意,当 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) matrix, 可选) – 每个样本的特征

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

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

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

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

  • alpha (float in [0, 1], default 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 of length X.shape[1] 或 None) – 输入特征的名称。如果为 None 且 X 是一个 dataframe,则默认为 dataframe 的列名。

返回

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

返回类型

list of str 或 None

cate_output_names(output_names=None)

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

由对输出应用转换的估计器重写。

参数

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

返回

output_names – 返回输出名称。

返回类型

list of str

cate_treatment_names(treatment_names=None)

获取处理名称。

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

参数

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

返回

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

返回类型

list of str

const_marginal_ate(X=None)

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

参数

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

返回

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

返回类型

(d_y, d_f_t) matrix,其中 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) matrix, 可选) – 每个样本的特征

返回

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

返回类型

对象

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], default 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

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

返回类型

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

const_marginal_effect(X=None)

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

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

参数

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

返回

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

返回类型

(m, d_y, d_f_t) matrix 或 (d_y, d_f_t) matrix (如果 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) matrix, 可选) – 每个样本的特征

返回

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

返回类型

对象

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

模型生成的量 \(\theta(X)\) 的置信区间。仅在调用 fit 方法时 inference 不为 None 时可用。

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

  • alpha (float in [0, 1], default 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)\)

效应在两组测试样本 \(\{T0_i, T1_i, X_i\}\) 上,以特征向量为条件计算。

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

  • T1 ((m, d_t) matrix 或 长度为 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 或 长度为 m 的向量, default 0) – 每个样本的基础处理

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

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

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

  • alpha (float in [0, 1], default 0.05) – 报告区间的总置信水平。报告 alpha/2, 1-alpha/2 置信区间。

返回

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

返回类型

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

fit(Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None, cache_values=False, inference=None)

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

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

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

  • Z ((n, d_z) matrix) – 每个样本的工具变量

  • X ((n, d_x) matrix, 可选) – 每个样本的特征

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

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

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

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

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

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

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

返回类型

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) 数组

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

返回类型

对象

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

边际效应在两组测试样本 \(\{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) 数组

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

返回类型

对象

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], default 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, Z, X=None, W=None, sample_weight=None)

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

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

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

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

  • Z ((n, d_z) matrix) – 每个样本的工具变量

  • X ((n, d_x) matrix, 可选) – 每个样本的特征

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

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

返回

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

返回类型

float

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

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

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

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

  • treatment_names (list, 可选) – 特征化处理的名称。在离散处理场景中,名称不应包含基线处理(即控制处理,默认是字母顺序较小的处理)的名称

  • output_names (list, 可选) – 结果的名称。

  • background_samples (int , default 100) – 用于计算基线效应的样本数量。如果为 None,则使用所有样本。

返回

shap_outs – 一个嵌套字典,以每个输出名称(例如当 output_names=None 时为 ‘Y0’、‘Y1’ 等)和每个处理名称(例如当 treatment_names=None 时为 ‘T0’、‘T1’ 等)作为键,以 shap_values 解释对象作为值。如果在拟合时输入数据也包含元数据(例如是 pandas DataFrames),则使用处理、结果和特征的列元数据而不是上述默认值(除非用户通过显式传递相应名称来覆盖)。

返回类型

explanation 对象的嵌套字典

property dowhy

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

返回

DoWhyWrapperDoWhyWrapper 实例

返回类型

实例

property model_cate

获取拟合的最终 CATE 模型。

返回

model_cate – 拟合后对应的 model_final 对象实例,即常数边际 CATE 模型。

返回类型

类型为 type(model_final) 的对象

property models_t_xw

获取 \(\E[T | X]\) 的拟合模型。

返回

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

返回类型

类型为 type(model_t_xw) 的对象的嵌套列表

property models_t_xwz

获取 \(\E[T | X, Z]\) 的拟合模型。

返回

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

返回类型

类型为 type(model_t_xwz) 的对象的嵌套列表

property models_y_xw

获取 \(\E[Y | X]\) 的拟合模型。

返回

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

返回类型

类型为 type(model_y_xw) 的对象的嵌套列表

property nuisance_scores_t_xw

获取 t_xw 模型在样本外训练数据上的评分

property nuisance_scores_t_xwz

获取 t_xwz 模型在样本外训练数据上的评分

property nuisance_scores_y_xw

获取 y_xw 模型在样本外训练数据上的评分

property residuals_

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