Categories
经济、IT观察与思考

古典的因果到允许不确定性的因果关系

虽然知道自己写不好这个题目,但是还是想多少记录一下最近的一些思考。放在这里贻笑大方也无所谓,反正是自家的园子,来者只能客随主便。

这么多年其实做的东西一直没能跳出因果推断的这个小圈子。虽然知道自己的短板在哪里,也知道再不好好去突破那么天花板就挡在那里了。可能开始只是一个非常实用主义者的角度,不是特别关心哲学层面的限制。到后面做的越多,知道的越多,对这个领域的敬畏也就越深。到现在,虽然每天因为工作的原因,还是会跟不熟悉这个领域的人一遍遍灌输因果推断的基本想法和重要性,但是自己其实知道我可以脱口而出的那些套路背后有多少隐藏的假设。稍稍去深思一下那些假设,有的时候也知道很多东西其实并不是站得那么牢靠。

我其实在过去的很长一段时间都怀着对统计意义上因果推断最底层的怀疑:这真的是科学一直在追求的因果关系吗?从开始学习计量经济学的时候,这一层挥之不去的“不相信”就一直顽固地存在着。当然,一开始的时候是因为知道的太少,只是本能地去抗拒一个不能融入我直觉的思维方式。一晃过了十几年,我终于有勇气再去翻看当年写下的无知者无畏的文字,还是挺有意思的。当年没有得到太多的现实应用的锤炼,居然可以在一定抽象的层面来思考这个问题,还是一番挺有意思的大脑锻炼。现在经手了这么多现实的案例,回过头去再看,当年的感悟虽然有灵性,却没有根基。

前段时间给统计之都写了一篇概述因果推断业界应用的科普文,题目起的很大,写起来也让我诚惶诚恐。其实也有跟编辑们讨论过题目是不是太猖狂了,后面大家觉得还好,就这么留下了。不知道有多少人注意到,其实我在里面非常小心地写了一个“限定句”,“这里的 ‘因果’限定为统计意义上的因果效应”。这一句一定要在一开始就写,因为我只能在做出这个限定之后,才能流畅地在一个给定的框架之内写下去。读者们不一定能感觉到作者心里的微妙情绪,但我没法自己欺骗自己。最后一段,我试图跳出这个限定,提到了“个体处理效应”,然后心里仿佛又有一口大钟撞来撞去,不敢再胡扯下去,旋即收笔。一篇不过几千字的文章让我如此胆战心惊,可见背后的思考是让我如何地坐立不安。

那么到底是什么让我如此的忐忑呢?其实就是“因果”这两个字的定义。说到因果,最符合我直觉的就是古典物理或者化学意义上的因与果,比如牛顿力学,比如氢气在氧气中燃烧变成水。这些都是可以用优雅的数学公式直接而具体地刻画的,好似真理一般,让人没法质疑。更让人笃定的则是,这些都是可以被实验验证的。虽然后面知道,古典力学只是在一个局限的环境中才会被遵循的物理定律,化学元素之间的反应也是限定在某些条件之中的,但这仿佛并不影响我对于这种非常机械式的因果的信仰。但问题在哪里呢?数学公式的局限在于,它需要一套假设和公理体系。当这些假设不成立的时候,这个看似精密环环相扣的因果体系就会土崩瓦解。数学家不会去验证假设能不能成立,他们可以得到一个理想条件下的真理,而应用者却不得不面对假设可能不成立的境况。然而我有限的物理或者化学训练并不足以告诉我,当这些假设不成立的时候,我们又如何去构造和验证一套新的理论体系呢?

从确定性到不确定性,其实是我在本科四年学习里面获益最深的一个思考范围的突破。概率论其实是一个非常强的对于思维方式的影响。这种思维方式的影响不在于记住了多少参数分布,而是在于它潜移默化地引入了一个新的假设:因果关系可以不再是一对一的、确定的,而可以是不确定的。这个时候,我们便可以借用概率分布来描述这种不确定性。这一点我其实在很长的一段时间都没有领悟到,虽然我可以熟练地推导各种利用概率来描述的公式。我其实特别喜欢问自己和问别人一个问题,什么是方差?很多人脱口而出,离中心点的距离(平方和)。然而细细想下去,比如我不断地去抛一枚均匀的硬币,每次的结果要么是正要么是负,那中心点的那个永远无法实现的1/2到底是什么?方差又是在描述什么?(想到这里,觉得哈利波特里面那个“九又四分之三站台”更加神奇了。)(另,后面看到一些脑科学的研究,说不确定性其实是对于人们认知的一个极大挑战,因为我们的神经系统从物理层面其实是不那么兼容不确定性的。人类做决策的时候其实是很难吸收不确定性的。)

