因果效应的近似边界

许多的估计器模型需要通常无法测试的无混淆条件。一个适用的方法是,在深入具体的估计之前,构建我们的因果效应的上下界。

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') –

    返回界的选项。应该是其中之一

    1. no-assump: 计算无假设界,其结果总是包含0。

    2. non-negative: 治疗总是正的。

    3. non-positive: 治疗总是负的。

    4. 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