econml.iv.dr.LinearDRIV
- class econml.iv.dr.LinearDRIV(*, 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, 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)[源码]
基类:
econml._cate_estimator.StatsModelsCateEstimatorMixin
,econml.iv.dr._dr.DRIV
DRIV
的特例,其最终阶段是线性回归。在这种情况下,推断可以通过 StatsModels 推断方法及其估计参数的渐近正态特征化进行。这比 bootstrap 推断计算更快。保持默认值inference='auto'
不变,或在拟合时显式设置为inference='statsmodels'
以通过渐近正态性启用推断。- 参数
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, cross-validation生成器或可迭代对象, 默认为 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 模型是否应包含常数项。
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, cross-validation生成器或可迭代对象, 默认为 2) – 确定交叉验证分割策略。cv 的可能输入包括
None,使用默认的 3 折交叉验证,
整数,指定折数。
一个可迭代对象,生成 (train, test) 分割作为索引数组。
对于整数/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,随机数生成器是RandomState
实例,由np.random
使用。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 LinearDRIV # 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 = LinearDRIV(discrete_treatment=True, discrete_instrument=True) est.fit(Y=y, T=T, Z=Z, X=X)
>>> est.effect(X[:3]) array([-4.27803..., 5.84999..., -2.98296...]) >>> est.effect_interval(X[:3]) (array([-7.16141..., 1.71887..., -5.41441...]), array([-1.39465..., 9.98110..., -0.55151...])) >>> est.coef_ array([ 4.65225..., 0.93347..., 0.23315..., 0.22843..., -0.42850...]) >>> est.coef__interval() (array([ 3.40045..., -0.19165..., -0.95122..., -0.88662..., -1.56024...]), array([5.90404..., 2.05861..., 1.41753..., 1.34349..., 0.70324...])) >>> est.intercept_ -0.12823... >>> est.intercept__interval() (-1.27155..., 1.01508...)
- __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, 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)[源码]
方法
__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__interval
(*[, alpha])常数边际处理效应线性模型的系数。
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, *, Z[, X, W, sample_weight, ...])从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。
常数边际处理效应线性模型的截距推断。
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 模型。根据在拟合时创建的拟合好的残差干扰模型,为新数据集生成干扰项。它使用不同 crossfit 折叠拟合的模型预测的平均值。然后计算最终残差 Y 对残差 T 回归的 MSE。
shap_values
(X, *[, feature_names, ...])最终阶段模型 (const_marginal_effect) 的 Shap 值
summary
([alpha, value, decimals, ...])常数边际处理效应线性模型的系数和截距摘要。
属性
bias_part_of_coef
常数边际处理效应线性模型的系数。
获取
DoWhyWrapper
实例,以启用 dowhy 包的其他功能。featurizer
获取拟合好的特征化器。
fit_cate_intercept_
常数边际处理效应线性模型的截距。
获取拟合好的最终 CATE 模型。
model_final
model_final_
models_nuisance_
获取拟合好的初步 CATE 估计器。
获取 \(\E[T | X]\) 的拟合模型。
获取 \(\E[Z | X]\) 的拟合模型。
获取 \(\E[T*Z | X]\) 的拟合模型。
获取 \(\E[Y | X]\) 的拟合模型。
获取 \(\E[Z | X]\) 的拟合模型。
获取初步效应模型在样本外训练数据上的分数
获取 t_xw 模型在样本外训练数据上的分数
获取 z_xw 模型在样本外训练数据上的分数
获取 tz_xw 模型在样本外训练数据上的分数
获取 y_xw 模型在样本外训练数据上的分数
获取 z_xw 模型在样本外训练数据上的分数
original_featurizer
ortho_learner_model_final_
一个元组 (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,) 数组
- 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 摘要。
- 返回类型
- 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 (float, 范围在 [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 (list of str, 长度为 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, 长度为 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, 长度为 T.shape[1], 可选) – 处理的名称。如果为 None 且传递给 fit 的 T 是一个 dataframe,则默认为 dataframe 的列名。
- 返回
out_treatment_names – 返回(可能已扩展的)处理名称。
- 返回类型
list of str
- coef__interval(*, alpha=0.05)
常数边际处理效应线性模型的系数。
- 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 摘要。
- 返回类型
- const_marginal_ate_interval(X=None, *, alpha=0.05)
模型产生的数量 \(E_X[\theta(X)]\) 的置信区间。仅在调用 fit 方法时
inference
不是None
时可用。- 参数
X ((m, d_x) 矩阵, 可选) – 每个样本的特征
alpha (float, 范围在 [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 摘要。
- 返回类型
- const_marginal_effect_interval(X=None, *, alpha=0.05)
模型产生的数量 \(\theta(X)\) 的置信区间。仅在调用 fit 方法时
inference
不是None
时可用。- 参数
X ((m, d_x) 矩阵, 可选) – 每个样本的特征
alpha (float, 范围在 [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 摘要。
- 返回类型
- 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 (float, 范围在 [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, freq_weight=None, sample_var=None, groups=None, cache_values=False, inference='auto')[源码]
从数据中估计反事实模型,即估计函数 \(\theta(\cdot)\)。
- 参数
Y ((n,) 长度为 n 的向量) – 每个样本的结果
T ((n,) 长度为 n 的向量) – 每个样本的处理
Z ((n, d_z) 矩阵) – 每个样本的工具变量
X ((n, d_x) 矩阵, 可选) – 每个样本的特征
W ((n, d_w) 矩阵, 可选) – 每个样本的控制变量
sample_weight ((n,) 数组类型, 可选) – 每个样本的个体权重。如果为 None,则假定权重相等。
freq_weight ((n,) int 数组类型, 可选) – 观测值的权重。观测值 i 被视为 freq_weight[i] 个独立观测值的平均结果。当
sample_var
不为 None 时,应提供此参数。sample_var ((n,) nd 数组类型, 可选) – 用于计算观测值 i 所代表的平均结果的原始 freq_weight[i] 个观测值的结果方差。
groups ((n,) 向量, 可选) – 对应于同一组的所有行在分割过程中将保持在一起。如果 groups 不为 None,则传递给此类的初始化方法的 cv 参数必须支持其 split 方法的 'groups' 参数。
cache_values (bool, 默认为 False) – 是否缓存输入和第一阶段结果,这将允许使用不同的最终模型重新拟合
inference (str,
Inference
实例或 None) – 执行推断的方法。此估计器支持'bootstrap'
(或BootstrapInference
实例)和'statsmodels'
(或StatsModelsInferenceDiscrete
实例)。
- 返回类型
self
- intercept__interval(*, alpha=0.05)
常数边际处理效应线性模型的截距。
- 参数
alpha (float, 范围在 [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 摘要。
- 返回类型
- 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 (float, 范围在 [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 摘要。
- 返回类型
- 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 (float, 范围在 [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 – 此实例
- 返回类型
- score(Y, T, Z, X=None, W=None, sample_weight=None)
在新数据集上评估拟合好的 CATE 模型。根据在拟合时创建的拟合好的残差干扰模型,为新数据集生成干扰项。它使用不同 crossfit 折叠拟合的模型预测的平均值。然后计算最终残差 Y 对残差 T 回归的 MSE。
如果 model_final 没有 score 方法,则会引发
AttributeError
- 参数
Y ((n, d_y) 矩阵或长度为 n 的向量) – 每个样本的结果
T ((n, d_t) 矩阵或长度为 n 的向量) – 每个样本的处理
Z ((n, d_z) 矩阵) – 每个样本的工具变量
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 (list of str, 长度为 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 explanation 对象作为值。如果在拟合时输入的data也包含元数据(例如,是 pandas DataFrames),则使用处理、结果和特征的列元数据代替上述默认值(除非用户显式传递相应的名称进行覆盖)。
- 返回类型
Explanation 对象 的嵌套字典
- summary(alpha=0.05, value=0, decimals=3, feature_names=None, treatment_names=None, output_names=None)
常数边际处理效应线性模型的系数和截距摘要。
- 参数
alpha (float, 范围在 [0, 1] 内, 默认为 0.05) – 报告区间的总体置信水平。报告 alpha/2, 1-alpha/2 置信区间。
value (float, default 0) – 您希望在零假设下检验的度量值的平均值。
decimals (int, default 3) – 每列要四舍五入的小数位数。
feature_names (list of str, optional) – 特征名称的输入
treatment_names (list of str, optional) – 处理名称
output_names (list of str, optional) – 输出名称
- 返回
smry – 这包含摘要表格和文本,可以打印或转换为各种输出格式。
- 返回类型
Summary 实例
- property coef_
常数边际处理效应线性模型的系数。
- 返回
coef – 其中 n_x 是进入最终模型的特征数量(如果 CATE 估计器有特征器,则为 X 的维度或 featurizer.fit_transform(X) 的维度),n_t 是处理的数量,n_y 是结果的数量。如果原始输入是向量而不是二维数组,则省略维度。对于二元处理,也省略 n_t 维度。
- 返回类型
(n_x,) or (n_t, n_x) or (n_y, n_t, n_x) array_like
- property dowhy
获取一个
DoWhyWrapper
实例,以启用来自 dowhy 包的其他功能(例如,因果图、反驳检验等)。- 返回
DoWhyWrapper –
DoWhyWrapper
的实例- 返回类型
实例
- property featurizer_
获取拟合好的特征化器。
- 返回
featurizer – 已拟合的特征器实例,用于在最终 CATE 模型训练中预处理 X。仅在 featurizer 不为 None 且 X 不为 None 时可用。
- 返回类型
object of type(featurizer)
- property intercept_
常数边际处理效应线性模型的截距。
- 返回
intercept – 其中 n_t 是处理的数量,n_y 是结果的数量。如果原始输入是向量而不是二维数组,则省略维度。对于二元处理,也省略 n_t 维度。
- 返回类型
float 或 (n_y,) 或 (n_y, n_t) array_like
- property model_cate
获取拟合好的最终 CATE 模型。
- 返回
model_cate – model_final 对象的实例,在调用 fit 后拟合,对应于常数边际 CATE 模型。
- 返回类型
object of type(model_final)
- property models_prel_model_effect
获取拟合好的初步 CATE 估计器。
- 返回
prel_model_effect – prel_model_effect 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(prel_model_effect)
- property models_t_xw
获取 \(\E[T | X]\) 的拟合模型。
- 返回
models_t_xw – model_t_xw 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(model_t_xw)
- property models_t_xwz
获取 \(\E[Z | X]\) 的拟合模型。
- 返回
models_z_xw – model_z_xw 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(model_z_xw)
- property models_tz_xw
获取 \(\E[T*Z | X]\) 的拟合模型。
- 返回
models_tz_xw – model_tz_xw 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(model_tz_xw)
- property models_y_xw
获取 \(\E[Y | X]\) 的拟合模型。
- 返回
models_y_xw – model_y_xw 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(model_y_xw)
- property models_z_xw
获取 \(\E[Z | X]\) 的拟合模型。
- 返回
models_z_xw – model_z_xw 对象的嵌套列表实例。子列表数量等于蒙特卡洛迭代次数,子列表中的每个元素对应一个交叉拟合折叠,并且是为该训练折叠拟合的模型实例。
- 返回类型
nested list of objects of type(model_z_xw)
- property nuisance_scores_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。样本顺序不保证与输入顺序相同。