从确定性到不确定性,其实也是很大程度上改变了我对于因果关系的理解。在确定性的框架之内,因果关系是不需要统计的(因为没有不确定性,我们不需要借助概率的语言来描述这件事情)。当我们放松了确定性这个假设,引入概率之后,因果便不得不被重新定义。我不知道自己花了多久想明白这一点,可能至少五六年的功夫吧(所以我硕士毕业的时候脑子里面对这一点还是一头雾水,虽然我已经天天在积极地讨论计量经济学上的“识别”(identification)这个问题了),而且每次都是一点点局部的进展,经过了很久的磨砺才愈见清晰。很长的一段时间,我是完全把这两种对于因果的定义隔绝在两个平行世界的,绝对不允许两者同时出现在我的思维框架之内。

好了,我现在仿佛终于打通任督二脉,就可以闭关修炼然后期待境界突破了吗?其实并没有。我这几年读了很多相关书籍,统计学的可能多一点,毕竟先要确保自己理解数学工具是怎么来严格地描述这个问题的。应用方面的也不少,主要是想挑战自己把现实和理论连接起来的能力,也便于理解那些抽象出来的框架和假设。然而最让我痛苦的瓶颈则是哲学层面的思考。我试图去读科学哲学,一遍遍,却仿佛还没有找到那个灵感突发的契机(eureka moment)。我试图跟别人聊,去倾听大家的理解,然而这仿佛是一个迷雾森林,大家都在一个特定的范围之内默默地停下了。有人或许试图找到在迷雾中前进的线索,却也是半途折返。我是一个很好的观察者和倾听者,却不是一个合格的冒险家,我根本不知道从哪里开始探寻。

最形象的联想就是在《荒野之息》里面走迷雾森林

有人说,经济学是社会科学之中的物理学。我觉得从面临因果推断这个迷雾森林的角度,经济学和物理学或许面对的是一致的挑战。物理学有些许进展,而经济学在蓬勃发展了半个世纪之后,却陷入了更大的迷茫(我觉得19年诺奖经济学其实某种程度上映射了大家对于这个问题的无能为力)。当应用学科止步不前的时候,大家在等待的或许是哲学和理论上的突破了。当然,我觉得其实我自己都没有窥得现在境况的全貌,只是隐约觉得,我离那个看不见的玻璃墙越来越近了。

(这篇真是的随便写写,大家尽情吐槽,也欢迎砸更多的信息和思考。)

Categories
读书有感

有断点:Bunching还是断点回归?

最近看到微博上有人提到了Bunching,因其和RDD (regression discontinuity design, 中文一般译作断点回归,也有人缩写为RD)很形似,所以好奇心起,找了相关的论文读了一下。其实很久不看方法论的东西了,满脑子想的其实都是一些实践应用的问题。Bunching却是我孤陋寡闻了,可能其主要应用的领域(公共财政)我不是特别关心吧。

计量经济学里面有很多好玩的“术”,很多都是一张图讲清楚,比如断点回归,比如synthetic control(中文有时译作合成控制法),Bunching大概也可以算作此类。昨晚通读了一下Kleven (2016)的综述,觉得还是有些有意思的地方,就和RDD一起拿出来看看吧。搜了一下,相关中文文献寥寥几篇,可能跟国内做这个方向的学者还不是特别多有关。我没有去进一步阅读中文已经翻译好的内容,可能有所重复。本篇将将作为一篇入门谈谈直觉吧。

