文章目录

  • 1 理论介绍
    • 1.1 工具变量的三个条件
    • 1.2 工具变量的效应估计
    • 1.3 工具变量第四类条件:同质性
    • 1.4 工具变量第四类条件:单调性
    • 1.5 工具变量三个条件的剖析
    • 1.6 一些对和不对的解决方法
    • 1.7 工具变量与其他方法比较
    • 1.8 其他工具变量的解读
      • 1.8.1 因果推断中:内生性的一个有意思的例子
      • 1.8.2 与代理变量(proxy variable)的对比
      • 1.8.3 中介变量/mediation
      • 1.8.4 连玉君老师的简易解读
  • 2 econML实现 DeepIV
    • 2.1 示例
    • 2.2 解释deepIvEst .predict()
  • 3 因果推断在BIGO:工具变量法

同系列可参考:
因果推断笔记——因果图建模之微软开源的dowhy(一)
因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二)
因果推断笔记——python 倾向性匹配PSM实现示例(三)
因果推断笔记——双重差分理论、假设、实践(四)
因果推断笔记——因果图建模之微软开源的EconML(五)
因果推断笔记——工具变量、内生性以及DeepIV(六)


1 理论介绍

参考:

  • 【统计】Instrumental Variables
  • 因果推断:效应估计的常用方法及工具变量讨论

exogenous - 外生性
endogenous - 内生性

工具变量 (Instrumental variables) 的在效应估计的作用到底是什么?

参考某知乎答主的对其在计量ols估计中的回答:
“过滤器,把X 中和 随机扰动项 相关的部分过滤掉,只剩下正交的部分,这样OLS就又重振雄风了。工具变量就是这个过滤器。”

因为工具变量对假设的要求非常严格,所以使用工具变量的时候,我们需要对它的种种限制保持警惕(虽然这一提醒对所有因果推断方法都适用)。

1.1 工具变量的三个条件

下图3.1 描绘了一项双盲随机试验, Z 是被试的分组情况(1:治疗组,0:安慰剂组), A 是被试的实际接受治疗情况(1:实际上接受治疗,0:实际上未接受治疗),Y 是结局,U 是所有能影响结局和被试配合程度的未测变量。

如果我们想一致地估计 A对Y 的因果效应均值(ATE),那不管使用什么方法,我们都需要测量U(可以把U理解为控制变量), 并在我们的模型中调整U,由于U是未测的,所以这些方法只能得到有偏的估计。 但工具变量方法却并不一样,即使我们不能测量并调整U ,我们依然可以用这一方法去估计 A 对 Y 的效应均值。


那么对于工具变量 Z ,它需要满足以下三个条件:

  • (1) Z 和 A 相关;
  • (2) Z 仅通过 A 影响Y,而不能直接影响Y;
  • (3) Z 和 Y 没有共同诱因。

对于图上这个双盲随机试验中, Z 就是一个工具变量。 我们逐个来看三个条件:Z

  • (1) 被分配到治疗组的被试更可能接受治疗,满足Z 和 A 相关,
  • (2) 这是一个双盲设计,满足Z 仅通过 A 影响Y,而不能直接影响Y
  • (3)治疗组的分配是随机的,不受任何其他因素影响,满足Z 和 Y 没有共同诱因。

并且,在图 2.1 中,工具变量 Z 对实际治疗 A 有因果效应,我们将 Z 称作因果性工具变量。

在观察性研究中,我们不能证明我们认为的工具变量 Z 是否是真正的工具变量,所以我们将 Z 称为候选工具变量。
我们能做的,就是利用各专业知识说明候选变量 Z 为什么能满足条件 (2)和(3) 。
这就如同前几章我们用专业知识为我们的模型假设辩护一样。 —先验知识/业务经验的重要性。

1.2 工具变量的效应估计

如果 Z 满足工具变量的三个条件(以及一个额外条件,我们将在下一小节讨论),并且是一个二分变量,那么在加法尺度上,工具变量的效应估计就可以表示为:

为了直观地理解这一表达式,我们可以再思考一下上一小节中的随机试验。这个表达式中的:

  • 等式左边:是A对Y的效应
  • 等式右边-分子:是 Z 对 Y 的效应,也被称为治疗意向效应,Z 是工具变量,Y是“果”
  • 等式右边-分母:是 Z 对 A 的效应,表示被试的配合程度,Z是工具变量,A是“因”

