econml.dr.SparseLinearDRLearner
- class econml.dr.SparseLinearDRLearner(*, model_propensity='auto', model_regression='auto', featurizer=None, fit_cate_intercept=True, discrete_outcome=False, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10, max_iter=1000, tol=0.0001, n_jobs=None, min_propensity=1e-06, 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.DebiasedLassoCateEstimatorDiscreteMixin
,econml.dr._drlearner.DRLearner
DRLearner
的一个特殊情况,其最终阶段是去偏 Lasso 回归。在这种情况下,可以通过去偏 lasso 方法及其估计参数的渐近正态性质进行推断。这在计算上比 Bootstrap 推断更快。保持默认的inference='auto'
不变,或者在拟合时显式设置inference='debiasedlasso'
以通过渐近正态性启用推断。更具体地说,该估计器假设每个处理的最终 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
(默认) 则包含此项。它通过运行去偏 lasso 回归(即 \(\ell_1\) 惩罚回归并去偏)来拟合,将双重鲁棒结果差异对 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] + \lambda \left\lVert \theta_t \right\rVert_1\]然后对解添加去偏校正。如果 alpha='auto' (推荐),则惩罚权重 \(\lambda\) 通过交叉验证进行最优设置。
即使 CATE 模型在 \(\phi(X)\) 中不是线性的,这种方法也有效。在这种情况下,它对 CATE 模型的最佳稀疏线性逼近进行推断。
- 参数
model_propensity (估计器,默认
'auto'
) – 用于估计 Pr[T=t | X, W] 的分类器。通过将处理对(特征,控制变量)的连接进行回归训练。如果为
'auto'
,模型将是线性模型和森林模型集合中的最佳拟合模型。否则,请参阅 模型选择 以了解支持的选项范围。
model_regression (估计器,默认
'auto'
) – 用于估计 E[Y | X, W, T] 的估计器。通过将 Y 对(特征,控制变量,one-hot 编码的处理)的连接进行回归训练。one-hot 编码排除了基准处理。如果为
'auto'
,模型将是线性模型和森林模型集合中的最佳拟合模型。否则,请参阅 模型选择 以了解支持的选项范围;如果指定了单个模型,则如果 discrete_outcome 为 True,它应该是一个分类器,否则是一个回归器。
特征提取器 (featurizer) (转换器, 可选) – 必须支持 fit_transform 和 transform 方法。用于在最终 CATE 回归中创建复合特征。如果 X 为 None,则忽略此参数。最终 CATE 将在 featurizer.fit_transform(X) 的结果上进行训练。如果 featurizer=None,则 CATE 在 X 上进行训练。
拟合 cate 截距 (fit_cate_intercept) (布尔值, 默认 True) – 线性 CATE 模型是否应该包含常数项。
离散结果 (discrete_outcome) (布尔值, 默认 False) – 是否将结果视为二元变量。
alpha (字符串 | 浮点数, 可选, 默认 'auto'。) – 在最终模型中通过去偏 lasso 应用于 CATE 的 L1 正则化参数。'auto' 对应于
DebiasedLasso
的交叉验证形式。n_alphas (整数, 默认 100) – 如果 alpha='auto',尝试多少个 alpha 值。
alpha_cov (字符串 | 浮点数, 默认 'auto') – 在构建用于校正去偏 lasso 中最终阶段 lasso 系数的协方差矩阵 Theta 的伪逆时使用的正则化 alpha 参数。每一次这样的回归都对应于一个特征对剩余特征的回归。
n_alphas_cov (整数, 默认 10) – 如果 alpha_cov='auto',尝试多少个 alpha_cov 值。
max_iter (整数, 默认 1000) – 去偏 Lasso 中的最大迭代次数。
tol (浮点数, 默认 1e-4) – 优化的容差:如果更新小于
tol
,优化代码会检查对偶间隙是否达到最优,并继续直到小于tol
。n_jobs (整数或 None, 可选) – fit 和 predict 并行运行的任务数。
None
表示 1,除非在joblib.parallel_backend()
上下文中。-1
表示使用所有处理器。最小倾向性 (min_propensity) (浮点数, 默认
1e-6
) – 用于裁剪倾向性估计的最小倾向性值,以避免除以零。类别 (categories) ('auto' 或 列表, 默认 'auto') – 对离散处理进行编码时使用的类别(或 'auto' 表示使用唯一排序值)。第一个类别将被视为对照处理。
cv (整数, 交叉验证生成器或可迭代对象, 默认 2) – 决定交叉验证的分割策略。cv 的可能输入为
None,使用默认的 3 折交叉验证,
整数,指定折数。
一个可迭代对象,以索引数组形式生成 (训练, 测试) 分割。
对于整数/None 输入,如果处理是离散的,则使用
StratifiedKFold
,否则使用KFold
(两种情况都会随机打乱)。除非使用可迭代对象,否则我们调用 split(X,T) 来生成分割。
mc_iters (整数, 可选) – 重复运行第一阶段模型的次数,以减少干扰项的方差。
mc_agg ({'mean', 'median'}, 默认 'mean') – 如何在 mc_iters 次交叉拟合的蒙特卡洛迭代中聚合每个样本的干扰项值。
random_state (整数,
RandomState
实例或 None) – 如果是整数,random_state 是随机数生成器使用的种子;如果是RandomState
实例,random_state 是随机数生成器;如果是 None,随机数生成器是np.random
使用的RandomState
实例。允许缺失值 (allow_missing) (布尔值) – 是否允许 W 中存在缺失值。如果为 True,则需要提供能够处理缺失值的 model_propensity 和 model_regression。
使用 Ray (use_ray) (布尔值, 默认 False) – 是否使用 Ray 并行化交叉验证步骤。如果为 True,必须安装 Ray。
ray_remote_func_options (字典, 默认 None) – 使用 Ray 时传递给远程函数的选项。请参阅 https://docs.rayai.org.cn/en/latest/ray-core/api/doc/ray.remote.html
示例
使用默认模型的一个简单示例
from econml.dr import DRLearner, SparseLinearDRLearner 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 = SparseLinearDRLearner() est.fit(y, T, X=X, W=None)
>>> est.effect(X[:3]) array([ 0.43..., 0.35..., -0.08... ]) >>> est.effect_interval(X[:3]) (array([-0.01..., -0.26..., -0.81...]), array([0.87..., 0.98..., 0.65...])) >>> est.coef_(T=1) array([ 0.44..., -0.00..., 0.07...]) >>> est.coef__interval(T=1) (array([ 0.19... , -0.24..., -0.17...]), array([0.70..., 0.22..., 0.32...])) >>> est.intercept_(T=1) 0.90... >>> est.intercept__interval(T=1) (0.66..., 1.14...)
- 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 是处理数(不包括对照组)。
如果在拟合时 sample_weight 不是 None,则返回样本的加权平均值。
- 类型
- __init__(*, model_propensity='auto', model_regression='auto', featurizer=None, fit_cate_intercept=True, discrete_outcome=False, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10, max_iter=1000, tol=0.0001, n_jobs=None, min_propensity=1e-06, 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_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 相关的常数边际处理效应线性模型中的系数。
与处理 T 相关的常数边际处理效应线性模型中系数的推断结果。
coef__interval
(T, *[, alpha])与处理 T 相关的常数边际处理效应线性模型中系数的置信区间。
const_marginal_ate
([X])计算平均常数边际 CATE \(E_X[\theta(X)]\)。
模型生成的量 \(E_X[\theta(X)]\) 的推断结果。
const_marginal_ate_interval
([X, alpha])模型生成的量 \(E_X[\theta(X)]\) 的置信区间。
计算常数边际 CATE \(\theta(·)\)。
模型生成的量 \(\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, groups, ...])从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。
intercept_
(T)与处理 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 相关的常数边际处理效应线性模型中系数和截距的摘要。
属性
获取
DoWhyWrapper
的实例,以启用 dowhy 包中的其他功能。获取拟合的特征提取器。
fit_cate_intercept_
fitted_models_final
model_final
model_final_
models_nuisance_
获取拟合的倾向性模型。
获取拟合的回归模型。
获取拟合的最终 CATE 模型。
multitask_model_final
获取倾向性模型在样本外训练数据上的得分。
获取回归模型在样本外训练数据上的得分。
ortho_learner_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 是向量而不是二维数组时,结果将是标量。
- 返回类型
浮点数 或 (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) – 每个量的置信区间的下限和上限。
- 返回类型
元组 (类型与
ate(X, T0, T1)
相同, 类型与ate(X, T0, T1))
相同)
- cate_feature_names(feature_names=None)
获取输出特征名称。
- 参数
feature_names (长度为 X.shape[1] 的字符串列表或 None) – 输入特征的名称。如果为 None 且 X 是一个数据框,则默认为数据框中的列名。
- 返回值
out_feature_names – 输出特征 \(\phi(X)\) 的名称,即每个处理的最终 CATE 模型对其呈线性的特征。它是与
coef_()
参数的每个条目相关的特征名称。仅当特征提取器不为 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)
获取处理名称。
如果处理是离散的或经过特征提取,它将返回扩展的处理名称。
- 参数
treatment_names (长度为 T.shape[1] 的字符串列表, 可选) – 处理的名称。如果为 None 且传递给 fit 的 T 是一个数据框,则默认为数据框中的列名。
- 返回值
out_treatment_names – 返回(可能扩展的)处理名称。
- 返回类型
字符串列表
- coef_(T)
与处理 T 相关的常数边际处理效应线性模型中的系数。
- 参数
T (字母数字) – 我们想要获取系数的输入处理。
- 返回值
coef – 其中 n_x 是进入最终模型的特征数量(如果 CATE 估计器有特征提取器,则为 X 的维度或 featurizer.fit_transform(X) 的维度)。
- 返回类型
(n_x,) 或 (n_y, n_x) 数组类型
- coef__inference(T)
与处理 T 相关的常数边际处理效应线性模型中系数的推断结果。
- 参数
T (字母数字) – 我们想要获取系数的输入处理。
- 返回值
InferenceResults – 最终线性模型中系数的推断结果。
- 返回类型
- coef__interval(T, *, alpha=0.05)
与处理 T 相关的常数边际处理效应线性模型中系数的置信区间。
- const_marginal_ate(X=None)
计算平均常数边际 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) – 每个量的置信区间的下限和上限。
- 返回类型
元组(
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 是向量而不是二维数组时,输出中对应的单一维度将被折叠(例如,如果两者都是向量,则此方法的输出也将是向量)
- 返回类型
(m, d_y, d_t) 矩阵;如果 X 为 None,则为 (d_y, d_t) 矩阵
- 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) – 每个量的置信区间的下限和上限。
- 返回类型
元组(
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) – 每个量的置信区间的下限和上限。
- 返回类型
元组(
effect(X, T0, T1)
的类型,effect(X, T0, T1))
的类型)
- fit(Y, T, *, X=None, W=None, sample_weight=None, groups=None, cache_values=False, inference='auto')[source]
从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。
- 参数
Y (长度为 n 的 (n,) 向量) – 每个样本的结果
T (长度为 n 的 (n,) 向量) – 每个样本的处理
X ((n, d_x) 矩阵,可选) – 每个样本的特征
W ((n, d_w) 矩阵,可选) – 每个样本的对照
sample_weight ((n,) 数组或 None) – 每个样本的个体权重。如果为 None,则假定权重相等。
groups ((n,) 向量,可选) – 属于同一组的所有行在分割时将保持在一起。如果 groups 不为 None,则传递给此类初始化器的 cv 参数必须支持其 split 方法的 ‘groups’ 参数。
cache_values (布尔值,默认为 False) – 是否缓存输入和第一阶段结果,这将允许重新拟合不同的最终模型
inference (str,
Inference
实例,或 None) – 执行推断的方法。此估计器支持'bootstrap'
(或BootstrapInference
的实例)和'debiasedlasso'
(或LinearModelInferenceDiscrete
的实例)。
- 返回值
self
- 返回类型
DRLearner 实例
- intercept_(T)
与处理 T 相关的常数边际处理效应线性模型中的截距。
- 参数
T (字母数字) – 我们想要获取系数的输入处理。
- 返回值
截距
- 返回类型
float 或 (n_y,) 数组
- intercept__inference(T)
与处理 T 相关的常数边际处理效应线性模型中截距的推断结果。
- 参数
T (字母数字) – 我们想要获取系数的输入处理。
- 返回值
InferenceResults – 最终线性模型中截距的推断结果
- 返回类型
- intercept__interval(T, *, alpha=0.05)
与处理 T 相关的常数边际处理效应线性模型中的截距。
- 参数
T (字母数字) – 我们想要获取系数的输入处理。
alpha ([0, 1] 范围内的浮点数, 默认 0.05) – 所报告区间的总体置信水平。报告的是 alpha/2 和 1-alpha/2 的置信区间。
- 返回值
lower, upper – 置信区间的下界和上界。
- 返回类型
元组(
intercept_(T)
的类型,intercept_(T)
的类型)
- 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) – 每个量的置信区间的下限和上限。
- 返回类型
元组(
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) – 每个量的置信区间的下限和上限。
- 返回类型
元组(
marginal_effect(T, X)
的类型,marginal_effect(T, X)
的类型)
- model_cate(T=1)
获取拟合的最终 CATE 模型。
- 参数
T (字母数字) – 我们想要拟合 CATE 模型的处理。
- 返回值
model_cate – 调用 fit 后拟合的 model_final 对象实例,对应于处理 T=t 相较于基线的 CATE 模型。当 multitask_model_final=False 时可用。
- 返回类型
type(model_final) 类型的对象
- refit_final(*, inference='auto')
使用新的最终模型规格但保留第一阶段缓存结果来估计反事实模型。
为了成功执行此操作,必须已调用
fit
并设置cache_values=True
。此调用将仅重新拟合最终模型。此调用将使用任何改变最终阶段估计参数的当前设置。如果任何改变第一阶段干扰估计方式的参数也被改变了,则不会产生影响。您需要再次调用 fit 来更改第一阶段估计结果。- 参数
inference (推断方法,可选) – 表示推断方法的字符串或对象
- 返回值
self – 此实例
- 返回类型
- score(Y, T, X=None, W=None, sample_weight=None)
在新数据集上评估拟合的 CATE 模型。根据在拟合时创建的拟合残差干扰模型为新数据集生成干扰参数。它使用不同交叉验证折叠拟合的模型的平均预测。然后计算最终残差 Y 对残差 T 回归的 MSE。
如果 model_final 没有 score 方法,则会引发
AttributeError
- 参数
Y (长度为 n 的 (n,) 向量) – 每个样本的结果
T (长度为 n 的 (n,) 向量) – 每个样本的处理
X ((n, d_x) 矩阵,可选) – 每个样本的特征
W ((n, d_w) 矩阵,可选) – 每个样本的对照
sample_weight ((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 (列表,可选) – 特征化处理的名称。在离散处理场景中,名称不应包含基线处理的名称(即对照处理,默认情况下是字母顺序较小的那个)
output_names (列表,可选) – 结果的名称。
background_samples (整数,默认为 100) – 用于计算基线效应的样本数量。如果为 None,则使用所有样本。
- 返回值
shap_outs – 一个嵌套字典,使用每个输出名称(例如,当 output_names=None 时为 ‘Y0’, ‘Y1’, …)和每个处理名称(例如,当 treatment_names=None 时为 ‘T0’, ‘T1’, …)作为键,并使用 shap_values 解释对象作为值。如果在拟合时输入数据也包含元数据(例如,是 pandas DataFrames),则使用处理、结果和特征的列元数据,而不是上述默认值(除非用户通过显式传递相应名称来覆盖)。
- 返回类型
Explanation 对象的嵌套字典
- summary(T, *, alpha=0.05, value=0, decimals=3, feature_names=None, treatment_names=None, output_names=None)
与处理 T 相关的常数边际处理效应线性模型中系数和截距的摘要。
- 参数
alpha ([0, 1] 范围内的浮点数, 默认 0.05) – 所报告区间的总体置信水平。报告的是 alpha/2 和 1-alpha/2 的置信区间。
value (浮点数,默认为 0) – 您希望在零假设下检验的指标的平均值。
decimals (整数,默认为 3) – 每列四舍五入到的小数位数。
feature_names (字符串列表,可选) – 输入特征的名称
treatment_names (字符串列表,可选) – 处理的名称
output_names (字符串列表,可选) – 输出的名称
- 返回值
smry – 这包含摘要表和文本,可以打印或转换为各种输出格式。
- 返回类型
Summary 实例
- property dowhy
获取
DoWhyWrapper
实例,以启用来自 dowhy 包的其他功能(例如,因果图、反驳测试等)。- 返回值
DoWhyWrapper –
DoWhyWrapper
的实例- 返回类型
实例
- property featurizer_
获取拟合的特征提取器。
- 返回值
featurizer – 用于在最终 CATE 模型训练中预处理 X 的已拟合 featurizer 实例。仅当 featurizer 不为 None 且 X 不为 None 时可用。
- 返回类型
type(featurizer) 类型的对象
- property models_propensity
获取拟合的倾向性模型。
- 返回值
models_propensity – model_propensity 对象的嵌套列表实例。子列表数量等于蒙特卡罗迭代次数,子列表中的每个元素对应一个交叉验证折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
type(model_propensity) 对象的嵌套列表
- property models_regression
获取拟合的回归模型。
- 返回值
model_regression – model_regression 对象的嵌套列表实例。子列表数量等于蒙特卡罗迭代次数,子列表中的每个元素对应一个交叉验证折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
type(model_regression) 对象的嵌套列表
- property multitask_model_cate
获取拟合的最终 CATE 模型。
- 返回值
multitask_model_cate – 调用 fit 后拟合的 model_final 对象实例,其结果向量对应于每种处理相较于基线的 CATE 模型。仅当 multitask_model_final=True 时可用。
- 返回类型
type(model_final) 类型的对象
- property nuisance_scores_propensity
获取倾向性模型在样本外训练数据上的得分。
- property nuisance_scores_regression
获取回归模型在样本外训练数据上的得分。