先来一段字意和翻译的理解。Bunching这个词上来就把我打蒙了。Bunch我知道,一“束”嘛,但是在这里到底是什么集成了一束?搜了一下,中文目前翻译成聚束效应或者群聚分析法。我其实感觉这个翻译失去了英文本身的直观味道。理解了方法之后,Bunching在这里的原意更像是一个“次优陷阱”导致的集中点,即因为现实的约束,人们的选择不得不集中于一点(有点像封顶工资),从而去看密度分布的时候,形成了一个有点像离散分布的才有的mass point(在这个点对应的概率大于0)。后面会细细分解。还有两个重要的名词也在这里说说,Kink points和 Notch points。我看到这里的时候感觉我是没学过英文,完全无法代入Kink和Notch的形象化原意是什么。后面看了一下,Kink其实和数学里面的尖尖的转折点很像,比如一条直线突然折了一下,那就形成了一个突兀的Kink point,在这点肯定是连续而不可导的了。Notch则取了其缺口的意思,在这里直接断掉了,不但不可导了,直接不连续了。咦,这不就和断点回归听起来很类似吗?简单用R画两张图意思一下。后文直接用英文原词不再翻译了。

图1:Kink point v.s. Notch point示意

在谈论方法论之前,不妨看看问题的来源。既然是经济学家搞出来的方法,那肯定是有现实问题作为背景的(上一个经济学家先于统计学家发扬光大的模型,大概要数工具变量 (Instrumental variable) 了吧?)。其实bunching这个问题来源于税收相关的研究。比如个人所得税实行的一般是梯级税率。以中国的为例,收入高出某一个阶段的部分,一般会征收更多的税率。值得注意的是,这里所说的是边际税率,而不是平均税率。超出36000但不到144000的部分征收10%的税率,但前36000只征收3%的税率,跟总收入无关。

图2:个人所得税的梯级税率(左:税率表;右:边际税率示意)

如此的梯级税率会引起什么有趣的后果呢?最早,经济学家关心的是收入税对于劳动供给的影响。理论上,劳动者实际关心的是税后的可支配收入。如果在下一个阶梯税率过高,那么劳动者可能就会减少劳动的付出,因为边际收益(实际的税后所得)在递减,而劳动者付出劳动本身的成本可能在上升(比如加班劳动的痛苦感)。Saez(1999)年开始研究这个问题,结果这篇文章直到2010年才发表,个中故事无从探知。(题外话,Saez 2009年就拿到了“小诺贝尔奖”克拉克奖,而同一批的法国经济学家,还有去年拿到诺贝尔奖的Duflo...外加新生代的Stantcheva,法国经济学家真的是对税收研究不浅。)

Saez发现了什么有趣的现象呢?图3基本可以描述这个机制。原理大致是,对于效率更高本可以赚更多钱的劳动者来说,由于下一梯级的税率上升导致他们税后收入的减少,使得他们对于劳动投入的积极性降低。对于刚刚高于临界点的某个区间的人们来说,他们的最优选择反而是封顶在临界点(比如梯级税率改变发生在临界点1000块,那么原本可以多赚10块的人,可能就只会赚1000块而不会为了多出来的10块付出额外的努力。直觉来说,有点小富即安的意思——劳动者心想,我已经赚了1000块了,够花了,干嘛还拼死拼活多赚10块钱,大部分还要交税!)。对于那些远远高于梯级点的人,他们也会依次减少劳动产出,只获取新税率下对应的最优收入(比如上例中,原本能赚1500块的人,可能只会去赚1400块)。这样Bunching现象的产生显然是由于税率的突然变化,而劳动者等效用曲线本身却是平滑的,一小部分区间内的人便因此被挤压到一个点上故而出现Bunching了。(啰嗦一句,等效用曲线是一个经济学的概念,大致可以理解为等高线,即在这个曲线上每个点带来的效用相等,而曲线的移动代表了更高的效用水平。故而,等效用曲线和外在约束直线的切点便成为了最优选择。)

图3:一张图讲清楚 Bunching
(左:边际税率变高使得更高效的劳动者选择减少劳动投入,封顶在kink point而不是原本最优。曲线代表等效用曲线,直线代表税收形成的预算约束;右:由于高效劳动者减少劳动投入,他们的收入在kink point聚集,直到更高效的劳动者收入下压到kink point附近,形成新的分布尾部)(图截取于 Kleven (2016),Saez (2010) 也有类似的图)