如果被试完全配合研究人员,那么分母就等于1, A 对 Y 的效应就等于 Z 对 Y 的效应(完美的随机实验)。如果配合程度不佳,那么分母就会趋近于 0(小于1),从而有 A 对Y 的效应大于 Z 对 Y 的效应。
不配合的被试越多,这两个效应之间的差距也就越大。 这一效应估计不需要调整任何混杂,而是通过给治疗意向效应乘以一个膨胀系数得到。
被试的配合程度越低,也即 Z -A 之间的关系越接近于 0,那膨胀系数也就越大,在观察性研究中同理。

所以,使用工具变量时,我们需要对这一表达式分子和分母中的效应进行估计。在我们戒烟的例子中,工具变量 Z 是一个二分变量(1:参与人员所在州的香烟均价高于 1.5 美元,0:其他)。

分子的估计值是 :

而分母的估计值为 :

因而可以得到治疗效应的估计值是 0.153 / 0.0627 = 2.4 kg

在工具变量的三个条件以及第四个附加条件之下,2.4kg就是戒烟对增重的因果效应均值 (这一方法也被称为 Wald 估计法) 。

除了Wald估计法以外,我们也可以用双阶最小二乘法拟合两个(饱和)线性模型从而估计表达式中的分 子和分母(需要作出很强的参数假设),也可以使用结构模型(避开强假设)、然后通过G-估算 计算结构模型中的某些参数。在工具变量中到底是使用二阶最小二乘法还是使用结构模型, 就类似于在没有工具变量的时候到底是使用结局回归还是结构嵌入模型一样,各有利弊。

不过无论如何,本小节介绍的表达式如果要被认为是治疗 A 对结局 Y 的因果效应均值,那我们需要工具变量的第四个条件成立。接下来,我们将讨论第四个条件。

1.3 工具变量第四类条件:同质性

本小节中工具变量的三个条件1-3不足以保证工具变量的效应估计,就是治疗 A 对 Y 的因果效应。除此之外,我们需要第四个条件:(4)效应的同质性。本小节,我们将讨论 (4)的不同形式以及它在学术历史中的发展变化。

  • 完全同质:最极端也是最古老的同质性被表述为:治疗 A 对结局 Y 的效应对每个人来说都是相等且不变的。 例如,如果戒烟让每个人都增加同样的体重(比如 2.4kg),那么就符合完全同质,因果效应就是2.4kg这一常数,然而这在现实中几乎是不可能的。在戒烟的例子中,戒烟会让有的人增重许多、让有的人增重一 点、甚至让有的人体重变轻。

  • 加法尺度上的同质性:在1)不够实际的情况下,同质性后来被放宽为第二种形式,对二分变量 Z ,治疗组或非治疗组中 A 对 Y 的效应在 Z 的每一个分层中相等,即如下公式,不过这是加法尺度上的同质性,即。

  • 在未测混杂因素中A对Y 的因果效应同质:A对Y 的因果效应在未测混杂U 的每一分层中都相等,如下公式,然而这个假设依然是不可验证的,且不太可信,因为未测混杂很可能就是效应修饰因子。比如戒烟对增重的影响很可能就因吸烟频率的不同而不同,同时吸烟频率自身也是一个混杂因素,即。

  • 另一种形式的同质性,在加法尺度上Z-A的相关性,在未测混杂因素U 的不同分层中不变。

不过,因为同质性在许多场合中都显得不合理,所以许多研究者对能否使用工具变量得到有效的效应估计抱持怀疑态度,不过我们还有其他两种方法能让我们避开同质性条件。 其中一种方法是在工具变量的模型中包含研究起始时的变量。如此一来,我们就能放宽双阶最小二乘法中的参数假设,也就能更放心地使用工具变量。在模型中包含初始变量会限制治疗在 协变量各分层中的变化情况,同时允许治疗组中的因果效应随 Z 而变化 (也就是加入初始变量,使两组“处理后”的用户符合同质性条件) 。

另一种方法是放弃同质性,使用另一个条件(4)。
新的条件(4)虽然不足以让我们估计人群中的因果效应均值,但将会让我们工具变量的效应估计有因果性意义。我们将在下一小节讨论 另一种条件4。

1.4 工具变量第四类条件:单调性

