微博抽奖到数据分析

作者:Windson Yang
更新时间:November 14, 2018
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明 www.enginego.org。

感谢王思聪微博抽奖这个热点事件,我们获得了一个学习数据分析的机会😄😄。开始之前,我们先回顾一下这个事件:IG 战队在 LOL 比赛中夺冠,某王姓土豪发布了微博,从转发者中抽取 113名 用户送现金。

wsc_weibo

我们可以看到大概有 2200万 人转发了该微博,开奖之后,出现了奇怪的事情,中奖者有 112名 女生,仅有 1名 男生。 这个悬殊的比例引起了一些争议:

  • 有的人说王思聪在选后宫,只抽女生。
  • 有的人从直觉出发说微博抽奖明显有猫腻,再怎么男生用户也不可能那么少。属于暗箱操作,虚伪抽奖,欺诈行为。
  • 有的人从历史数据中发现微博抽奖女生中奖的概率要比男生大得多,而且得出了少女 > 小孩 > 男人的用户价值鄙视链。发表了微博抽奖扭曲了价值观之类的言论。
  • 有的从新浪的角度出发,表明这只是新浪为了清除僵尸粉的措施,不小心把大部分男粉丝清除掉了。
  • 有的人认为抽到的都不是 ig 的粉丝,这样就像把演唱会门票送给不是粉丝的人一样,并不公平。

作为一名旁观者,如果没有一定的统计与概率论背景,不太容易明白他们在说什么,更不用说判断对错了。如果你本身就不喜欢微博,会更容易认同诋毁微博方的观点。不过,这种根据自己的喜好所得出的结论是自欺欺人而不是真相。统计学是一个工具,而且是可以根据使用者的主观意识去操控的工具。我希望通过这篇文章通俗地解释整个事件背后的原理,让读者得出自己的结论,独立思考远比随波逐流重要。更好的消息是,这篇文章不需要任何数学背景知识。可以说,只要在今年双十一懂得如何凑单,都能看懂。(好吧,凑单其实好难,😂😂)

小型微博

要知道这个抽奖有没有猫腻,我们先要知道怎么的结果是有问题的,怎样的是正常的。我们坐上时光机器,回到微博刚开始发展的时候,那时候微博一共只有 100名 用户,刚好 50名 男生 50名 女生,

男女

微博为了庆祝这个里程碑举办了一次抽奖活动,从所有用户中里面随机抽取 100名 中奖者。毫无疑问地,中奖者的男女比例一定是 1 比 1,因为把所有用户都抽到了,皆大欢喜。

慢慢越来越多人加入微博,现在已经有 1000名 用户,男女用户比例不变,还是 1 比 1。微博举行第二次抽奖,这时候还是从所有用户中随机抽取 100名 中奖者,那么这个时候,中奖者的男女比例是多少呢?我们不知道,有可能还是 1 比 1,有可能 60名女生,40名男生。也有可能全是女生。不需要用到数学公式,我们知道,男女用户数量相近的情况会比全是女生出现的概率要大。为什么?想象你参加一个游戏。

一个箱子里装了 50个 红色球代表女生 ,50个 蓝色球代表男生。充分混合后,要求从箱子里连续抽出 50个 红色小球。

额,这太难了吧。你说。因为抽的时候必须靠运气避开所有蓝色球。好吧,那我修改下规则,同样的条件下允许你错 10次,抽 50次 里面有 40个红色球就好。这虽然还是很难,但是要比一开始要简单,因为这种情况允许你犯错 10次,所以成功的机会更高。回到刚刚微博抽奖的问题,抽 100名用户,要求全部是女生的话,必须避开另外的 500名 男生用户。所以这种情况出现的概率比允许犯错(90名 女生,10名 男生)要出现的概率更低,具体多低呢?下面这个图片显示了中奖者女生数量出现的概率大小,越高代表概率越大。

normal_dis