图3的右图形象地描述了Bunching带来的密度函数形状的变化,也成为了学者们热衷用实证数据来量化的政策的影响。在个人所得税这个例子中,Bunching反映的是劳动者劳动积极性的降低,从而降低了全社会劳动供给量。劳动供给减少了,最终社会的生产量(比如GDP)便会降低。对于政府而言,如何设计税收梯级税率以不至于太过于伤害劳动供给,便成为了一个有实际意义的优化问题。Notch针对的问题不是边际税率会改变,而是平均税率直接改变,那么就会形成一个“洞”。在洞左边,是Bunching现象,而洞的右边,会形成一条新的曲线,所以密度函数的形状会和kink有所区别,中间会有一段“空洞”。我好奇的主要是Bunching这类方法和RDD的对比,故而在此不多赘述Notch了。

那么Bunching和RDD之间又有什么联系呢?RDD其实研究的也是政策的断点:比如去年收入低于某个临界点,才可以被选中参加某些项目。摘一张经典的Mostly Harmless Econometrics书中的配图。图4可以看出,在x=0.5这里形成了一个能否获得干预的断点:高于0.5的人获得了treatment,而低于0.5的人没有获得。在这里,我们可以认为,0.49和0.51的人原本是很像的,就是因为这个treatment的效果,才导致了他们后面结果的不同。在这个局部,我们可以将其近似于一个随机对照试验 (randomized control trial, RCT)。如果结果是跟x高度(线性)相关的(或者可以用一个函数来拟合的),那么这样的treatment effect就还可以扩展到临界点稍微远一些的地方,从而实现了一个优雅的断点回归。

图4:断点回归设计
(Mostly Harmless Econometrics figure 6.1.1)

值得注意的是,RDD有一个非常强的要求,就是这个用于区分的变量的本身,不能因为处理(treatment)而改变,也不能被参与的个体而选择,即外生性的要求。有了这么一个外生性的约束,我们才可以进一步做因果推断。比如身高我们一般认为是天生的,而不是后天改变,那么如果以身高作为要求来事实某些侠项目,那么就是一个外生的改变。比如最近美国因为新冠疫情而发放的经济激励补助(2019年收入在10万美金以下的可以获得一些现金),其标准是过去的收入,已经不可能因为发放激励本身而改变了,除非人们去年就能预测到今年的变化并调整收入。而Bunching恰恰相反——政策本身是事先给定的,然后观察的正是人们对这些政策反馈而表现出来的个人选择。也就是说,在Bunching这里,政策不仅不是外生的,而恰恰我们就是要观察政策作为一个内生变量对于人们选择的影响。实证层面,Bunching只是基于理论假设,直接估计密度函数本身来计算对应参数。

看到这里,对比内生性和外生约束的迥异假设,Bunching若是和RDD混淆了,那么结果可能是灾难性的。比如有些网站的会员制度是跟活跃度等相关的,高级会员会有相应特权。这时要是上RDD,那岂不是疯了?这明明是一个激励制度的设计问题啊...就是需要设计这样的制度来激励人们变得更活跃。

此外,Bunching本身在实践中也是有着很多挑战的。最重要的,Bunching现象的出现也取决于决策个体到底有多少自由来改变他们的选择。比如领工资的人相较于自由职业者,他们对于自己收入的调节能力(合理避税)就要差一些。有趣的是,类似的政策在人们更有能力控制自己选择的情况,比如股票和投资收入税方面,Bunching现象显现地便更为明显——大量的人们聚集在某几个临界点附近。

Kleven (2016) 这篇综述里面提到了其他当前应用中的局限性,比如数据本身一般是政府管理数据(例如税收),而很难用于调查数据(受限于测量误差和样本量等)。此外,理性经济人自然是另外一个因人而异的假设。第四章还提到了一些量化本身的挑战,比如kink一般比notch可能更容易肉眼看出,效果也更明显;实际数据还有一些数据本身四舍五入带来的问题。