让我们再回到最开始的双盲随机试验,其中有表示治疗分组的变量 Z 、表示实际治疗情况的 变量A、以及表示结局的变量Y。对于试验中的每一名被试,我们将反事实变量A(Z=1) 定义为这名 被试被分配到治疗组( z =1)时他的实际治疗情况,A(Z=0) 同理。 如果我们知道每个被试的A(Z=1) 和A(Z=0) ,那我们就可以将所有被试分为互不重叠的四组:

都会接受治疗,即被试不管有没有被分配到治疗组,都接受治疗,即

都不会接受治疗,即被试不管有没有被分配到治疗组,都不接受治疗,即

配合者,即被试实际治疗情况总会和他们的分组相同,即

对抗者。即被试实际治疗情况总会和他们的分组相反,即
如果不存在对抗者,那单调性成立,这是因为工具变量 Z 的取值变大,要 么A 不变、要么也导致 A 的取值变大 (配合者)。只有对对抗者来说, Z 取值变大会导致 A 取值变小。或者换句话说,如果对所有人有 ,那么单调性成立。

现在我们将上一小节中的同质性替换为单调性,让单调性成为我们的第四个条件。那么工具变量的效应估计就不再是

在单调性下,工具变量的效应估计等于配合者中的因果效应均值,也即

简单而言,工具变量的效应估计的分子,也即 Z 对 Y 的因果效应,就等于本小节四个不同分组中 Z 的效应的加权平均。
然而,在都会接受治疗与都不会接受治疗这两组中, Z 对 Y 的效应为0,这是因为 Z 对 Y 的因果效应需要通过 A ,而 A 的取值 在这两组中是固定的。
同时,在单调性条件下,不存在对抗者。因此,工具变量的效应估计的分子,就是配合者中 Z 对 Y 的因果效应——也就是配合者中 A 对 Y 的因果效应——再乘以配合者所占的比例。
而配合者所占的比例,就等价于工具变量的效应估计中的分母。

(配合者中的因果效应均值是一个子群体中的因果效应,可能与整个人群的因果效应不尽相同。)

在观察性研究中,如果不存在对抗者,我们就可以通过工具变量估计配合者中的治疗效应。 然而严格而言,在观察性研究中不存在配合者或对抗者,这是因为观察性研究中没有治疗分配, 也就不存在配合或不配合。在我们戒烟的例子中,配合者指的是住在香烟价格高的州就戒烟、而 住在香烟价格低的州就不戒烟的人。与之相反,对抗者指的是住在香烟价格高的州就不戒烟、而 住在香烟价格低的州就戒烟的人。如果不存在对抗者且因果性工具变量是二分变量,那么 2.4kg 就是配合者中的效应估计。

在 1990 年代,用单调性替代同质性被视为工具变量方法的救星。主要是因为同质性在大多数情形中并不可信,而单调性则更可信。不过,单调性假设下的工具变量也有很多缺点:

  • 单调性假设下的工具变量不能估计整个人群的因果效应,而只能估计配合者中的因果效应(类似CATE,Conditional Average Treatment Effect)。
  • 其次,在观察性研究中,单调性假设也并非总是成立。
  • 最后,将人群根据配合程度分成四组这一做法可能并不合理(在许多现实情景中,配合者是劣定的)。

(Deaton等在2010年的paper中这样评价配合者中的效应:“这偏离了我们的初衷。原本光线很强,能照耀各个角落。但现在我们控制了光线能照射的地方,然后宣称这就是我们一直以来希望看到的东西。”)

总而言之,如果我们只关心配合者中的因果效应,那在只涉及两个分组的双盲随机试验中, 单调性就是一个合适的假设。然而,当情形更加复杂或涉及观察性研究,即使我们的工具变量是真正的因果性工具变量,我们也需要倍加小心。

1.5 工具变量三个条件的剖析

