您好、欢迎来到现金彩票网!
当前位置:秒速时时彩开奖 > 算法语言 >

美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%

发布时间:2019-06-07 06:56 来源:未知 编辑:admin

  【新智元导读】美国总统大选近在眼前,上周新智元刊登相关文章《从未失手的 AI 预测:川普将赢得选举,入主白宫》引起很多争论。这次我们选择了一篇用 R 语言和蒙特卡洛算法等数据预测分析方法,对美国大选做预测的文章,同时附上 Gighub 代码。

  总统大选不到一周,自己来预测一下竞选结果还是很有挺有趣的。虽然关于选举,有的是博客和网站的预测,但确切告诉你他们究竟用了什么模型,或者告诉你怎么做这个预测的却寥寥无几。但是,我接下来就会这么做!

  在本文中,我将以州为单位拆分竞选数据,向你展示如何使用投票结果模拟和预测哪位候选人可能会胜出。

  我打算用统计编程语言 R 来实现这一切。R 能让你快速高效地分析数据。要是你不关心 R 也没有问,跳过代码部分,只看文字也行。

  你可以在很多地方找到上述相关信息。我用谷歌搜索快速查询了一下,在 Github 找到了一份很好的 SCV 文件。接下来就开始啦~

  你可以在这里看见全面的代码(code snippet),但重要的是我使用的是 XML 包里的 readHTML Taable 函数。对于抓取网页上的表格来说,这种方法再好不过。例如,抓取佛罗里达州的投票数据方法如下:

  关键的一点是我们需要为每次投票设置权重。一般而言,时间靠前的投票相比之下价值会不那么高。我们将用使用一种非常简单但却十分有效的方法来实现这一点。

  我们给每次投票都分配一直指数衰减权重(exponentially decaying weights)。听上去很厉害的样子,实际做起来很简单。总之就是,时间离大选越近的投票,在预测中占的权重就越高。你可以把权重衰减看成这个样子:

  好戏开始了。我们接下来要模拟我们自己的选举。我不是要搞时间穿越,只是利用随机性罢了。

  我使用的是最简单的蒙特卡洛模拟生成合成的竞选数据。再次声明,我用的这个方法十分简单。预测大选结果最大的未知数,就是这些投票结果实际上有多准确。要是有了精确的投票数据,大选那天我们只需要坐在家里看书就行了。但好在上哪儿也找不着这种数据(可以说是一种幸运吧)!

  因此,我们要做的是将找到的投票数据结果随机化,生成“what if”结果。

  我们将首先按州来拆分数据。这显然是重要的,因为美国的选举不是由每个公民投票决定的,而是由每个州的结果决定的。

  使用一个平均值为 1、方差为 0.15 的正态分布来改变每个候选人的投票总数。当然,还有更好的方法来做到这一点(特别是当你有投票错误数据的报告时,但不幸的是我没有),但我想保持简单。

  我们将每个候选人的总数乘以这个数字,然后重新计算每个候选人在该州接收的加权的民众投票的百分比。虽然只是在模拟,但我们还是做得跟真的一样,为每一方都使用官方代表颜色。分割出单个模拟的结果,你可以看到都是谁赢得了哪些州。

  模拟一次选举是很酷,然而并没有什么用。更酷的是把这个模拟重复 1000 乃至 1 万次。重复 1 万次增加了罕见事件浮现的可能性——例如,加里·约翰逊赢得了大选。

  还可以查看输出分布,从而更好地了解发生了什么。例如接受的 # 票数,你会看到以下分布:

  好啦,接下来答案揭晓!谁会胜出?毫无意外,我们的模型预测希拉里将获胜,还不止一点点。不过,将这个结果与其他一些预测对比,结果也很有趣:

  这是平均或者说最有可能的情况,但我们的模拟结果怎么说呢?模拟认为,希拉里有 89% 几率赢(但是注意,我从上周第一次写这篇文章时希拉里的几率可是 95%,有所降低)。

  对我来说最有趣的是,美国总统大选是根据每个州的结果来评判的。如果看一个候选人赢得模拟特定状态时间的百分比,我们得到这样的结果:

  看到这些模式浮现出来十分有趣。这也没什么令人震惊的。本质上,在美国(和几乎在任何地方)政治都是分区域性的。

  模拟到这里就结束了!让我们拭目以待几天后的结果——当然,预测什么的总是有趣。如果你也对模拟、投票或就是对分析有兴趣,可以查看以下更多资料:

http://homeschoolwwh.com/suanfayuyan/209.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有