我们可以看到中间 50 的高度最高,那么是不是抽到 50名 女生的概率最高呢?是,也不是,在考试中如果这样回答可能会得到满分,但这并不代表是事实。如果你手边有硬币的话,可以试试抛 10次,你会发现更有可能出现 6次 正面或者 6次 反面的情况,而不是刚刚好 5次 正面,5次 反面。奇怪,既然正反面出现的概率都是 50%,那为什么不是出现 5次 正面的概率最高呢?这和理论不符合。其实,这是因为这类图表没有列出所有的可能性,我重新绘制了一张新的图表,如下:

normal_dis2

新的图表中,中间是抽到 50名 女生的概率,最右边是抽到 100名 女生的概率。而最左边 +2 出现的概率最高,+2 的意思是一方比另一方多 2名 的情况,也就是抽到 49名 女生和抽到 49名 男生这两种情况的概率相加,你可能会问,这算一种情况吗?这就是现实问题有趣的地方,它跳脱于理论的束缚。这个抽奖如果抽到 100名 女生,我们会很惊讶。同时,如果抽到 100名 男生的话,我们也是同样地惊讶。我们更关注的是一边比另外一边多的数量,也就是相对的关系。抽到 49名 女生和 49名 男生 这两种情况都是一方比另一方多 2名。所以都属于一种情况。理解这点就能理解为什么硬币更容易出现 6次 正面或者 6次 反面,因为它们加起来出现的概率最高。

从图表中我们看到,抽奖中最有可能出现的是一方比另一方多一些这种情况,其次是两边相等的情况,再其次是两边差距非常大的情况。这个时候,我们需要定义什么是可信的抽奖结果,也就是回答我们一开始的问题,怎样的结果才是正常的?从统计上来说,一般我们会选取最有可能出现的 95% 的区间作为可信范围,也就是上图的黄色区域,最右边的白色区域虽然是可能发生的,但是由于发生的概率太低,我们认为这种情况,是不可信的结果。也就是说,如果这次抽奖抽到 99名 女生,100名 女生的结果都代表这次抽奖不可信。

现代微博

我们从时光机器中回到现代的微博,从微博 CEO 的微博中我们可以得知这次王思聪的抽奖转发参与的男女比例是 1 比 1.2

weibo_ceo

参加男女比例相近,那么出现如此悬殊的比例,可信吗?不可信,有的人说这是小概率事件,有可能发生。首先我们理解下什么是小概率事件。生活中最容易接触的就是彩票,假设中彩票头奖的概率是一千万分之一,那么从个人来说,如果只买一张的话就中头奖,这就是一个小概率事件。不过如果我们从整体来说,假设一共有 2000万 人买彩票,每人买 1注,那么中彩票这件事就不是一个小概率事件了。可以说每开一次奖,都很有可能有人中头奖。

那么抽到 112名 女生发生的概率是多少?我们要知道的是当微博抽奖有 2200万 人参加,男女比例 1 比 1.2,中奖者有 113名,其中 112名 都是男生或者都是女生的概率是多少。这是一个超几何分布的问题,没听过这个名词?没关系,因为我一开始也忘了。听起来复杂,最终只需要把上面的几个值代入一个公式就好,从结果来看,这个结果的概率低得难以置信,数字上来说是把 0.01% 中间再加多 30个 0。如果中彩票的概率是下图左边的圆,那么这个结果的概率就是右边那个点。

weibo_ceo

什么,没找到点?对啊,因为小到我根本画不了。形象地说,假设每秒都进行这样抽奖一亿次,对,一亿次,那么一亿年也不会抽到这样的结果。这样的极少概率事件的发生非常不现实。在上面的图表中也属于白色区域中,到这里,这样看来,抽奖结果并不可信。我们是否就能确定有人控制抽奖结果呢?

我们再看看这条微博,微博方解释,为了排除僵尸粉,微博赋予每名用户的权重都不一样,所以才会有那么悬殊的结果。权重是什么意思呢?我们可以这样理解,微博根据情况给每位参加的用户发不同注的彩票,自然,彩票多的人中奖的概率就高。这里的彩票就是权重。那么每位用户的权重怎么计算出来的呢?微博官方并没有给出公式,不过这里我们假设微博发现僵尸粉的特征是很少原创微博,微博很少被评论以及被转发。微博认为符合这类特征的就是僵尸粉。应该赋予低权重,反之则为活跃用户,应该赋予高权重,假设