前两个小节我们讨论了同质性或单调性作为工具变量第四个条件的优劣。我们的讨论都假设了Z 是一个有效的工具变量。然而在观察性研究中,Z 可能并不满足工具变量三个条件中的 (2)和(3),因而就不是一个有效的工具变量;也可能 Z 仅仅勉强满足(1),那么Z 就只是一个弱工具变量。在这两种情况中,就算条件(4)完美成立,使用工具变量也会导致很强的偏移。现在,我们再详细讨论一下每个条件:

  • 条件(1):Z 和 A 相关。这一条件可以实证地验证。研究者在使用工具变量之前,需要先验证 Z 和 A 是否相关。然而,就像我们戒烟例子中一样,如果 Z 和 A 之间的相关性很弱,那就是一个弱工具变量,这可能带来三个严重的问题:

  • 第一,弱工具变量会导致 95%置信区间变宽。

  • 第二,弱工具变量会放大因条件(2)和(3) 不成立带来的偏移。 Z 和A 的弱相关性会使得工具变量效应估计中的分母变小,而条件(2)和 (3)影响的是分子,如果分子有偏移,那么这一偏移将会被放大。在我们戒烟的例子中,任何分子中的偏移都会被乘以 15.9(1/0.0627)。

  • 第三,即使样本够大,弱工具变量也会带来偏移,并导致效应估计方差的低估。也即,效应估计是错误的,且置信区间太窄了。

  • 条件(2):Z 仅通过A 影响Y ,而不能直接影响Y 。在因果图中,如果有箭头从 Z 指向 Y ,那就违反了条件(2),就如图 3.4.1 所示。这一箭头不经过治疗 A ,因而将会直接作用于工具变量效应估计的分子,而这一额外部分也会被视为 A 的效应的一部分,从而被分母扩大。在图3.4.2中,条件(2)对原变量 A 成立,但对于A并不成立,这是因为 路径 Z → A → Y 所表示的 Z 的效应并没有经过 A,而我们估计的却是 A的效应。在实践中,为了简便,很多时候我们只能用近似的 A*(如上文提到的香烟价格是否>=1.5)替代真实的 A,这种近似替代是工具变量的一个主要问题。

    条件(3):Z 和 Y 没有共同诱因。这一条件同样无法验证。图3.4.3 描绘了 Z 和 Y 存在共同诱因的情形,其中U1不仅是Z和Y的共同诱因,也是 A 的诱因。在观察性研究中,Z 的混杂总是存在(对于其他研究者不能控制的变量也同理)。而混杂会影响效应估计里面的分子,同时也会被视为 A 的效应的一部分,从而被分母扩大。

1.6 一些对和不对的解决方法

  • 部分解决办法:

利用在分层中假设3成立的方法进行验证:某些时候,条件(3)和其他条件在某些变量的分层中更可能成立。相比于直接假设 Z 和 Y 之 间没有混杂,加上“在变量V 的分层中”这一限制可能会更好一些,也即假设“在某些变量V 的 分层中, Z 和Y 之间没有混杂”。从而我们就可以在V 的分层中利用工具变量估计因果效应,然后再假设治疗的因果效应在整个人群(同质性)或者配合者(单调性)中是不变的,进而汇总这些分层中的效应估计。

  • 不对的方法:

    • 用已测混杂在不同分层的分布“预测”在未测混杂中的分布: 研究者也经常检验工具变量Z 的不同分层中已测混杂的分布,从而为条件(3)提供支撑。 这一做法是基于这样一种想法:如果已测的变量已经分布均衡了,那未测变量同样分布均衡的可能性会高一些。然而,这一想法可能会造成致命的错误,这是因为即使再小的不均衡,经过(前文讨论的)放大之后,也会造成很大的偏移。

    • 多个工具变量可能加剧效应估计的偏移:有些研究者会同时使用多个工具变量,从而缓和只有一个工具变量的不足。然而使用多个工具变量会加剧我们上述讨论的种种问题。工具变量的数目越多,它们中的某些也就越可能违反工 具变量的三个基本条件。

1.7 工具变量与其他方法比较

工具变量和我们前面讨论的(需要识别出所有混杂因子的)方法至少在三个方面不同:

  • 就算数据是无限的,工具变量也需要模型假设,而此时逆概率加权与标准化不需要。 如果我们有人群中每个人的治疗、结局、以及混杂数据,我们就能用非参数化的逆概率加权和标准化两种方法估计治疗的因果效应均值。而在工具变量中,我们仍然需要模型去估计治疗的因果效应。在数学上,同质性等价于将结构模型中的所有乘积项参数设定为 0,也就是说,工具变量方法不存非参数的形式(工具变量不是唯一没有非参数形式的方法,断点回归分析等方法也没有非参数形式) 。

  • 稍微违反条件(1)至(4)会造成不可预测的极大偏移。工具变量的一个理论基础是效应估计中的分母会扩大分子中的效应。因此,当这些条件不成立的时候,或者是一个弱工具变量的时候,就可能导致不可预测的极大偏移。工具变量的效应估计对假设条件的变化非常敏感,这一特质使得工具变量对于圈外人来说是一种非常危险的方法,同时也再一次强调了敏感性分析的重要性(Baiocchi等在他们2014年的论文中讨论了量化工具变量敏感性的方法) 。

  • 能使用工具变量的理想情形相较于其他方法来说更不常见。我们讨论过,工具变量主要用于有大量未测混杂、有一个二分变量A 、以及有一个很强的因果性工具变量 Z 的情形之中,同时还需要同质性/或单调性成立。这些限制使得工具变量只能用于简单的因果推断情形当中,比如比较 A = 1 与 A = 0 的效应。

