econml.iv.dr.SparseLinearDRIV

class econml.iv.dr.SparseLinearDRIV(*, model_y_xw='auto', model_t_xw='auto', model_z_xw='auto', model_t_xwz='auto', model_tz_xw='auto', fit_cov_directly=True, flexible_model_effect='auto', prel_cate_approach='driv', prel_cv=1, prel_opt_reweighted=True, projection=False, featurizer=None, fit_cate_intercept=True, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10, max_iter=1000, tol=0.0001, n_jobs=None, cov_clip=0.001, opt_reweighted=False, discrete_outcome=False, discrete_instrument=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._cate_estimator.DebiasedLassoCateEstimatorMixin, econml.iv.dr._dr.DRIV

DRIV 的特例,其中最后阶段是去偏 Lasso 回归。在这种情况下,可以使用去偏 Lasso 方法及其估计参数的渐近正态性来进行推断。这比自助法推断计算速度更快。保持默认的 inference='auto' 不变,或在拟合时明确设置 inference='debiasedlasso',以通过渐近正态性启用推断。

参数
  • model_y_xw (估计器, 默认值 'auto') – 确定如何拟合结果与特征和控制变量的关系 (\(\E[Y | X, W]\))。

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

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

  • model_t_xw (估计器, 默认值 'auto') – 确定如何拟合处理变量与特征和控制变量的关系 (\(\E[T | X, W]\))。

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

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

  • model_z_xw (估计器, 默认值 'auto') – 确定如何拟合工具变量与特征和控制变量的关系 (\(\E[Z | X, W]\))。

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

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

  • model_t_xwz (估计器, 默认值 'auto'屏蔽>) – 确定如何拟合处理变量与特征、控制变量和工具变量的关系 (\(\E[T | X, W, Z]\))。

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

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

  • model_tz_xw (估计器, 默认值 'auto') – 确定如何拟合协方差与特征和控制变量的关系(\(\E[T*Z | X, W]\)\(\E[\tilde{T}*\tilde{Z} | X, W]\),取决于 fit_cov_directly)。

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

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

  • fit_cov_directly (bool, 默认值 True) – 是否拟合 \(\E[\tilde{T}*\tilde{Z} | X, W]\) 而不是 \(\E[T*Z | X, W]\)。否则,我们根据 \(\E[T*Z | X, W] - \E[T | X, W] \E[Z | X, W]\) 计算 \(\E[\tilde{T}*\tilde{Z} | X, W]\)

  • flexible_model_effect (估计器或 ‘auto’ (默认值 ‘auto’)) – 用于 CATE 预估版本的灵活模型,必须在拟合时接受 sample_weight 参数。如果是 ‘auto’,将应用 StatsModelsLinearRegression

  • prel_cate_approach ({‘driv’, ‘dmliv’} 之一, 默认值 ‘driv’) – 估计 CATE 预估版本的模型。如果是 ‘driv’,将使用 _DRIV。如果是 ‘dmliv’,将使用 NonParamDMLIV

  • prel_cv (int, 交叉验证生成器或可迭代对象, 默认值 1) – 确定预估效应模型的交叉验证拆分策略。

  • prel_opt_reweighted (bool, 默认值 True) – 是否对样本进行重新加权以最小化预估效应模型的方差。

  • projection (bool, 默认值 False) – 如果为 True,我们将拟合 DRIV 的一个略微变种,其中使用 E[T|X, W, Z] 作为工具变量而不是 Z,model_z_xw 将被禁用;如果为 False,model_t_xwz 将被禁用。

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

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

  • alpha (str | float, 可选., 默认值 ‘auto’.) – 在最终模型中通过去偏 Lasso 应用的 CATE L1 正则化。‘auto’ 对应于 DebiasedLasso 的交叉验证形式。

  • n_alphas (int, 默认值 100) – 如果 alpha=’auto’,尝试多少个 alpha 值。

  • alpha_cov (str | float, 默认值 ‘auto’) – 在构建用于校正去偏 Lasso 中最终阶段 Lasso 系数的协方差矩阵 Theta 的伪逆时使用的正则化 alpha。每次这样的回归对应于一个特征对其余特征的回归。

  • n_alphas_cov (int, 默认值 10) – 如果 alpha_cov=’auto’,尝试多少个 alpha_cov 值。

  • max_iter (int, 默认值 1000) – 去偏 Lasso 中的最大迭代次数。

  • tol (float, 默认值 1e-4) – 优化的容忍度:如果更新小于 tol,优化代码将检查对偶间隙以判断最优性,并持续进行直到其小于 tol

  • n_jobs (int 或 None, 可选) – fitpredict 并行运行的作业数。None 表示 1,除非在 joblib.parallel_backend() 上下文中。-1 表示使用所有处理器。

  • cov_clip (float, 默认值 0.1) – 对“重叠”度低的区域的协变量进行裁剪,以减小方差。

  • opt_reweighted (bool, 默认值 False) – 是否对样本进行重新加权以最小化方差。如果为 True,则 model_final.fit 必须接受 sample_weight 作为关键字参数。如果为 True,则假定 model_final 足够灵活以拟合真实的 CATE 模型。否则,该方法将返回到 model_final 空间的有偏投影,偏向于在工具变量较强的特征空间区域赋予更多权重。

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

  • discrete_instrument (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 折交叉验证,

    • integer,指定折数。

    • CV 分割器

    • 一个生成 (train, test) 拆分的迭代器,作为索引数组。

    对于 integer/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,则随机数生成器是 np.random 使用的 RandomState 实例。

  • allow_missing (bool) – 是否允许 W 中存在缺失值。如果为 True,则需要提供能够处理缺失值的干扰项模型。

  • 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.iv.dr import SparseLinearDRIV

# 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 = SparseLinearDRIV(discrete_treatment=True, discrete_instrument=True)
est.fit(Y=y, T=T, Z=Z, X=X)
>>> est.effect(X[:3])
array([-4.23929...,  5.89223..., -3.01208...])
>>> est.effect_interval(X[:3])
(array([-6.99789...,  1.96351..., -5.41963...]),
array([-1.48069...,  9.82096..., -0.60454...]))
>>> est.coef_
array([ 4.65819...,  0.94689...,  0.18314...,  0.23012..., -0.40375...])
>>> est.coef__interval()
(array([ 3.51647..., -0.20839..., -0.99568..., -0.89394..., -1.58518...]),
array([5.79991..., 2.10218... , 1.36197..., 1.35420... , 0.77767...]))
>>> est.intercept_
-0.06539...
>>> est.intercept__interval()
(-1.20716..., 1.07637...)
__init__(*, model_y_xw='auto', model_t_xw='auto', model_z_xw='auto', model_t_xwz='auto', model_tz_xw='auto', fit_cov_directly=True, flexible_model_effect='auto', prel_cate_approach='driv', prel_cv=1, prel_opt_reweighted=True, projection=False, featurizer=None, fit_cate_intercept=True, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10, max_iter=1000, tol=0.0001, n_jobs=None, cov_clip=0.001, opt_reweighted=False, discrete_outcome=False, discrete_instrument=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_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])

获取处理变量名称。

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, *, Z[, 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, Z[, 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_cate

获取拟合的最终 CATE 模型。

model_final

model_final_

models_nuisance_

models_prel_model_effect

获取拟合的预估 CATE 估计器。

models_t_xw

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

models_t_xwz

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

models_tz_xw

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

models_y_xw

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

models_z_xw

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

nuisance_scores_prel_model_effect

获取 prel_model_effect 模型在样本外训练数据上的得分。

nuisance_scores_t_xw

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

nuisance_scores_t_xwz

获取 z_xw 模型在样本外训练数据上的得分。

nuisance_scores_tz_xw

获取 tz_xw 模型在样本外训练数据上的得分。

nuisance_scores_y_xw

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

nuisance_scores_z_xw

获取 z_xw 模型在样本外训练数据上的得分。

original_featurizer

ortho_learner_model_final_

residuals_

一个元组 (prel_theta, Y_res, T_res, Z_res, cov, X, W, Z),包含第一阶段估计的残差以及相关的 X、W 和 Z。

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,) array

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 摘要。

返回类型

object

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)

获取输出特征名称。

参数

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

返回值

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 是一个 DataFrame,则默认为 DataFrame 的列名。

返回值

output_names – 返回输出名称。

返回类型

字符串列表

cate_treatment_names(treatment_names=None)

获取处理变量名称。

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

参数

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

返回值

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

返回类型

字符串列表

coef__inference()

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

返回值

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

返回类型

object

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)

