因果效应的近似边界
许多的估计器模型需要通常无法测试的无混淆条件。一个适用的方法是,在深入具体的估计之前,构建我们的因果效应的上下界。
YLearn中有四个不同的界。我们在下面简单介绍它们。细节请参考 [Neal2020] 。
类结构
- class ylearn.estimator_model.approximation_bound.ApproxBound(y_model, x_prob=None, x_model=None, random_state=2022, is_discrete_treatment=True, categories='auto')
一个用于估计因果效应上下界的模型。
- 参数:
y_model (estimator, optional) – 任何合理的y_model应该实现fit()和predict()方法。
x_prob (ndarray of shape (c, ), optional, default=None) – 分配给x的对应值的概率数组,其中c是不同治疗类的数量。数组中所有元素都是 正数且和为1。比如,x_prob = array([0.5, 0.5])意味着 x = 0 和 x = 1 的概率为0.5。如果你使用多个治疗,请把这一项设置为None。
x_model (estimator, optional, default=None) – 用于预测治疗概率的模型。任何合理的x_model应该实现fit()和predict_proba()方法。
random_state (int, optional, default=2022) –
is_discrete_treatment (bool, optional, default=True) – True,如果治疗是离散的。
categories (str, optional, default='auto') –
- fit(data, outcome, treatment, covariate=None, is_discrete_covariate=False, **kwargs)
拟合 x_model 和 y_model.
- 参数:
data (pandas.DataFrame) – 训练数据。
outcome (list of str, optional) – 结果的名字。
treatment (list of str, optional) – 治疗的名字。
covariate (list of str, optional, default=None) – 协变量的名字。
is_discrete_covariate (bool, optional, default=False) –
- 返回:
ApproxBound的拟合的实例。
- 返回类型:
ApproxBound的实例。
- 抛出:
ValueError – 当治疗不是离散的,Raise error。
- estimate(data=None, treat=None, control=None, y_upper=None, y_lower=None, assump=None)
估计治疗对结果的因果效应的近似界。
- 参数:
data (pandas.DataFrame, optional, default=None) – 测试数据。如果为None,模型将会使用训练数据。
treat (ndarray of str, optional, default=None) – 治疗组的值。比如,当有多个离散的治疗时,array([‘run’, ‘read’])意味着第一个治疗 的治疗值为 ‘run’,第二个治疗是 ‘read’。
control (ndarray of str, optional, default=None) – 控制组的值。
y_upper (float, defaults=None) – 结果的上界。
y_lower (float, defaults=None) – 结果的下界。
assump (str, optional, default='no-assump') –
返回界的选项。应该是其中之一
no-assump: 计算无假设界,其结果总是包含0。
non-negative: 治疗总是正的。
non-positive: 治疗总是负的。
optimal: 如果它的效果是正的就采取治疗。
- 返回:
第一个元素是下界,而第二个元素是上界。注意如果提供了协变量,所有的元素都是表明对应例子的上下界的维度为(n, )的ndarrays,其中n是例子的数量。
- 返回类型:
tuple
- 抛出:
Exception – 如果模型没有拟合或者
assump
给的不正确,Raise Exception。
- comp_transormer(x, categories='auto')
把离散的治疗正确的转变为独热向量。
- 参数:
x (numpy.ndarray, shape (n, x_d)) – 一个包含治疗变量信息的数组。
categories (str or list, optional, default='auto') –
- 返回:
转变后的独热变量。
- 返回类型:
numpy.ndarray