1.8 其他工具变量的解读

1.8.1 因果推断中:内生性的一个有意思的例子


考虑研究航空公司票价(prince,p)和销量(sales,y)的影响,即当其他条件不变时,如果增加票价,销量会如何变化;这是在研究一个 causal effect。

最好的方法就是随机化地做实验,比如随机对一些顾客,提高或者降低面向他们的票价;
但是这样的实验不仅会对航空公司造成实际的经济损失(损失了潜在的客户或者减少了盈利),而且还客户还因为不公平的对待而对航空公司不满。

因此,我们希望从历史数据里面来挖掘票价(P)和销量(Y)之间的因果关系:

  • Confounders:一个直接的方法就是把 Y 对 P 做回归,但是这样往往得出错误的结论。比如可能存在另外的因素,节假日(X),它不仅影响票价(P)也同时影响销量(Y),在节假日的时候航空公司定价高(P 大),同时人们出行需求也大,因此销量也高(Y 大);这是在历史数据里面做回归,得出的结论就会使 Y 和 P 成正相关,这显然是错误的。
  • Unobservable variables:有一种方法是把可以观察到的影响因素也放到回归方程里面,根据前面几个 post 的内容,如果能够把所有的因素都包含进来,那么也能够得出正确的结论。但是,有可能会有一些观察不到的作用因素(E),比如在某个地区召开某个会议,它会同时使得票价(P)和销量(Y)都变大。
  • Instrumental variable(IV):因此,最有效的办法就是找到一个 IV,使得它只影响票价(当然,它也可以通过 P 来影响 Y,但是不能直接影响 Y),而和其他因素(X、E)不相关。
    在这里,我们找到 『燃油价格』这个因素来做为 IV,它上升时,航空公司基于成本考虑会上调票价 ,但是该因素和其他因素(比如是否节假日、是否在某个地区有会议)无关。需要注意的是,IV 的选取基本上基于人为的先验知识。

1.8.2 与代理变量(proxy variable)的对比


第一项的要求应该两个是等价的,即额外选择的这个变量不能成为解释变量进入原来的方程中。最主要的区别在第二个要求上,proxy variable 要求找到的变量能够解释所有 q 和其他 解释变量的关联(即,q 剔除掉 z 的影响之后,r 和其他解释变量无关);而 instrumental variable 则希望找到一个和其他变量都没啥关系,但是只和 [公式] 有一点关联的变量。

论坛 (StackExchange)上说:instrumental variable 的目的是想找因果关系,减小 estimation error 产生的影响,对于它来说,XkXkXk 能观察到,但是可能有偏差,因此要找一个只影响XkXkXk的变量来抵消相应的估计误差;
proxy variable 是想想办法把原来的线性模型系数估计处理,其中的变量 q 观察不到,想要找一个和它接近的变量来替换它。

1个IV变量的估计:

用多个 Instrumental variable需要使用2SLS( two-stage least square):

1.8.3 中介变量/mediation

参考:
因果推理初探(6)——干预工具(下)

1.8.4 连玉君老师的简易解读

有哪些有趣的工具变量?

这是一种处理内生性问题的经典方法,或者说被滥用最严重的方法。这种方法相信大家都已经学过,就是找到一个变量和内生解释变量相关,但是和随机扰动项不相关。
在OLS的框架下同时有多个工具变量(IV),这些工具变量被称为two stage least squares (2SLS) estimator。具体的说,这种方法是找到影响内生变量的外生变量,连同其他已有的外生变量一起回归,得到内生变量的估计值,以此作为IV,放到原来的回归方程中进行回归。

工具变量法最大的问题是满足研究条件的工具变量难以找到,而不合乎条件的工具变量只能带来更严重的估计问题。

这里借用连玉君 的讲义

