Categories
经济、IT观察与思考

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

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

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

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

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

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

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

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

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

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

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

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

Categories
读书有感

从Variance说起:回归、聚类、残差和方差

前言的废话:有种被统计学洗脑的感觉,跟搞统计的接触的有点太多了吧...哎,算了,难得有点感悟记录一下吧...喵。本文试图以一个典型的统计学的思维过程来叙述,呃,可能功力不足,凑合着看吧,也不枉我连续几天做梦都是直方图 密度曲线 average treatment effect之类的。

-------------------------------------------废话结束了-----------------------------------

Variance这个词很好玩,如果是用在统计的情境中就中文译作方差,公式就是 ,写成列向量(N*1矩阵)的形式就是,1这里是N×1个1的列向量。从公式的形式就可以看出是一个二阶中心距,即距离中心的距离的平方(二阶)和。然后既然是二阶距,那么自然的衡量的就是某个数据集分布的离散情况。越大越散,越小越密。此为一维(这里指只有一个观测维度的情形)相信这样的定义实在是太耳熟能详了。方差有个小弟叫做标准差,就是方差开平方。这个也没啥说的,有意思的是大家习惯用字母来标注他,于是有了著名的六-西格玛原理...好吧,其实最有用的就是正态分布的几个西格玛了(随便偷张图):79f0f736afc37931c22b82ecebc4b74542a911b7.jpg

 

然后我们看简单的二维。二维就是散点图,没什么特别说的。找张著名的散点图来(随便找的,懒得自己去R里面画了。最后还是乖乖的去R里面的画了,还是自己画的好用一些,果然偷懒不容易,唉,我写博客实在是太敬业了!)。

2014-12-27 23_41_46-Plot Zoom

 

背景知识大家可以去自己搜搜,反正就是黄石公园某个自然形成的间歇性喷泉,每次喷发的时间和等待时间的散点图。挺简单的对吧。这个数据点也不多,大家一眼扫过去大概百余个的样子。可是这幅图真的很有意思,跟Variance的联系实在是太紧密了。

我们先来说直觉。如果让你用自然语言(而非统计或者数学公式)来讲述这个图,比如你带这你刚上小学的孩子去黄石公园玩,他好奇的在等待这个喷泉喷发,这个时候你应该怎么跟他讲?嗯,可以大概说一下,“你看基本上呢,你等的时间越久,下一次喷发的时间就越长哦。让我们一起来计时~” 然后小朋友看了一眼图,不服的说到,“什么嘛,明明是等了如果超过一小时(或70分钟),那么下一次基本上喷发时间才会长(4-5分钟)。”。那么到底哪种说法更准确呢?

(吐槽君:自从上次写了乐高机器人之后,落园的段子里面的科普对象就从同学们降低到小朋友了,喵~)

好啦,不跟小朋友玩了,我们得研究一下更fancy一点的方法。说白了就是,用一个什么样的模型可以让经过我们模型处理的Variance尽量的小呢?

嗯,同学们说试试回归呗,明显的正相关性啊。你都说了啊,X的增加Y也在增加(先不要理会因果即X和Y谁先谁后,我们只说相关)。

2014-12-27 23_51_53-Plot Zoom

所以我们虽然得到了一个显著的正相关关系,但是回归模型的R方只有81%(当然已经很好了,只是我们希望更好嘛)。来看看对应的残差分布:

2014-12-27 23_59_10-Plot Zoom残差好像挺散的(最理想的残差就是白噪音了,说明没有任何信息量了),但是隐隐约约也能看出来有两群这样。于是很自然的,有同学说,我们去试试聚类啊。

在去试聚类以前,先说说大名鼎鼎的K-mean算法的一些基石。

上面不是罗嗦了一堆variance在一维情形下的定义嘛,那么推广到二维,也很简单。

定义二维的中心点: ,然后就可以定义二维方差: 每个点到图中心的距离的平方和。看图就知道了。

2014-12-28 00_09_03-Plot Zoom蓝色的就是中心点。这里我们就不罗嗦什么均值容易受极值影响之类的了,那些也是看菜下料的,我们的数据看起来还好。(突然间为什么有种牛郎织女鹊桥相会的即视感...原来古人观星也是有异曲同工之妙呀,天空就是一个大大的散点图——勿喷,我保证下面不跑题了)

 

2014-12-28 00_25_06-Plot Zoom

对于一个线性回归模型来讲,我们看的就是残差项的方差——残差项方差越大,表示他们分布的越散,那模型捕捉到的信息就少。

对于聚类呢,也可以看相应的方差:每个类里面的点到类中心的距离平方和 -> K-means。K-means虽然是通过迭代来实现的,但他的原理大致也是让二维的二阶中心距最小(由每一次迭代的损失函数来决定)。一眼扫过去大概可以分成牛郎织女两堆星星,那么我们就聚两类好了。显然不用跑程序我们也知道,聚成两类之后的组内方差和肯定比直接跟中心点算一个方差要小。

2014-12-28 00_32_00-Plot Zoom聚成两类之后呢,我们类似定义的残差就是两类中每个点距离其中心点的Y轴距离(因为会直接把中心点作为每类的预测值)。还是画个残差图看看。

 

2014-12-28 00_51_13-Plot Zoom红色是K-MEANS给出的残差,蓝色是回归给出的残差。貌似这两个长得还是挺像的,也是左右两群,虽然每群中两者长得都不太一样...这个时候我们就可以回到和小朋友的对话了:你们说的都有道理,都有8成的准确率,谁也没比谁更好很多。

于是我们尝试在每组内再做回归?会有效果么?

2014-12-28 01_01_20-Plot Zoom见效寥寥...引入聚类后回归模型的R方从81%升到了84%,才3个百分点。这主要是在每一类里面,我们很难找到残差的规律了,所以这样只是通过组别信息的增加减少了组间方差,而其实从上图我们也可以看出每个组内的残差方差还是很大的、每条回归拟合线的斜率从最初的10降低到6和4,每个子回归的R方只有10%不到,能给予的信息已经很少了,所以整体模型只是增加了一点点准确性。但是无论如何也比直接玩回归的效果要好(之所以用k-means而不是简单粗暴的用类似x>3.5这样来分成两类,是因为k-means是按照其损失函数优化过的、给出的是最优的两类聚类结果)。

问题来了,为什么我只聚成两类而不是三类五类甚至更多呢?主要是怕过拟合,数据才200多个点,聚太多的话很容易过拟合了。大数据的情况下可以尝试其他办法。

好了,废话了这么多,其实统计学家们已经不仅仅玩这些了。其实我们上面的残差图传达了一个很重要的信息就是残差的分布不是一个白噪声(或者说不是均值为0、方差为常数的正态分布),称之为异方差(Heteroscedasticity)。异方差有很多很多情形,最简单的就是随着X的增加而增加。还是网上随便找了个图:

p109figure异方差的存在使得我们模型的估计(或者基于训练数据预测)精度有限(先不考虑validate- test那些),所以统计建模常年在跟残差项的分布作斗争——反正看到你有什么规律,我就可以提取出来更多的信息放到我的模型中。计量经济学家喜欢说残差项是垃圾桶,但其实也是金矿——没办法呀,资源有限,不能太浪费。

然后是一些补充的废话时间。