目录
不良控制 - 选择偏差
糟糕的 COP
关键思想
不良控制 - 选择偏差
让我们回到债务催收电子邮件的案例。 请记住,电子邮件是随机分配给客户的。 我们已经解释了什么是 信用额度
和 风险分
。 现在,让我们看看剩下的变量。 打开
是客户是否打开电子邮件的虚拟变量。 如果客户在收到电子邮件后联系收款部门协商他们的债务,支付协议
是另一个虚拟变量。 您认为以下哪个模型更合适? 第一个是带有处理变量加上 信用额度
和 风险分
的模型; 第二个添加了 打开
和 支付协议
虚拟变量。
email_1 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()
email_1.summary().tables[1]
email_2 = smf.ols('payments ~ email + credit_limit + risk_score + opened + agreement', data=data).fit()
email_2.summary().tables[1]
虽然第一个模型发现电子邮件的统计显着结果,但第二个模型没有。但也许第二个是正确的模型并且对电子邮件没有影响。毕竟,这个模型控制的因素更多,所以它应该更健壮吧?现在您可能知道情况并非如此。剩下的就是弄清楚是什么。
我们知道我们必须添加混淆变量。导致治疗和结果的变量。我们也知道添加能够很好地预测结果的控制变量是一个好主意。这是非必需的,但很值得做的事。我们也知道添加仅预测治疗的控制变量是一个坏主意。同样,这不是致命的问题,但最好避免。那么打开
和支付协议
是怎样的控件呢?事实证明,它们都不是上述情况。
如果你仔细想想,打开
和支付协议
肯定与电子邮件相关。毕竟,如果您没有收到电子邮件,您将无法打开它,而且我们还说过,该协议仅考虑在电子邮件发送后发生的重新谈判。但是他们不会产生电子邮件!相反,它们是由它引起的!
每当我需要了解我正在处理的变量类型时,我总是喜欢考虑它们的因果图。让我们在这里做这些:
g = gr.Digraph()
g.edge("电子邮件", "支付")
g.edge("电子邮件", "打开")
g.edge("电子邮件", "支付协议")
g.edge("打开", "支付")
g.edge("打开", "支付协议")
g.edge("支付协议", "支付")
g.edge("信用额度", "支付")
g.edge("信用额度", "打开")
g.edge("信用额度", "支付协议")
g.edge("风险分", "支付")
g.edge("风险分", "打开")
g.edge("风险分", "支付协议")
g
我们知道没有什么会导致电子邮件,因为它是随机设计的。我们知道(或者至少我们有充分的理由相信)信用额度和风险会导致付款。我们还认为电子邮件会导致付款。至于打开
,我们认为它确实引起了付款。直觉上,打开催收电子邮件的人更愿意谈判和偿还债务。我们还认为,打开
会导致达成协议,其原因与导致付款的原因相同。此外,我们知道“opened”是由电子邮件引起的,我们有理由相信不同风险和信用额度的人对电子邮件的打开率不同,因此信用额度和风险也会导致打开。至于协议,我们也认为是打开
造成的。如果我们考虑支付响应变量,我们可以认为是漏斗的结果:
电子邮件−>打开−>协议−>付款电子邮件−>打开−>协议−>付款
我们也认为不同程度的风险和线路有不同的达成一致的倾向,所以我们将它们标记为也引起一致。至于电子邮件和协议,我们可以说有些人只是阅读了电子邮件的主题,这使他们更有可能达成协议。关键是电子邮件也可以在不通过 打开
的情况下达成一致。
我们在这张图中注意到,打开和协议都在从电子邮件到付款的因果路径中。所以,如果我们用回归来控制它们,我们会说“这是电子邮件的效果,同时保持打开
和支付协议
不变”。然而,两者都是电子邮件因果效应的一部分,所以我们不想固定它们。相反,我们可以争辩说电子邮件增加付款正是因为它提高了协议率。如果我们修复了这些变量,我们就会从电子邮件变量中消除一些真正的影响。
有了潜在的结果符号,我们可以说,由于随机化。然而,即使是随机化,当我们控制一致性时,治疗和控制也不再具有可比性。事实上,通过一些直观的思考,我们甚至可以猜测它们的不同之处:
第一个等式明确表明,我们认为没有电子邮件和协议的人比有电子邮件和没有协议的人更好。那是因为,如果治疗有积极的效果,那些没有达成协议即使在收到电子邮件之后可能比那些也没有达成协议但也没有达成协议的人在付款方面更糟糕没有得到电子邮件的额外奖励。至于第二个等式,那些即使没有接受治疗也同意的人可能比那些同意但有电子邮件额外激励的人要好。
当您第一次阅读它时(这是给我的),这可能会非常令人困惑,但请确保您理解它。如有必要,请再次阅读。然后,可以对打开的变量进行类似的推理。尝试自己制作。
这种偏见是如此普遍,它有自己的名字。混杂是由于无法控制一个共同原因而产生的偏差,选择偏差是指我们控制一个共同的结果或从原因到结果的路径之间的变量。 根据经验,始终包括混杂因素和可以很好地预测模型中 Y 的变量。始终排除仅 T、治疗和结果之间的中介或治疗和结果的共同影响的良好预测变量的变量。
选择偏差是如此普遍,以至于即使是随机化也无法解决它。更好的是,它经常被不明智的人引入,即使是在随机数据中!发现和避免选择偏差需要更多的练习而不是技巧。通常,它们出现在一些所谓的聪明想法之下,使其更难被发现。以下是我遇到的一些选择偏向的例子:
1. 在尝试估计收款策略对付款的影响时,添加用于支付全部债务的虚拟变量。 2. 在尝试估计教育对收入的影响时控制白领和蓝领工作 3. 估计利率对贷款久期影响时的转换控制 4. 在估计孩子对婚外情的影响时控制婚姻幸福 5. 将支付建模 E[Payments] 分解为一个预测是否会发生支付的二元模型和另一个预测会发生多少支付的模型:E[Payments|Payments>0]*P(Payments>0)
所有这些想法值得注意的是它们听起来多么合理。 选择偏差常常如此。 让这成为一个警告。 事实上,我自己也曾多次掉入上面的陷阱,我才知道它们有多糟糕。 特别是最后一个,值得进一步解释,因为它看起来很聪明,让很多数据科学家措手不及。 它是如此普遍以至于它有自己的名字:The Bad COP!
糟糕的 COP
情况是这样的。 您有一个想要预测的连续变量,但其分布在零时被过度表示。 例如,如果您想对消费者支出进行建模,您将得到类似伽马分布的东西,但有很多零。
当数据科学家看到这一点时,他脑海中浮现的第一个想法是将建模分解为 2 个步骤。首先是参与度,即Y>0的概率。在我们的支出示例中,这将建模客户是否决定支出。第二部分为那些决定参与的人建模 Y。它是正数条件效应。在我们的案例中,这将是客户在决定要花费任何东西后花费的金额。如果我们想估计处理 T 对支出的影响,它看起来像这样:
参与模型没有任何问题P(Yi>0|Ti)。事实上,如果 T 是随机分配的,它将捕获由于处理而增加的支出概率。另外,上面的分解没有任何问题。根据总概率定律,这在数学上是正确的。
问题在于估算 COP 部分。 即使在随机分配下也会有偏差。在直观的层面上,认为某些单位只是因为没有得到处理而为零并不疯狂。处理会导致他们不为零。另一方面,有些单位从不为零。治疗可能会增加他们的结果,但即使没有它,他们也不会为零。现在,关键是要了解这两种类型的单位没有可比性。与那些没有接受治疗的零相比,那些从不为零的人具有较高的 。事实上,对于后者,。
知道这一点,如果我们删除零,我们将在处理组和对照组上保留从不为零。但是我们将从控制中删除那些通过处理从零变为非零的。这将使处理和控制不再具有可比性,因为控制将只包含那些从不为零且具有更高 的单元,而处理将包含两种类型的单位。
既然我们对问题有了直观的认识,那我们就从数学的角度来检查一下。来看一下,我们来分解一下治疗效果。在随机分配下,它等于均值差
最后一个等式来自加减 并重新排列项。这意味着平均值的差异由两部分组成:首先,它是结果 y 为正的概率差异。这被称为参与效应,因为它衡量客户参与消费的可能性的增加。其次,这是以参与为条件的结果的差异,即 COP 效应。到现在为止还挺好。这没有任何问题。这是一个数学真理。当我们尝试分别估计每个部分时,问题就来了
如果我们进一步分析 COP 效应,这将变得更加明显。
在我们加减 之后,第二个等式出现。当我们分解 COP 效应时,我们首先得到对参与者亚群的因果效应。在我们的示例中,这将是对决定花钱的人的因果影响。其次,我们得到一个偏差项,它是那些在分配到治疗时决定参与的人的 差异 (和那些即使没有治疗也参与的人和那些即使没有治疗也参与的人。在我们的例子中,这种偏差可能是负的,因为那些在分配到治疗时花费的人,如果他们没有接受治疗,可能会比那些即使没有接受治疗的人花费更少 。
现在,我知道 COP 偏差一开始是非常违反直觉的,所以我认为值得通过一个直观的例子。假设我们想估计营销活动如何增加人们在我们产品上的花费。这个营销活动是随机的,所以我们不需要担心混淆。在这个例子中,我们可以将客户分成两个部分。首先,有些人只有在看到营销活动时才会购买我们的产品。让我们称这些客户为节俭的客户。除非我们给他们额外的推动,否则他们不会花钱。还有一些客户即使没有活动也会花钱。该活动使他们花费更多,但无论如何他们已经花费了。让我们称他们为富有的客户。在图中,我用浅色和虚线显示了反事实。
为了估计活动的 ATE,因为我们有随机化,我们需要做的就是比较处理过的和未处理过的。但是,假设我们使用 COP 公式,其中我们将估计分解为两个模型,一个估计 的参与模型和估计 。这将从分析中删除所有未花费的人。当我们这样做时,治疗组和对照组不再具有可比性。正如我们所看到的,未经处理的客户现在只包括即使没有活动也会消费的客户群。还要注意,我们甚至可以在这里知道偏差的方向。它将是 。这显然是负面的,因为富人比节俭的顾客花费更多。因此,一旦我们只过滤了参与者群体,我们对 ATE 的估计就会有偏差,即使最初没有由于随机化而产生的偏差。我真诚地希望这能说服您像瘟疫一样避免 COP。我看到太多数据科学家在做这种单独的估算,却没有意识到它带来的问题。
为了结束选择偏差,我们需要始终提醒自己永远不要控制介于治疗和结果之间的变量,或者是结果和治疗的共同影响。 在图形语言中,以下是不良控制的样子:
g = gr.Digraph()
g.edge("T", "X_1"), g.node("T", color="gold"), g.edge("X_1", "Y"), g.node("X_1", color="red")
g.edge("T", "X_2"), g.edge("Y", "X_2"), g.node("X_2", color="red")
g
关键思想
在本节中,我们查看了不是混杂因素的变量,以及我们是否应该将它们添加到我们的模型中以进行因果识别。 我们已经看到,即使不预测 T(不是混杂因素),也应该将作为结果 y 的良好预测变量的变量添加到模型中。 这是因为预测 Y 会降低其方差,并使我们在估计因果效应时更有可能看到具有统计意义的结果。 接下来,我们已经看到添加预测治疗而不是结果的变量是一个坏主意。 这些变量减少了治疗的可变性,使我们更难找到因果关系。 最后,我们研究了选择偏差。 当我们控制从治疗到结果的因果路径中的变量或作为治疗和结果的共同影响的变量时,就会出现偏差。