王小二参加研究生复试的面试时,恰好认识其中一位参加面试的老师。假设面试分数 (Y) 由面试老师 (X) 决定,王小二可视为随机误差项u ,认识王小二的那位面试老师可视为内生的解释变量x1 ,如果让这位老师继续参加面试给王小二打分,那么面试分数就很可能偏高。

如何解决这个内生性问题呢?不妨再找另一个老师来代替这位跟王小二认识的老师,基本要求是:新找来的老师不能跟王小二认识,并且又跟被替换下的这位老师在专业背景方面有很高的相似度。这个新找来的老师就称为被替换下的老师的工具变量 (Instrumental Variable,简称 IV) 。接下来,让我们一起学习 IV 估计。

如果 “王小二面试” 时找来一个代替老师,那么这位新老师给的面试分数还是有一定的随机性,一个主要的原因是新找来的这位老师可能与被替换的那位老师之间的相关性不够强。为了控制面试得分偏差,我们可以多找几个老师。不妨再找一个老师,这两个老师就称为被替换下来的老师的两个工具变量。

2 econML实现 DeepIV

2.1 示例

DeepIV 可以看做把上述 2SLS 方法推广到非线性模型。
论文参考:Deep IV: A Flexible Approach for Counterfactual Prediction
DeepIV 结构可参考:【统计】Instrumental Variables

代码:DeepIV examples

Deep IV 需要设定的变量:

  • Covariates, 协变量,which we will denote with X
  • Instruments, 工具变量,which we will denote with Z
  • Treatments, 干预,which we will denote with T
  • Responses, 因变量,which we will denote with Y

主要要求是Z是一组有效的工具,且只能通过T,作用Y,不能直接作用Y。
Deep IV估计器会拟合两个模型:

  • treatment model(T|Z,X) 干预模型(工具变量Z -> 干预T):It estimates the distribution of the treatment T given Z and X, using a mixture density network.
  • response model (Y|T,X)响应模型(干预T -> 因变量Y): It estimates the dependence of the response Y on T and X.

代码:

