Categories
事儿关经济 读书有感

另一种歧视?

今天又扫到一篇很有意思的paper,基本就是说,如果企业看不到应聘者的名字,那么少数族裔被选中面试的可能性就更低。这好像和美国大学录取如出一辙——在学校里比较少见的族裔还是很沾光的。

Unintended Effects of Anonymous Résumés
Luc Behaghel, Bruno Crépon and Thomas Le Barbanchon, American Economic Journal: Applied Economics Vol. 7, Issue 3 -- July 2015

他们的摘要总结的很好(看完就知道他们干了什么了)。

We evaluate an experimental program in which the French public employment service anonymized resumes for firms that were hiring. Firms were free to participate or not; participating firms were then randomly assigned to receive either anonymous resumes or name-bearing ones. We find that participating firms become less likely to interview and hire minority candidates when receiving anonymous resumes. We show how these unexpected results can be explained by the self-selection of firms into the program and by the fact that anonymization prevents the attenuation of negative signals when the candidate belongs to a minority.
所以名字好重要.... 这年头名字继承了太多的信息,大家总会多少不自觉的从名字里面挖掘出一些含金量。
Categories
读书有感

最近几篇社交网络分析 (SNS)

最近关注了一下SNS这边的研究,主要是Linkedin, Quota 和 Facebook。

先贴一下链接:

简单提纲挈领一下这三篇都是干啥的。

  • linkedin那篇主要是说在一个社交网络中,设计一个随机实验是比较困难的,主要是有"溢出效应(spill-over effect)"或者其他network effect,所以就不满足独立同分布的a/b test 假设了。比如,linkedin改变了一个人首页的feed,然后他评论或者转发了一下,他的朋友(control)组里面的也就可能看到;或者说linkedin给一些用户首页展现"endorsement",那这个显然是有溢出效应的(甲 endorse 乙,乙也很有可能反过来endorse 甲)。所以他们做的主要是三件事:分析简单纯随机a/b test的不足、建立数学模型并数值模拟基于已知网络结构的网络效应、采用聚类(clustering or particition)的办法随机实验各个小群体。
  • facebook那篇跟容易让人想起来他们以前那次在大选之前拿用户feed做实验。我总感觉facebook有一群潜伏的政治学研究者...这次这篇发在《科学》上的倒是没有做实验,只是分析了一下朋友们之间的政治观点异同。此外,他们还画了一下不同政治观点(保守、中立、自由)群体的网络样子。
  • quota那篇相对来讲就稍微没那么成熟。我跑到那个meetup去了所以大概说一下idea。quora关注的是如何让用户找到感性的问题、以及如何找到最合适的人来回答。所以他们很关心一个问题能在network里面传递多远、多久。他们有一些social channels、比如你关注的人的动态、你关注的话题的动态之类的;还有一些非social的channel,比如google,比如摘要邮件。所以他们就来分析,是不是follower越多的人的回答越容易得到更多的upvote(类似于点赞)呢?答案是肯定的,但是随着时间的衰减social channel的作用越来越弱,最终收敛到60%还是多少来着。其他的分析也大致跟此相关,描述性分析为主。

总结:sns现在做的越来越细致、更注重于问题本身而不是炫技。大致的问题主要有:信息是怎么在社交网络传递的?不同群体之间的差别与联系?人们是怎么被网络中的变化所影响的?这种影响如何量化?如果要做实验,怎么控制溢出效应?如果要做模拟,怎么有效的利用各种信息和已知的网络结构?

一点点在推进科学的进步的感觉?

Categories
读书有感

关于回归的一个计算技巧

以前只知道算回归系数的话,要么直接去解,要么就是做qr分解,要么就是梯度下降。
今天重温Mostly Harmless Econometrics (36页,脚注)才发现还有一个小的技巧:
Screen Shot 2015-04-17 at 5.20.12 PM

当然大多数情况下这也没啥帮助,因为要先算残差,比如有三个x的话要先算出来有两个x的时候的残差。可是在除了x只有一个虚拟变量的时候就很管用了,可以直接算出来x的系数,因为y~(0,1)这样的回归系数直接就是1和0两个组的均值差,这样就可以很方便的算残差了。

mark。

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那些),所以统计建模常年在跟残差项的分布作斗争——反正看到你有什么规律,我就可以提取出来更多的信息放到我的模型中。计量经济学家喜欢说残差项是垃圾桶,但其实也是金矿——没办法呀,资源有限,不能太浪费。

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

Categories
读书有感

R vs Python: data frame和高速数据整理

由于种种的原因,我的feedly里面很多东西很久没看了...今儿抽时间看来一下,貌似是十一月份的热点是dplyr, data.table或者说,data.frame高速操作的各种办法。

http://www.r-bloggers.com/dplyr-and-a-very-basic-benchmark/

这里有有个蛮有意思的比较,抄过来:

base dplyr-df dplyr-dt dplyr-dt-k dt dt-k
Filter筛选 2 1 1 1 1 1
Sort排序 30-60 20-30 1.5-3 [1] 1.5-3 [1]
New column加列 1 1 (6) 4 (6) 4 (4) 1 (4) 1
Aggregation加总 8-100 4-30 4-6 1.5 1.5-5 1
Join合并 >100 4-15 4-6 1.5-2.5 - 1

从base的最基本函数,到dplyr+data.frame, 到dplyr+data.table,到dplyr+data.table+key,挺神奇的...我一直比较依赖的数据整理的包有两个:plyr和data.table,现在终于看到一丝更加有效率的曙光了。顺便作者还和pandas比了一下...这是为了杜绝我多用python的决心么?我一直试图努力的多用一点python,看来越来越不可能了...

pandas data.table
Aggregate 1.5 1
Aggregate (keys/pre-sorted) 0.4 0.2
Join 5.9 -
Join (keys/pre-sorted) 2.1 0.5
Creating keys (sort) 3.7 0.7

话说,谁来进一步搞一下稀疏矩阵啊?我现在对这货比较依赖...