彩票数量 = 近30天发布原创微博数量 x 10 + 微博被评论量 x 5 + 微博被转发量 x 2

通俗地来说原创微博发得越多,被评论或者转发越多,那么权重越高,中奖的概率就越高。从下图来看,给予活跃用户更高的权重这种方式确实排除了大量的僵尸粉。 two_overlap

但是这样的话,一些平时只浏览,很少发微博的人也会被降权。很多男生一般都是浏览微博,比较少发微博,微博无法分辨这是真人还是僵尸粉,只好抱着杀错一千也不放过的原则统一降权。如下图:

three_overlap

我们可以看到,活跃用户是女生的概率比男生要高得多,排除僵尸粉意味着排除更多的男生。如果提高男生中奖率的话那么也会提高僵尸粉的中奖率,允许僵尸粉中奖还是允许活跃用户中奖,微博选择了后者。我不知道微博是有意为之还是因为技术薄弱所以无法解决这个问题。不过如果这次抽奖抽到 10名 僵尸粉的话,对微博抽奖公信度的影响相信也会同样大。

多少倍

那么许多读者想知道的,一名女生的中奖概率是男生的多少倍呢?或者换个问法,一名女生的中奖概率最少是男生的多少倍, 112 比 1 这个抽奖结果才在可信区域呢。我们可以推理得知,当男女中奖概率一样的情况下,最有可能(中间)抽到的是 56名 女生。下面的图表显示了中奖女生数量的概率,其中黄色区域为可信范围。我们刚刚已经讨论过,这种情况下抽到 112 比 1 的结果是不可信的。

three_overlap

也就是说,我们需要计算当女生的中奖概率是男生的多少倍下,黄色区域右边的边界刚好能碰到 112。这不是一个简单的问题,因为需要计算累积概率。不过我们能用最容易想到的方法来解决。一个个地尝试,感谢 wanqi 老师的计算,通过几行简单的代码:

all = 22000000
k = 112
m = 19000000:all
cumulative = qhyper(0.95, m, all-m, k)
result = m[which.max(cumulative)] # 21506336
weight = result / (all-result) # 36.8

我们得知当女生中奖概率是男生的 36.8倍 的情况下,出现 112 比 1 这个结果是可信的。

half_half

big_small

总的来说,虽然看起来男女参加比例是 1 比 1.2,实际上,女生的中奖概率最少是男生的 36.8倍。这并不是新浪的性别歧视,而是它的无能为力。这个抽奖公平吗?看不同人的理解:

  • 活跃用户会觉得公平,因为他们经常觉得自己给微博带来更多了的流量,
  • 部分男生觉得不公平,因为他们的中奖率比微博眼中的活跃用户低得多。
  • 部分 IG 的粉丝觉得不公平,中奖者起码要喜欢 IG 才行,那么怎么才算喜欢呢?发过微博算喜欢吗?去过现场算更喜欢吗?这没有定量的标准。

结束

我最近作为老师参加广外 Coding girls club 的活动,我们用一天的时间免费教授学生用 Python 做数据分析,这是一个非常有趣的体验,有趣得能放上 Airbnb 做付费体验了。很多学生来自翻译专业,工商管理,她们大部分以后并不会成为程序员,那为什么要去学习数据分析,艾倫伯格在他的书《数学教你不犯错》中给了一个很好的回答:

“会数学就像戴上了X光眼镜,能从混乱无序的世界表象里,看透其后隐藏的结构。数学是一门不会把事情搞错的学问,它的技术与习惯经历过许多世纪的辛勤努力与论辩。一旦手中有数学当工具,你可以更深刻,更稳健,更有意义地了解世界。”

阅读完这篇文章,希望你能独立思考得到自己的结论 🎉🎉