from econml.iv.nnet import DeepIV
import keras
import numpy as np
import matplotlib.pyplot as plt%matplotlib inlinen = 5000# Initialize exogenous variables; normal errors, uniformly distributed covariates and instruments
e = np.random.normal(size=(n,))
x = np.random.uniform(low=0.0, high=10.0, size=(n,))
z = np.random.uniform(low=0.0, high=10.0, size=(n,))# Initialize treatment variable
t = np.sqrt((x+2) * z) + e# Outcome equation
y = t*t / 10 - x*t / 10 + e# Show the marginal distribution of t
plt.hist(t)
plt.xlabel("t")
plt.show()plt.scatter(z[x < 1], t[x < 1], label='low X')
plt.scatter(z[(x > 4.5) * (x < 5.5)], t[(x > 4.5) * (x < 5.5)], label='moderate X')
plt.scatter(z[x > 9], t[x > 9], label='high X')
plt.legend()
plt.xlabel("z")
plt.ylabel("t")
plt.show()# 构建模型
treatment_model = keras.Sequential([keras.layers.Dense(128, activation='relu', input_shape=(2,)),keras.layers.Dropout(0.17),keras.layers.Dense(64, activation='relu'),keras.layers.Dropout(0.17),keras.layers.Dense(32, activation='relu'),keras.layers.Dropout(0.17)])response_model = keras.Sequential([keras.layers.Dense(128, activation='relu', input_shape=(2,)),keras.layers.Dropout(0.17),keras.layers.Dense(64, activation='relu'),keras.layers.Dropout(0.17),keras.layers.Dense(32, activation='relu'),keras.layers.Dropout(0.17),keras.layers.Dense(1)])# deepIV模型初始化
keras_fit_options = { "epochs": 30,"validation_split": 0.1,"callbacks": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]}deepIvEst = DeepIV(n_components = 10, # number of gaussians in our mixture density networkm = lambda z, x : treatment_model(keras.layers.concatenate([z,x])), # treatment modelh = lambda t, x : response_model(keras.layers.concatenate([t,x])),  # response modeln_samples = 1, # number of samples to use to estimate the responseuse_upper_bound_loss = False, # whether to use an approximation to the true lossn_gradient_samples = 1, # number of samples to use in second estimate of the response (to make loss estimate unbiased)optimizer='adam', # Keras optimizer to use for training - see https://keras.io/optimizers/ first_stage_options = keras_fit_options, # options for training treatment modelsecond_stage_options = keras_fit_options) # options for training response model# 模型fit
deepIvEst.fit(Y=y,T=t,X=x,Z=z)

里面有一个问题就是,y的构成,

y = t*t / 10 - x*t / 10 + e

可以看到这里的e其实是一种误差项,为了不让模型学习到这么严格的规律。

来看一下预测:

n_test = 500
for i, x in enumerate([1,2,3,5,8,10]):t = np.linspace(0,10,num = 100)y_true = t*t / 10 - x*t/10y_pred = deepIvEst.predict(t, np.full_like(t, x))plt.plot(t, y_true, label='true y, x={0}'.format(x),color='C'+str(i))plt.plot(t, y_pred, label='pred y, x={0}'.format(x),color='C'+str(i),ls='--')
plt.xlabel('t')
plt.ylabel('y')
plt.legend()
plt.show()


你可以看到,尽管响应面随x变化,但我们的模型能够很好地拟合数据。
在低x的情况下,仪器的功率最小。
在这里,它适合一条直线而不是二次曲线,这表明正则化至少表现得很好。

2.2 解释deepIvEst .predict()


x1 = np.array([8.7035757])
t1 = np.array([10.50478964])
y1 = t1*t1 / 10 - x1*t1/10
z1 = 7.44929058
y0 = 3.46753476deepIvEst.predict(t1,x1),deepIvEst.effect(x1),deepIvEst.predict(t1, x1),y1,y0
>>> (array([1.8513519], dtype=float32),array([-0.3443213], dtype=float32),array([1.8513519], dtype=float32),array([1.89213735]),3.46753476)

我们来看这个例子,y1和y0都是实际值,差别,y0来自原数据集(y[0]),y0 = y1+ e(扰动项)
但是实际上,应该是y1才是合理的真实值

这里deepIvEst.predict就是预测值了,最终预测的值为1.85,y1为1.89 还是比较接近的
还有这里deepIvEst.effect(x1),代表在x1 = 8.7035757的情况下,y(t=1)-y(t=0)的CATE值

3 因果推断在BIGO:工具变量法

因果推断在BIGO:工具变量法

在之前的文章里,我们介绍了BIGO内部因果推断最主要的数学模型——潜在结果框架(Robin’s potential outcome framework或Rubin-Neyman causal model) [6]
以及因果推断最主要的工具——随机化实验(randomized experiments),比如对于新的推荐策略或者UED方案,通过BIGO现有的实验平台进行 A/B测试量化新的干预 (treatment) 对用户体验或营收的影响。
但在真实业务场景中,有时很难直接进行A/B Test或者A/B Test成本过高,这时随机化实验分析方法不再适用,需要诉诸其他分析方法,如观察性研究(observational studies)。在BIGO的业务中,类似场景主要是基于两方面的原因:

  1. BIGO旗下如短视频平台Likee和直播平台Bigo Live是典型的双边市场(two-sided markets)。
  2. 长尾效应: Bigo Live的营利模式主要来自于用户的直接付费,该营利模式下,营收类关键指标的长尾效应犹为显著。

量化用户在Running的道具消耗对用户在整体休闲类游戏道具消耗的影响的因果效应值。

在今天的文章里,我们以Likee短视频为例,介绍了今年诺奖获得者Joshua D. Angrist和Guido W. Imbens的主要工作之一:工具变量法 (instrumental variables),以及工具变量法最常用的算法工具:二阶最小二乘2SLS (two-stage least square)。我们也整理与介绍了BIGO应用工具变量法的案例:量化新引入项目对Bigo Live整体休闲类游戏平台生态与营收的影响。除此之外,我们也根据BIGO内部不同业务问题的场景与特点,应用如用户选择模型 (choice model) [5, 7],causalForecast [8], causalImpact [2] 等应用与解决在真实业务场景下不能通过随机化实验量化与评估的问题。
接下来,我们将介绍BIGO在PCIC因果推断与推荐比赛的解决方案,包括解决与优化短视频推荐中bias问题的一些尝试。

因果推断笔记——工具变量、内生性以及DeepIV(六)相关推荐

  1. 因果推断笔记——自整理因果推断理论解读(七)

    之前有整理过一篇:因果推断笔记-- 相关理论:Rubin Potential.Pearl.倾向性得分.与机器学习异同(二) 不过,那时候刚刚开始学,只能慢慢理解,所以这边通过一轮的学习再次整理一下手里 ...

  2. 因果推断笔记——python 倾向性匹配PSM实现示例(三)

    因果推断笔记-- 相关理论:Rubin Potential.Pearl.倾向性得分.与机器学习异同(二) 因果推断笔记--因果图建模之微软开源的dowhy(一) 文章目录 0 观测数据的估计方法 0. ...

  3. 因果推断笔记——数据科学领域因果推断案例集锦(九)

    文章目录 1 腾讯看点:启动重置问题 1.1 观测数据 . 实验数据的理论介绍 2.2 启动重置问题阐述:短期.长期.异质 2.3 短期影响的解决 2.4 长期影响构造准实验 2.5 异质性用户 1. ...

  4. 因果推断笔记——因果图建模之微软开源的EconML(五)

    文章目录 1 EconML介绍 1.1 EconML介绍 1.2 一些理论解答 1.3 常规CATE的估计器 1.4 IV工具变量 + CATE的估计器 1.5 动态处理效应的估计器 2 智能营销案例 ...

  5. 因果推断笔记——CV、机器人领域因果推断案例集锦(十)

    之前一篇是写在数据科学领域使用因果推断的案例,因果推断笔记--数据科学领域因果推断案例集锦(九) 主要应用的领域在:智能营销.一些机制干预的有效性.智能补贴等,那么可以看看在不常见领域的案例,拓宽一下 ...

  6. 因果推断笔记——因果图建模之Uber开源的CausalML(十二)

    它提供了一个标准框架,允许用户从实验或观察数据估计条件平均治疗效果(CATE)或个人治疗效果(ITE).本质上,它估计了干预T对具有观察到的特征X的用户结果Y的因果影响,而没有对模型形式有很强的假设. ...

  7. 因果推断笔记——DR :Doubly Robust学习笔记(二十)

    文章目录 0 观测数据的估计方法 0.1 Matching 0.2 Propensity Score Based Methods 0.2.1 PSM 0.2.2 IPW 0.2.3 Doubly Ro ...

  8. 因果推断笔记——双重差分理论、假设、实践(四)

    文章目录 1 双重差分 - difference-in-difference -DID 理论与假设 1.1 DID介绍 1.2 使用时需要满足的假设 2 DID + PSM 差异与联用 2.1 DID ...

  9. 因果推断笔记——uplift建模、meta元学习、Class Transformation Method(八)

    文章目录 1 uplift 模型介绍 -- 为个体计算ITE 1.1 模型方向 1.2 ITE的假设前提 2 uplift方法一:元学习方法(Meta-learning methods) 2.1 Co ...

最新文章

  1. 专访高磊:安卓APK安全加固的引领者
  2. MYSQL数据库——mysql的数据类型和运算符
  3. windows下使用Hibernate连接Mycat例子
  4. 【市场调研与分析】Intel发力移动安全领域——By Me at 20140613
  5. 开发人员:月薪过万与年薪百万之间的差距
  6. android input 点击事件失效,React Native:TextInput元素上的onContentSizeChange事件在Android上不起作用...
  7. TechWeb:转载合作须知!
  8. JavaScript中call,apply,bind方法的总结
  9. 记一次使用Openssl生成p12证书搭建https证书
  10. java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
  11. unreal4 分辨率设置
  12. 选修课:唐宋词鉴赏课堂笔记03
  13. AtCoder Grand Contest 021完整题解
  14. 对学校的希望和寄语_新学期对学校的寄语
  15. 股票模拟交易日志(一)
  16. 大学计算机类专业按成绩分,那个大学的计算机专业比较好
  17. 仿微信建群添加人员效果
  18. 学习笔记---Winform的东东忘了好些。。。
  19. 让那不如意,都随风而去
  20. 烽火HG6821M光猫开启telnet(202302)

热门文章

  1. 晨控CK-FR208-PN与西门子PLC工业Profinet协议通讯指南
  2. GraphMap:快速的三代序列比对算法
  3. 低代码amis学习笔记(表单)
  4. 杭电ACM 1089-1096
  5. 2013.10-2015.9 图书馆借阅书籍情况
  6. 【超用心整理】Markdown常用语法介绍,看这一个就够了
  7. UVM基础-TLM通信机制(一)
  8. go micro微服务资料
  9. 浏览器提示无法安全地连接到此页面TLS安全设置未设置为默认怎么办?
  10. pwm波如何控制电机代码_电动车电机如何选择功率匹配的电机控制器?