Categories
事儿关经济

我(对于统计方法)的一些偏见

Yihui写篇文章居然链到了我那篇吐槽文,瞬间亚历山大...我就是随便说说而已,一定要文责自负么?

其实我经常会有些自我的偏见在那里,而且有时候明明知道这些偏见的存在不好,还是很难说服自己改变它们。

比如,最深的偏见就是我对于计量经济学,我实在无法从根本上接受计量经济学属于经济学的这个事实...我对于它从统计观点出发搞的“因果推断”始终加上一个引号。

再比如,计量经济学内,我偏见最深的就是时间序列分析,我实在无法从根本上接受时间序列分析居然可以做因果推断,这东西更多的是预测的意味嘛,和机器学习的观点很像...

再再比如,机器学习各种模型中,我最不能接受的就是那些完全没有假设检验的...这东西至少也得能算个方差什么的才让人觉得靠谱些吧?

再再再比如,没有假设简单的那些机器学习模型中,我最最最最无法认同的就是最粗暴的把各种模型结果混合起来,用类似bootstrap的方法求得置信区间之类...这简直是就毫无办法之下的粗暴猜测嘛。

然后最后一个问题,施老师说,这个某种程度上反映了“群体智慧”。呃,好吧,就算每个模型都提取了一定的信息量,然后这么混合起来就是万灵药了?怎么听怎么像中药一锅煮的感觉,而不是西药那么配方分明...

其实我还讨厌的是“数据科学家”这个说法...努力的把science的帽子往自己脑袋上套,是大家都要遵循“科学发展观”的缘故么?就像我原来特别讨厌有人争论“经济学是硬科学还是软科学”一样,一定要沾上科学的边么?是为了好申请经费么?

如果科学,定义为消除我们对于世界的不确定性,那么无论是经济学还是统计学,不用争议多少,自然都是科学。如果科学,定义为探寻事物发展的因果规律,那么怕不是建立在演绎法逻辑之上的方法,都算不上科学了。我想说的只是,定义可能并不重要,如果定义是狭隘的,那么必然排除了一些有用的方法;如果定义是广阔的,那么必然包容了一些没用的方法。这东西又不是非黑即白的...

我只能说,科学在我这里的定义相对狭隘,宁缺勿滥,所以我的偏见有这么多...偏见越多,观点越偏颇,经常有过两年自己都不知道自己当年为什么那么幼稚和狭隘的感觉。所以大家一来请见谅落园文章的局限性,二来欢迎帮我突破局限性,用鲜明的观点和生动的例子来说服我——不仅仅是一些口头上关于定义之类的争论。

------------

照例跑题:确实如yihui所说,我的blog文章太多了,找起来难免不方便。尤其是对于不是常年订阅的读者来说。所以我决定对自己的blog主题动动手术了,瀑布流什么的最近蛮流行的,挺好的打算学习一下。

Categories
事儿关经济

R并行做大数据时间序列分析与bootstrap

好久没写关于经济学的文章了...今天看到两个搞matching的人拿到诺奖,瞬间想起当年和一个学心理学出身的童鞋一起搞的考虑到心理学因素的matching game...可惜最后没有时间完善,就放在那里当雏形了。我们的idea应该还是蛮有新意的呢~matching需要设计机制,然后用博弈来解,哎,很好玩的...

很多人都知道我是不搞时间序列分析的,尤其不喜欢基于时间序列的因果推断(格兰杰因果检验几乎是被我打入黑名单的一个词)。但这次为什么专门写这么一篇blog post呢?其实,我不反对时间序列作预测嘛~而google这篇paper,目的在于预测,又是latex排版的(搞不好还有sweave或者knitr的功劳),读起来赏心悦目的多。

这篇paper题目是:

Large-Scale Parallel Statistical Forecasting Computations in R

地址见:http://research.google.com/pubs/pub37483.html

亮点自然是:大数据计算、map reduce、时间序列分析、bootstrap (所以说google是一家让人尊敬的公司,http://t.cn/zlbAYJY这里总结了他将学术成果悄无声息的服务于大众的案例)。虽说大半夜的,但看到这个东西,再也睡不着了,索性写完一吐为快。(那次沙龙还说到来着,看吧,google早把这些好玩的东西都搞定了,只是不公开拿出来给大家用罢了~)

1. 并行算法

并行算法这里,主要是map reduce。他们的任务主要有:

  • Facilitate parallelism of computations on up to thousands of machines without access to shared NFS filesystems(上千个节点的并行计算,无共享的NFS文件系统).
  • Make distribution of code and required resources as seamless as possible for analysts to minimize code modifications required to enable parallelism.(无缝衔接各环节,减少分析师写并行算法工作量)
  • No setup or pre-installation of R or specific libraries should be required on the machines in the cluster. A virtual machine for the workers should be created dynamically based on the global environment and available libraries of the caller(节点上无需事先安装R,虚拟机会自动按需构建).
  • Return results of parallel computations in list form directly back to the calling interactive session, as with lapply in R.(lapply函数直接返回并行结果)
  • Allow the parallel functions to be used recursively, so that MapReduce workers can in turn spawn additional MapReduces.(并行函数可以循环调用)

系统构架如下:

2013-12-09 16_48_39-37483.pdf - Adobe Reader

然后若干技术细节还包括,搞定R函数复制和计算的环境并行同步,搞定data.frame和list存储格式与在map函数中直接调用。搞定后,基本底层就搭建好了,剩下的就是调用R了。

2.时间序列预测

最典型的就是google trend的预测了...

2013-12-09 16_49_18-37483.pdf - Adobe Reader

这里他们直接用R包googleparallelism,然后希望用一些时序模型都尝试,做预测,然后取他们的均值(剔除上下总计20%)作为估计值以减少误差。示意图如下:

2013-12-09 16_49_35-37483.pdf - Adobe Reader
我只能说,果然是做机器学习的人啊,和random forest思路一致,弱的分类器结合起来,可能有意想不到的结果。同样的,每个模型都是多少有效的话,平均一下就更稳健啦,尤其是在大数据支撑下...

这样的平均之后已经无法直接推导方差和置信区间,所以他们采取了更依赖机器计算的bootstrap方法,直接强行算出来置信区间...喵的,我只能说谁让当年高斯那群天才整出来大数定律和中心极限定理呢?推不出来估量量方差不要紧嘛,直接重抽样模拟就好了...汗。

3.训练集

果然是做机器学习的人,接下来的思路就是直接一期期训练模拟呗。这个没啥说的了,见下图。

2013-12-09 16_49_51-37483.pdf - Adobe Reader

模拟出来的结果示意图:

2013-12-09 16_50_05-37483.pdf - Adobe Reader

至此,整个问题解决完毕。细节还请大家直接去看原文paper。我的几点感触吧:

  • 1. 机器学习之所以在业界这么受欢迎,主要是其确实能够解决问题。迅速、有效,这个是其他方法比不上的。
  • 2. 大数据、大规模计算,使得一些很简单的idea借助模拟和重抽样方法,大放异彩。
  • 3. 预测,有时候不比因果推断次要。
  • 4. 传统模型,需要适应大数据。
  • 5. 说到底,理论体系还是有待完善的。希望这类方法是下一个微积分,可以先用,然后慢慢补充完相应理论体系。这样,我们才知道什么时候,需要勒贝格测度来取代原有牛顿积分。

总之,虽然无奈,但是有用之物必有有用的道理。期待对理论研究的冲击和激发。