econml.dr.LinearDRLearner

class econml.dr.LinearDRLearner(*, model_propensity='auto', model_regression='auto', featurizer=None, fit_cate_intercept=True, discrete_outcome=False, min_propensity=1e-06, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False, enable_federation=False, use_ray=False, ray_remote_func_options=None)[source]

基类:econml._cate_estimator.StatsModelsCateEstimatorDiscreteMixin, econml.dr._drlearner.DRLearner

DRLearner 的特例,其中最后阶段是对低维特征集进行线性回归。在这种情况下,推断可以通过估计参数的渐近正态特征化来执行。这比 bootstrap 推断计算速度更快。为此,只需保持设置 inference='auto' 不变,或明确设置为 inference='statsmodels',或通过 inference=StatsModelsInferenceDiscrete(cov_type='HC1) 更改协方差类型计算。

更具体地说,此估计器假定对于每个处理,最终的 CATE 模型采用以下线性形式

\[\theta_t(X) = \left\langle \theta_t, \phi(X) \right\rangle + \beta_t\]

其中 \(\phi(X)\) 是特征化器的输出特征,如果 featurizer 为 None,则为 X\(\beta_t\) 是 CATE 的截距,如果 fit_cate_intercept=True (默认) 则包含该截距。它通过运行标准的普通线性回归 (OLS) 来拟合,将双重稳健的输出差异回归到 X 上

\[\min_{\theta_t, \beta_t} E_n\left[\left(Y_{i, t}^{DR} - Y_{i, 0}^{DR} - \left\langle \theta_t, \phi(X_i) \right\rangle - \beta_t\right)^2\right]\]

然后,可以通过 OLS 的标准推断方法执行推断,即通过估计参数的渐近正态近似。默认使用的协方差估计器是异方差稳健的 (HC1)。对于其他方法,请参见 StatsModelsInferenceDiscrete。可以通过设置:inference=StatsModelsInferenceDiscrete(cov_type=...) 来调用它们。

即使 CATE 模型在 \(\phi(X)\) 中不是线性的,这种方法也是有效的。在这种情况下,它对 CATE 模型的最佳线性近似执行推断。

参数
  • model_propensity (estimator, default 'auto') – 用于估计 Pr[T=t | X, W] 的分类器。通过将处理变量回归到(特征,控制变量)连接上来训练。

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

    • 否则,请参阅 模型选择 以获取支持的选项范围

  • model_regression (estimator, default 'auto') – 用于估计 E[Y | X, W, T] 的估计器。通过将 Y 回归到(特征,控制变量,one-hot 编码的处理变量)连接上来训练。one-hot 编码不包括基线处理。

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

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

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

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

  • discrete_outcome (bool, default False) – 输出变量是否应被视为二元的

  • min_propensity (float, default 1e-6) – 用于裁剪倾向性估计值的最小倾向性,以避免除以零。

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

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

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

    • 整数,指定折数。

    • CV 分割器

    • 生成 (train, test) 分割作为索引数组的可迭代对象。

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

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

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

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

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

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

  • enable_federation (bool, default False) – 是否对最终模型启用联邦。这会产生内存成本,因此仅当此模型将与其他模型聚合时才应启用。

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

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

示例

一个使用默认模型的简单示例

from econml.dr import DRLearner, LinearDRLearner

np.random.seed(123)
X = np.random.normal(size=(1000, 3))
T = np.random.binomial(2, scipy.special.expit(X[:, 0]))
y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))
est = LinearDRLearner()
est.fit(y, T, X=X, W=None)
>>> est.effect(X[:3])
array([ 0.432476...,  0.359739..., -0.085326...])
>>> est.effect_interval(X[:3])
(array([ 0.084145... , -0.178020..., -0.734688...]), array([0.780807..., 0.897500..., 0.564035...]))
>>> est.coef_(T=1)
array([ 0.450620..., -0.008792...,  0.075242...])
>>> est.coef__interval(T=1)
(array([ 0.156233... , -0.252177..., -0.159805...]), array([0.745007..., 0.234592..., 0.310290...]))
>>> est.intercept_(T=1)
0.90916103...
>>> est.intercept__interval(T=1)
(0.66855287..., 1.14976919...)
score_

最终双重稳健潜在结果回归中的 MSE,即