计算平均常数边际 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 摘要。

返回类型

object

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)

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

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

参数

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

返回值

theta – 对于每个样本 X[i],每个特征化处理对每个结果的恒定边际 CATE。注意,当 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 摘要。

返回类型

object

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

返回类型

object

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, *, Z, X=None, W=None, sample_weight=None, groups=None, cache_values=False, inference='auto')[source]

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

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

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

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

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

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

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

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

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

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

返回类型

self

intercept__inference()

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

返回值

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

返回类型

object

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

返回类型

object

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

返回类型

object

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='auto')

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

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

参数

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

返回值

self – 此实例

返回类型

object

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

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

如果 model_final 没有 score 方法,则会抛出 AttributeError

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

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

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

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

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

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

  • feature_names (长度为 X.shape[1] 的字符串列表, 可选) – 输入特征的名称。

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

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

  • 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 的一个实例

返回类型

实例

property featurizer_

获取拟合的特征器。

返回值

featurizer – 用于在最终 CATE 模型训练中预处理 X 的已拟合特征化器的实例。仅当 featurizer 不为 None 且 X 不为 None 时可用。

返回类型

featurizer 类型的对象

property intercept_

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

返回值

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

返回类型

float 或 (n_y,) 或 (n_y, n_t) 数组状

property model_cate

获取拟合的最终 CATE 模型。

返回值

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

返回类型

model_final 类型的对象

property models_prel_model_effect

获取拟合的预估 CATE 估计器。

返回值

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

返回类型

prel_model_effect 类型对象的嵌套列表

property models_t_xw

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

返回值

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

返回类型

model_t_xw 类型对象的嵌套列表

property models_t_xwz

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

返回值

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

返回类型

model_z_xw 类型对象的嵌套列表

property models_tz_xw

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

返回值

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

返回类型

model_tz_xw 类型对象的嵌套列表

property models_y_xw

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

返回值

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

返回类型

model_y_xw 类型对象的嵌套列表

property models_z_xw

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

返回值

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

返回类型

model_z_xw 类型对象的嵌套列表

property nuisance_scores_prel_model_effect

获取 prel_model_effect 模型在样本外训练数据上的得分。

property nuisance_scores_t_xw

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

property nuisance_scores_t_xwz

获取 z_xw 模型在样本外训练数据上的得分。

property nuisance_scores_tz_xw

获取 tz_xw 模型在样本外训练数据上的得分。

property nuisance_scores_y_xw

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

property nuisance_scores_z_xw

获取 z_xw 模型在样本外训练数据上的得分。

property residuals_

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