总而言之,Bunching是一个强烈依赖于经济理论模型本身的估计方法。事先通过理论模型推导出可能导致Bunching的点,才可以进一步去量化模型中的参数。相比而言,RDD其实对于经济理论模型的要求并没有如此之高,只要外生性满足,局部的推断还是相对简单直接的。

非要一句话总结的话,不是有断点就一定可以上RDD的。如果政策或者处理有可能不是外生的,那么请一定慎用RDD。

文末附代码。

Categories
互联网产业观察

NeurIPS 2019的一些观感

前几天有提到,十二月份的时候去NeurIPS 2019晃了一圈。除了开篇那个演讲之外,那周我还去围观了不少其他的东西。NeurIPS开到如今,万人大会,熙熙攘攘地其实挺难甄别信息的。第一次去这种顶级的计算机会议,经验不足,只能按图索骥般地一点点拾遗。

好在,我目标相对明确,并不是一味的去凑热闹的。那些火到爆的GAN之类的,我就只能远远地围观一眼,然后不明觉厉,去找自己相对更能看懂的东西去了。于是,我就很无聊的,去看了两个主题:因果推断相关的,以及隐私相关的。

因果推断这块儿,能到NeurIPS自然是被选择过的,不会是太纯理论的这种。跟机器学习相关的自然是要跳出简单的线性回归了,否则大家写什么呢?其次呢,就是跳出随机试验的框架,否则哪里用得到那么多高深的预测模型呢?七七八八看了不少poster论文,大部分都是各种花样繁杂的算法。努力地去理解他们的做法,然而却哀叹一声,浮沙筑高台,又有多少可以大浪淘沙始见金。(插曲:后面那个causal inference workshop,直接就是Susan-fest...哎,她也算是扛起来一面大旗了。)

隐私相关的,其实是加密+分布式的结合,基本要实现的是在客户端进行计算而不是需要把原始的隐私数据传递到服务器端。于是乎,我们看到了各种基于分布式算法的演化,加一些随机的因素在里面,就得到了一些隐私友好的算法。也挺好玩的,有助于想清楚一些分布式算法的设计。

笔记本身是用英文整理的,直接在这里贴一份好了。

Categories
经济、IT观察与思考

一篇文章引发的感触

最近一时兴起,打算记录一下工作中的一个项目,遂写了一篇科普文。最开始的时候,想着不如写的搞笑一点,所以里面穿插了无数的段子和包袱,刻意卖弄文笔。结果发给一个朋友看,人家生生的没看懂我想说什么(心疼小白鼠10s)。受打击之后,停了一个月。

然后重新写,主要是此时相对简洁的英文版写完了(英文版主要是写给内部,所以注重事实和逻辑,不需要科普什么。但我承认,中文我是习惯性的废话...),所以打算参照逻辑清晰的英文版重新写一遍。大刀阔斧的删掉了无数不相关的段子(其实也不怎么好笑),然后居然还啰啰嗦嗦的写了7000多字。自己看了几遍之后,发现自己的东西自己没法改,所以求救于几位朋友们帮忙审稿。

最初吐槽我写的一塌糊涂的朋友,大概是看到了第一版的惨不忍睹,所以对修订版格外包容,来了一句,至少能看懂了...我默默的偃旗息鼓。其他的朋友就没这么客气了,噼里啪啦给了各种修改建议,到最后我都觉得,我到底为什么班门弄斧的写了这么一篇文章?不过讨论的过程也是交流,有些没想到的问题变得清晰了一些。