\[\frac{1}{n_t} \sum_{t=1}^{n_t} \frac{1}{n} \sum_{i=1}^n (Y_{i, t}^{DR} - \hat{\theta}_t(X_i))^2\]

其中 n_t 是处理变量的数量(不包括控制变量)。

如果在 fit 时 sample_weight 不为 None,则返回样本的加权平均值。

类型

float

__init__(*, model_propensity='auto', model_regression='auto', featurizer=None, fit_cate_intercept=True, discrete_outcome=False, min_propensity=1e-06, categories='auto', cv=2, mc_iters=None, mc_agg='mean', random_state=None, allow_missing=False, enable_federation=False, use_ray=False, ray_remote_func_options=None)[source]

方法

__init__(*[, model_propensity, ...])

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_(T)

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

coef__inference(T)

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

coef__interval(T, *[, alpha])

与处理 T 相关的常数边际处理效应线性模型中系数的置信区间。

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_(T)

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

intercept__inference(T)

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

intercept__interval(T, *[, alpha])

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

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

model_cate([T])

获取拟合的最终 CATE 模型。

refit_final(*[, inference])

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

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

在新数据集上评估拟合的 CATE 模型。

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

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

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

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

属性

dowhy

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

featurizer_

获取拟合的特征化器。

fit_cate_intercept_

fitted_models_final

model_final

model_final_

models_nuisance_

models_propensity

获取拟合的倾向性模型。

models_regression

获取拟合的回归模型。

multitask_model_cate

获取拟合的最终 CATE 模型。

multitask_model_final

nuisance_scores_propensity

获取倾向性模型在样本外训练数据上的得分

nuisance_scores_regression

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

ortho_learner_model_final_

transformer

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

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

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

参数
  • T0 ((m, d_t) matrix or vector of length m) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m) – 每个样本的目标处理

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

返回

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

  • T0 ((m, d_t) matrix or vector of length m, default 0) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m, default 1) – 每个样本的目标处理

返回

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

返回类型

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) matrix, optional) – 每个样本的特征

  • T0 ((m, d_t) matrix or vector of length m, default 0) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m, default 1) – 每个样本的目标处理

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

返回

out_feature_names – 输出特征 \(\phi(X)\) 的名称,即每个处理的最终 CATE 模型在其上呈线性的特征。这些名称与 coef_() 参数的每个条目相关联。仅当 featurizer 不为 None 且具有方法 get_feature_names(feature_names) 时可用。否则返回 None。

返回类型

list of str or None

cate_output_names(output_names=None)

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

由对输出进行转换的估计器覆盖。

参数

output_names (list of str of length Y.shape[1] or 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], optional) – 处理变量的名称。如果为 None 且传递给 fit 的 T 是一个 dataframe,则默认为 dataframe 中的列名。

返回

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

返回类型

list of str

coef_(T)

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

参数

T (alphanumeric) – 需要获取系数的输入处理变量。

返回

coef – 其中 n_x 是进入最终模型的特征数量(如果是 CATE 估计器带有特征化器,则为 X 的维度或 featurizer.fit_transform(X) 的维度)。

返回类型

(n_x,) 或 (n_y, n_x) array_like

coef__inference(T)

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

参数

T (alphanumeric) – 需要获取系数的输入处理变量。

返回

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

返回类型

object

coef__interval(T, *, alpha=0.05)

与处理 T 相关的常数边际处理效应线性模型中系数的置信区间。

参数
  • T (alphanumeric) – 需要获取系数的输入处理变量。

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

返回

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

返回类型

tuple(type of coef_(T), type of coef_(T))

const_marginal_ate(X=None)

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

参数

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

返回

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

返回类型

(d_y, d_t) matrix

const_marginal_ate_inference(X=None)

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

参数

X ((m, d_x) matrix, optional) – 每个样本的特征

返回

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

返回类型

object

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

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

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

  • alpha (float in [0, 1], default 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) matrix, optional) – 每个样本的特征。

返回

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

返回类型

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

const_marginal_effect_inference(X=None)

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

参数

X ((m, d_x) matrix, optional) – 每个样本的特征

返回

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

返回类型

object

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

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

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

  • alpha (float in [0, 1], default 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) matrix or vector of length m) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m) – 每个样本的目标处理

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

返回

