当前位置:天才代写 > tutorial > 其他教程 > 美国大选倒计时:R语言和蒙特卡洛算法预测希拉里赢面高达89%

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

2017-12-03 08:00 星期日 所属: 其他教程 浏览:722

总统大选不到一周,本身来预测一下竞选功效照旧很有挺有趣的。固然关于选举,有的是博客和网站的预测,但确切汇报你他们毕竟用了什么模子,可能汇报你怎么做这个预测的却凤毛麟角。可是,我接下来就会这么做!
在本文中,我将以州为单元拆分竞选数据,向你展示如何利用投票功效模仿和预测哪位候选人大概会胜出。
我规划用统计编程语言 R 来实现这一切。R 能让你快速高效地阐明数据。要是你不体贴 R 也没有问,跳过代码部门,只看文字也行。
第一步:收罗数据预测大选我们需要的数据来历:
选举人团(electoral college)近期投票数据
你可以在许多处所找到上述相关信息。我用谷歌搜索快速查询了一下,在 Github 找到了一份很好的 SCV 文件。接下来就开始啦~好,我们已经弄清楚选举人团,接下来就是投票数据了!同样,要找到投票数据,处所也有许多,我选择的是 electionprojection.com。除了名字押韵,这个网站布局简朴,便于阐明数据。我从这个网站上抓去了每个州的数据,获得了一份大度的表单。好,我们已经弄清楚选举人团,接下来就是投票数据了!同样,要找到投票数据,处所也有许多,我选择的是  electionprojection.com。除了名字押韵,这个网站布局简朴,便于阐明数据。我从这个网站上抓去了每个州的数据,获得了一份大度的表单。
你可以在这里瞥见全面的代码(code snippet),但重要的是我利用的是 XML 包里的 readHTML Taable 函数。对付抓取网页上的表格来说,这种要领再好不外。譬喻,抓取佛罗里达州的投票数据要领如下:美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%你首先留意到的是,有些州比其他州投票越发频繁。这并没有什么好奇怪的。你要知道像阿拉巴马州(3 次)这种投票积聚对 Trump 有利,但影响很是小。对比之下,竞争剧烈的佛罗里达州(27 次)或宾夕法尼亚州(21 次),这里的新信息才会对我们的预测造成庞大的影响。第二步:抉择每个投票的影响第二步:抉择每个投票的影响要害的一点是我们需要为每次投票配置权重。一般而言,时间靠前的投票对比之下代价会不那么高。我们将用利用一种很是简朴但却十分有效的要领来实现这一点。
我们给每次投票都分派一直指数衰减权重(exponentially decaying weights)。听上去很锋利的样子,实际做起来很简朴。总之就是,时间离大选越近的投票,在预测中占的权重就越高。你可以把权重衰减当作这个样子:美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%
由上可知,当到了倒数第 7 次时,那次投票根基上就可以忽略不计了。权重衰减真正起的浸染的是个滑腻函数(smoothing function),思量的数据。虽然,要实现这一点要领许多,这次回收的只是最简朴快速高效的一种罢了。
第三步:模仿选举好戏开始了。我们接下来要模仿我们本身的选举。我不是要搞时间穿越,只是操作随机性而已。
我利用的是最简朴的蒙特卡洛模仿生成合成的竞选数据。再次声明,我用的这个要领十分简朴。预测大选功效较大的未知数,就是这些投票功效实际上有多精确。要是有了较准确的投票数据,大选那天我们只需要坐在家里看书就行了。但亏得上哪儿也找不着这种数据(可以说是一种幸运吧)!
因此,我们要做的是将找到的投票数据功效随机化,生成“what if”功效。这算不上是科学,但却为我们描画出一幅饱含大概性的烂漫功效。这算不上是科学,但却为我们描画出一幅饱含大概性的烂漫功效。
下面,从模仿选举 1 开始吧。
我们将首先按州来拆分数据。这显然是重要的,因为美国的选举不是由每个国民投票抉择的,而是由每个州的功效抉择的。一旦我们得到了州级的数据,我们将对每个州的投票加上权重,然后对每个州的候选人的总加权投票举办求和。最后,我们将对每个候选人投票利用随机变量以建设蒙特卡洛模仿。美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%一旦我们得到了州级的数据,我们将对每个州的投票加上权重,然后对每个州的候选人的总加权投票举办求和。最后,我们将对每个候选人投票利用随机变量以建设蒙特卡洛模仿。
利用一个平均值为 1、方差为 0.15 的正态漫衍来改变每个候选人的投票总数。虽然,尚有更好的要领来做到这一点(出格是当你有投票错误数据的陈诉时,但不幸的是我没有),但我想保持简朴。
我们将每个候选人的总数乘以这个数字,然后从头计较每个候选人在该州吸收的加权的公众投票的百分比。固然只是在模仿,但我们照旧做得跟真的一样,为每一方都利用官方代表颜色。支解出单个模仿的功效,你可以看到都是谁赢得了哪些州。
第四步:把上述步调反复 10000 次模仿一次选举是很酷,然而并没有什么用。更酷的是把这个模仿反复 1000 以致 1 万次。反复 1 万次增加了稀有事件表现的大概性——譬喻,加里·约翰逊赢得了大选。美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%让我们看看模仿 1 万次的功效:
希拉里赢:89&希拉里大获全胜(跨越对方 400 票及以上):0.11%特朗普大获全胜:0%
虽然,我们还可以继承下去,不外这样已经让你有一个直观的相识了。
还可以查察输出漫衍,从而更好地相识产生了什么。譬喻接管的 # 票数,你会看到以下漫衍:由上图可知,我们很是确定约翰逊将有 0 个选票(我很遗憾,加里)。再来看特朗普和希拉里。这是一个很好的要领来可视化敏捷度阐明。你可以看到每个候选人得到的理论上的较低、较高和大概的选举人票数。由上图可知,我们很是确定约翰逊将有 0 个选票(我很遗憾,加里)。再来看特朗普和希拉里。这是一个很好的要领来可视化敏捷度阐明。你可以看到每个候选人得到的理论上的较低、较高和大概的选举人票数。好啦,接下来谜底发表!谁会胜出?毫无意外,我们的模子预测希拉里将得胜,还不止一点点。不外,将这个功效与其他一些预测比拟,功效也很有趣:好啦,接下来谜底发表!谁会胜出?毫无意外,我们的模子预测希拉里将得胜,还不止一点点。不外,将这个功效与其他一些预测比拟,功效也很有趣:这是平均可能说最有大概的环境,但我们的模仿功效怎么说呢?模仿认为,希拉里有 89% 几率赢(可是留意,我从上周第一次写这篇文章时希拉里的几率但是 95%,有所低落)。这是平均可能说最有大概的环境,但我们的模仿功效怎么说呢?模仿认为,希拉里有 89% 几率赢(可是留意,我从上周第一次写这篇文章时希拉里的几率但是 95%,有所低落)。
每个州的环境对我来说最有趣的是,美国总统大选是按照每个州的功效来评判的。假如看一个候选人赢得模仿特定状态时间的百分比,我们获得这样的功效:美国大选倒计时:R 语言和蒙特卡洛算法预测希拉里赢面高达89%想要相识更多,代码在这里:https://gist.github.com/glamp/223ee1b5665b8ab8d90fc2786f4b6b44
看到这些模式表现出来十分有趣。这也没什么令人震惊的。本质上,在美国(和险些在任那里所)政治都是分区域性的。
凭据舆图将环境分成子区域可以把工作看得更清晰:最后几句
最后几句模仿到这里就竣事了!让我们拭目以待几天后的功效——虽然,预测什么的老是有趣。假如你也对模仿、投票或就是对阐明有乐趣,可以查察以下更多资料:
The code behind this postNY Times ForecastsThe Polls of the Future Are Reproducible and Open SourceA User’s Guide To FiveThirtyEight’s 2016 General Election ForecastFiveThirtyEight Election Forecast
接待插手本站果真乐趣群贸易智能与数据阐明群乐趣范畴包罗各类让数据发生代价的步伐,实际应用案例分享与接头,阐明东西,ETL东西,数据客栈,数据挖掘东西,报表系统等全方位常识QQ群:81035754

 

    关键字:

天才代写-代写联系方式