几点感触吧。

  1. 不同的人看问题肯定是不同的(废话)。每个人都是另一个人眼中的井底之蛙。评价标准其实很简单——解释一个问题是不是费力。如果毫不费力的直达核心,那就是对于这一类问题看的都很通透,所以并不需要绕着弯子废话那么多。而像我这种半瓶子晃荡的,就产生了无数废话,效果也并不好——事情没有讲清楚,还造成了各种模糊和误解。这也是我一遍遍删改的过程中,坚持的一个基本原则:要把自己知道的讲清楚,自己不知道的索性不讲,或者明说不知道。含混其词其实并没有什么好处,反而贻笑大方。
  2. 受众与定位。其实写什么文章都是这样,作者不应该期待每个人都能理解。这并不是白居易写诗的年代。写科普文也是如此——一开始的时候,我总是有点贪心,希望就算读者不怎么了解这个领域,也可以大致看懂一些东西。结果适得其反,一位朋友直截了当的说,你这样写,懂的人没必要看,不懂的人也看不懂。醍醐灌顶,然后我决定把跟主旨不相关的删掉——要么另写它文再做深入揭示,要么读者的定位就是有一定基础的。很多问题确实不是三言两语可以解释清楚的,强行放在那里只会喧兵夺主。
  3. 学无止境。好在我还可以意识到自己是井底之蛙,那也就说明了还有一番广阔的天地。每当意识到这里的时候,其实就是指明了一些学习的方向。比如,计量经济学里面的structural model, instrumental variable等等,和统计里面的基于贝叶斯网络做因果分析有什么共同之处。propensity score模型怎么可以扩展(Rubin&Imbens 后面的章节我并没有读完...汗颜)。实践中我们习以为常的一些操作后面有没有理论依据(比如capping and bias, aggregation)等等。越到这里,越觉得自己的理论知识远远不够,很多事情就这么木然的按着所谓“直觉”做下去了,而其实做的时候并没有想这么多。回头想想,有些真的是无知者无畏的后怕吧。尤其是在被懂行的人问到语竭词穷的时候,那是一种从头到脚的尴尬。

感觉其实把自己做的事情写出来也是很重要的,这样才能意识到哪些地方其实自己并没有想得很清楚,反而可以激发求知欲。不说了,我准备这周末再把Rubin&Imbens拿出来读一下。除了技术细节以外,还要试图理解一个问题——他们当时为什么会这么想这么做,有没有什么其他的想法但并不可行。有的时候真理或许并不重要,重要的是思考的过程和那种醍醐灌顶的乐趣吧。

谨以此,警示一下一度飘飘然的自己。天外有天,脚踏实地。

Categories
事儿关经济

说说我所认识的“最小二乘君”(配图版)

由于近些年常常跟搞数据分析的人混迹在一起,所以很多时候说话方式有点偏向机器学习了...顺便心里暗暗的忧伤一下当年的心路历程(不知道我的基本轨迹的可以先去看看CV..)。这里聊作一二记录,讲讲我所认识的“最小二乘法”(下称最小二乘君)。那个,语言稍显浮夸,大家随便看看哈,别较真。

<锲子>

是写小说的时候大家都兴先来个“锲子”么。7年前,我还是一个年幼无知的大学新生儿。当时我们系开了两门传说中各挂50%的数学课:微积分和线性代数。同学们大都学的死去活来,我也学的死去活来,一度开始怀疑自己的智商...其实现在想想,我也不知道当年为什么学的那么痛苦,现在随手用个微积分貌似都很水到渠成的样子。嗯,可能是老师授课方式不够好吧。那年直到期末考试,我也不知道我学了一年的微积分有什么用处,除了背下来少数的几个证明推导和学会了一堆算微积分的“技巧”之外。

从前有棵树,叫高树,树上挂了很多人……挂了很多人的高树...

线性代数也是一样的。当年翻看某本计算机类入门书(可能是算法与数据结构),前言一开始就是一行金字,大意是“矩阵论是当代计算机基础×××”。然后翻翻后面的果然看不懂,于是默默的去图书馆把这本书还了,然后借了一本黄皮的泛着金光《矩阵论》回来。同样悲催的,啥也没看懂,然后默默的放弃了我在这个领域深修的打算,乖乖的回去上必修课了。(所以我当年学习高级计算机知识的一腔热情就被这么无情的浇灭了哇!果断考完当时的计算机等级考试——C语言和数据库就扔掉编程了...)

线性代数一直学到最后,我还是以为这东西就是来替代“高斯消元法”解联立方程式的...什么特征根啊,奇异值分解啊,格拉姆-施密特正交化啊,直到最后我也没明白是干嘛用的,除了会算几个数之外...没想到,那日一别,重逢已是花落花开好几轮之后...当真是良辰美景虚设!只是万万没有想到,他乡遇旧友,而这厮竟和日后的最小二乘君紧密相连,难分难舍。

138112_091242423086_2良辰美景虚设