τ – 对于每个样本,每个结果的异质处理效应。请注意,当 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, optional) – 每个样本的特征

  • T0 ((m, d_t) matrix or vector of length m, default 0) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m, default 1) – 每个样本的目标处理

返回

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

返回类型

object

effect_interval(X=None, *, T0=0, T1=1, alpha=0.05)

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

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

  • T0 ((m, d_t) matrix or vector of length m, default 0) – 每个样本的基准处理

  • T1 ((m, d_t) matrix or vector of length m, default 1) – 每个样本的目标处理

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

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

参数
  • Y ((n,) vector of length n) – 每个样本的输出变量

  • T ((n,) vector of length n) – 每个样本的处理变量

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

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

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

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

  • sample_var ((n,) nd array_like, optional) – 用于计算观测值 i 所代表的平均结果的原始 freq_weight[i] 个观测值的输出变量方差。

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

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

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

返回

self

返回类型

DRLearner 实例

intercept_(T)

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

参数

T (alphanumeric) – 需要获取系数的输入处理变量。

返回

截距

返回类型

float 或 (n_y,) array_like

intercept__inference(T)

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

参数

T (alphanumeric) – 需要获取系数的输入处理变量。

返回

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

返回类型

object

intercept__interval(T, *, alpha=0.05)

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

参数
  • T (alphanumeric) – 需要获取系数的输入处理变量。

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

返回

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

返回类型

tuple(type of intercept_(T), type of intercept_(T))

marginal_ate(T, X=None)

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

边际效应在基准处理点附近计算,并在 X 的总体上取平均。

参数
  • T ((m, d_t) matrix) – 每个样本的基准处理

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

返回

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

返回类型

(d_y, d_t) array

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, optional) – 每个样本的特征

返回

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

返回类型

object

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, optional) – 每个样本的特征

  • alpha (float in [0, 1], default 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) matrix) – 每个样本的基准处理

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

返回

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

返回类型

(m, d_y, d_t) array

marginal_effect_inference(T, X=None)

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

参数
  • T ((m, d_t) matrix) – 每个样本的基准处理

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

返回

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

返回类型

object

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, optional) – 每个样本的特征

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

返回

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

返回类型

tuple(type of marginal_effect(T, X), type of marginal_effect(T, X) )

model_cate(T=1)

获取拟合的最终 CATE 模型。

参数

T (alphanumeric) – 需要获取拟合 CATE 模型的处理变量。

返回

model_cate – 调用 fit 后拟合的 model_final 对象的实例,对应于处理 T=t 与基准处理的 CATE 模型。在 multitask_model_final=False 时可用。

返回类型

object of type(model_final)

refit_final(*, inference='auto')

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

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

参数

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

返回

self – 此实例

返回类型

object

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

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

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

参数
  • Y ((n,) vector of length n) – 每个样本的输出变量

  • T ((n,) vector of length n) – 每个样本的处理变量

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

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

  • 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] 的 str 列表,可选) – 输入特征的名称。

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

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

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

返回

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

返回类型

解释对象的嵌套字典

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

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

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

  • value (浮点数,默认 0) – 在零假设下您希望测试的指标的平均值。

  • decimals (int,默认 3) – 每列四舍五入的小数位数。

  • feature_names (str 列表,可选) – 输入特征的名称。

  • treatment_names (str 列表,可选) – 处理的名称。

  • output_names (str 列表,可选) – 输出的名称。

返回

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

返回类型

Summary 实例

属性 dowhy

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

返回

DoWhyWrapperDoWhyWrapper 的一个实例

返回类型

实例

属性 featurizer_

获取拟合的特征化器。

返回

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

返回类型

featurizer 类型的对象

属性 models_propensity

获取拟合的倾向性模型。

返回

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

返回类型

model_propensity 类型的对象的嵌套列表

属性 models_regression

获取拟合的回归模型。

返回

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

返回类型

model_regression 类型的对象的嵌套列表

属性 multitask_model_cate

获取拟合的最终 CATE 模型。

返回

multitask_model_cate – 在调用 fit 后拟合的 model_final 对象的一个实例,其结果向量对应于每个处理相对于基线的 CATE 模型。仅当 multitask_model_final=True 时可用。

返回类型

model_final 类型的对象

属性 nuisance_scores_propensity

获取倾向性模型在样本外训练数据上的得分

属性 nuisance_scores_regression

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