Andrew Gell-Mann发现FiveThirtyEight模型存在问题

2020-10-26 00:20:30

我们在FiveThirtyEight选举预测中写了一些奇怪的尾巴行为,例如,它给乔·拜登3%的机会赢得阿拉巴马州(看起来很高),它显示特朗普赢得加州的可能性是“我们模型认为可能的范围”(这看起来不正确),它允许拜登可能赢得除新泽西州以外的所有州(?),以及在特朗普赢得加州的情况下,他只有60%的机会赢得选举(似乎太低了)。

我的猜测是,这些古怪的边际和有条件的概率来自于FiveThirtyEight团队在州一级的预测中添加了独立的宽尾误差:这与FiveThirtyEight领导人Nate Silver的声明是一致的,“我们认为做出相当保守的选择是合适的,特别是在涉及到分布的尾部时。”宽尾使得特朗普赢得加州等奇怪的预测成为可能。这些额外误差项的独立性将产生条件概率,例如上面的新泽西州和加利福尼亚州的情况。我认为,如果特朗普赢得新泽西州,甚至是加利福尼亚州,这很可能只是斯科特·亚当斯或其他人设想的全国压倒性胜利的一部分。但如果有独立的错误,特朗普赢得新泽西州或加利福尼亚州只会是其中之一,这只是一种侥幸,它提供的关于全国摇摆的信息很少。

如果你去那里看,你真的只能在预报的尾部看到这种行为。例如,如果您计算状态预测器的相关矩阵,这主要是从分布的质量估计的,因为极端尾部只贡献了一小部分概率。请记住,相关性取决于您在发行版中的位置。

无论如何,这就是我们在几天前的情况,评论员Rui指着FiveThirtyEight网站上的一个文件,其中有50个州(以及华盛顿特区以及缅因州和内布拉斯加州的国会选区)预测票数向量的4万个模拟数据。

我下载了该文件,将其读入R,并创建了我需要的变量:

库(";rjson";) SIMS_538<;-from JSON(file=";simmed-maps.json";) 州<;-SIMS_538$州 N_SIMS<;-Length(SIMS_538$MAP) SIMS<;-array(na,c(n_SIMS,59),dimname=list(null,c(";";,";Trump";,";拜登";,各州)) 对于(i in 1:N_SIMS){ SIMS[i,]<;-SIMS_538$maps[[i]] } STATE_SIMS<;-SIMS[,4:59] Trump_Share<;-(STATE_SIMS+1)/2 拜登_WINS<;-STATE_SIMS<;0 特朗普_WINS<;-STATE_SIMS>;0。

作为快速检查,让我们按州计算拜登的获胜概率:

>;四舍五入(Apply(Biden_Wins,2,Means),2) AK AL AR AZ CA CO CT DC DE FL GA HI IA ID IL in KS KY LA M1 M2 MA MD ME MI 0.20 0.02 0.02 0.68 1.00 0.96 1.00 1.00 1.00 0.72 0.50 0.99 0.48 0.01 1.00 0.05 0.01 0.06 0.98 0.51 1.00 1.00 0.90 0.92 MN MO MS MT N1 N2 N3 NC Nd Ne NH NJ NM NV NY OH。OK或PA RI SC SD TN TX UT 0.91 0.08 0.10 0.09 0.05 0.78 0.00 0.67 0.01 0.01 0.87 0.99 0.97 0.90 1.00 0.44 0.01 0.97 0.87 1.00 0.11 0.04 0.03 0.36 0.04 VA VT WA WI WV WY 0.99 0.99 0.99 0.86 0.01 0.00

看起来差不多对了。不完美-我不认为拜登赢得阿拉巴马州的可能性真的高达2%-但这是FiveThirtyEight给我们的,四舍五入到最接近的百分比。

>;条件<;-trump_wins[,";NJ";] >;ROUND(APPLY(TRUNP_WINS[条件,],2,Mean),2) AK AL AR AZ CA CO CT DC DE FL GA HI IA ID IL in KS KY LA M1 M2 MA MD ME 0.58 0.87 0.89 0.77 0.05 0.25 0.10 0.00 0.00 0.79 0.75 0.11 0.78 0.97 0.05 0.87 0.89 0.83 0.87 0.13 0.28 0.03 0.03 0.18 MI MN MO MS MT N1 N2 N3 NC Nd NE NH NJ NM NV NY OH OK或PA。RI SC SD TN 0.25 0.38 0.84 0.76 0.76 0.90 0.62 1.00 0.42 0.96 0.97 0.40 1.00 0.16 0.47 0.01 0.53 0.94 0.08 0.39 0.08 0.86 0.90 0.85 发送UT VA VT WA WI WV WY 0.84 0.91 0.16 0.07 0.07 0.50 0.78 0.97。

因此,如果特朗普赢得新泽西州,他赢得阿拉斯加的机会是。。。58%?这比他在输掉新泽西的条件下赢得阿拉斯加的机会要小。

那是怎么回事?怎么可能呢?让我们来绘制一下特朗普在这两个州的得票率的模拟情况:

PAR(mar=c(3,3,1,1),mgp=c(1.7,0.5,0),tck=-.01) 标准杆(Pty=";s&34;) Rng<;-range(trump_share[,c(";NJ";,";AK";)]) Plot(RNG,RNG,xlab=";特朗普在新泽西的投票份额,Ylab=#34;特朗普在阿拉斯加的投票份额,main=#34;40,000模拟抽签";,cex.main=0.9,bty=";l";,type=";n";) 多边形(c(0.5,0.5,1,1),c(0,1,1,0),BORDER=NA,COL=";粉色";) Points(Trump_Share[,";NJ";],Trump_Share[,";AK";],PCH=20,cex=0.1) 文本(0.65,0.25,";特朗普赢得新泽西州,COL=";深红色";,cex=0.8) 文本(0.35,0.25,";特朗普输掉新泽西州,ol=";Black";,cex=0.8)。

散点图太密集,中心无法读取,所以我将随机挑选1000个模拟,并将其绘制成图表:

子集<;-示例(n_sims,1000) Rng<;-range(trump_share[,c(";NJ";,";AK";)]) Plot(RNG,RNG,xlab=";特朗普在新泽西的投票权份额,Ylab=";特朗普在阿拉斯加的投票权份额,main=#34;只有1000个模拟抽签";,cex.main=0.9,bty=";l";,type=";n";) 多边形(c(0.5,0.5,1,1),c(0,1,1,0),BORDER=NA,COL=";粉色";) 积分(TRUP_SHARE[SUBSET,";NJ";],TRUP_SHARE[SUBSET,";AK";],PCH=20,cex=0.1) 文本(0.65,0.25,";特朗普赢得新泽西州,COL=";暗红色";,cex=0.8) 文本(0.35,0.25,";特朗普输掉了新泽西州,COL=#34;Black&34;,cex=0.8)。

但从上面40,000个模拟的图表来看,尾部的相关性似乎是负的。去想想吧。

好吧,好吧。我只是碰巧看了看阿拉斯加,因为它在名单上排在第一位。让我们看看紧挨着新泽西州的一个摇摆州。。。宾夕法尼亚州。

好的,如果特朗普在新泽西州获胜(可能性极小),他在宾夕法尼亚州获胜的可能性从13%上升到39%。三倍!但是。。。这是不够的。远远不够。目前,FiveThirtyEight模式让特朗普在宾夕法尼亚州获胜的可能性为13%。宾夕法尼亚州是一个摇摆州。如果特朗普在新泽西州获胜,那么一些特别的事情正在发生,宾夕法尼亚州对共和党来说应该是一个灌篮。

宾夕法尼亚州和新泽西州的模拟是相关的。只是还不够。至少,这看起来还是不太对劲。我认为,如果特朗普在新泽西州的支持率比预期高出10个百分点,他显然会成为宾夕法尼亚州的热门人选。

所以,当然,如果相关性只有0.43,这几乎是有意义的。如果将新泽西州的特朗普从40%转变为50%,那么宾夕法尼亚州从这些模拟中预期的转变将只有0.43*10%,即4.3%。但是FiveThirtyEight预测特朗普在宾夕法尼亚州的支持率将达到47%,所以增加4.3%将使他超过榜首,至少在预期中是这样。那么,为什么条件概率Pr(特朗普赢得宾夕法尼亚州|特朗普赢得新泽西州)只有43%,而不是超过50%?再一次,有一些奇怪的事情发生在尾巴上。再看看上面的图:在范围的中心,x和y是强相关的,但在尾部,相关性消失了。某种模型的人工制品。

这些更有意义。这两种状态之间的模拟相关性是健康的0.81,下面是散点图:

在这一点上,我绘制了所有50个州的相关矩阵。但这太多了,所以我选择了几个州:

我粗略地从西到东、从北到南进行了排序,然后标出了它们:

COR_MAT<;-COR(TRUMP_SHARE[,SOME_STATES]) Image(cor_mat[,rev(1:nrow(Cor_Mat))],xaxt=";n";,yaxt=";n";) AXIS(1,序号(0,1,Length=Length(SOME_STATES)),SOME_STATES,tck=0,cex.ax=0.8) AXIS(2,序号(0,1,LENGTH=LENGTH(SOME_STATES)),REV(SOME_STATES),tCK=0,cex.axis=0.8,LAS=1)

附近各州的相关性更高。这事儿可以理解。新泽西州和阿拉斯加州相距甚远。

但是。。。嘿,华盛顿和密西西比怎么了?如果新泽西州和正义与发展党的关联度基本上为零,这是否意味着华盛顿和密西西比州的预测关联度是零?。。阴性吗?

如果特朗普完成了本世纪的颠覆,赢得了华盛顿的支持,他在密西西比州的前景似乎就不会那么美好了。

Rng<;-range(trump_share[,c(";WA";,";MS";)]) Plot(RNG,RNG,xlab=";特朗普在华盛顿的投票权份额,Ylab=";特朗普在密西西比州的投票权份额,main=#34;40,000模拟抽签";,cex.main=0.9,bty=";l";,type=";n";) 多边形(c(0.5,0.5,1,1),c(0,1,1,0),BORDER=NA,COL=";粉色";) 积分(TRUNP_SHARE[,";WA";],TRUNP_SHARE[,";MS";],PCH=20,cex=0.1) 文本(0.65,0.3,";特朗普赢得WA";,COL=";暗红色";,cex=0.8) 文本(0.35,0.3,";特朗普输掉了WA&34;,COL=#34;Black&34;,cex=0.8)。

我最初的猜测是,FiveThirtyEight团队正在给各州增加独立的长尾错误,而这种独立性就是为什么你可以得到像特朗普可能赢得加州但仍然输掉全国大选这样的神器。

但是,在仔细研究之后,我认为这是故事的一部分-参见上面的新泽西州/宾夕法尼亚州图表-但不是全部。此外,模拟中的许多状态间相关性都很低,有时甚至是负的。这些低相关性反过来解释了为什么尾部如此宽(导致对拜登赢得阿拉巴马州等的高估计):如果FiveThirtyEight团队正在调整州一级模拟的方差,以获得他们认为在全国一级合理的不确定性,那么他们就需要增加州一级的不确定性,因为这些低相关性将导致它们基本上抵消在全国平均水平上。增加州与州之间的相关性,你就可以减少每个州的预测方差,同时仍然可以在全国范围内得到你想要的结果。

但是这些相关性又是怎么回事呢?为什么我说密西西比州和华盛顿州的选举结果之间有-0.42的相关性是不合理的?这是因为不确定性不是这样起作用的。当然,密西西比州一点也不像华盛顿。这不是重点。关键是,预测中的不确定性从何而来?它来自于民调可能相差甚远的可能性,以及在竞选的最后几周可能会出现巨大波动的可能性。我们预计每一项都会有正相关性,特别是如果我们谈论的是大转变的话。如果我们真的被告知特朗普赢得了华盛顿,那么,不,我不认为这是他在密西西比州遇到麻烦的迹象。我也不会把新泽西州和宾夕法尼亚州的投票结果归为零相关性。

多想想这件事。。。我猜各州的民调误差可能是负相关的。毕竟,2016年的民调误差在一些州是正的,在另一些州是负的;参见我们的19件事文章的图2。但我预计,观点的转变主要是全国性的,而不是全州范围的,因此与各州之间的关联性很高。还有很大的错误。。。我希望他们表现出一些相关性,即使在新泽西和阿拉斯加之间也是如此。再说一次,我认为特朗普赢得新泽西州或华盛顿州的消息将伴随着全国范围的重新评估,而不仅仅是该州民调中的一些重大失误。

无论如何,FiveThirtyEight的关联矩阵似乎充满了艺术品。这些奇怪的关联是从哪里来的?我没有头绪。也许代码中有错误,但更有可能的是,他们只是提取了一堆州级别的变量并计算了它们的相关矩阵,而没有仔细考虑这与预测目标之间的关系,也没有太仔细地查看正在发生的事情。过去几个月,我们和其他人在FiveThirtyEight的预测中指出了各种不可信之处(比如特朗普赢得新泽西州,但输掉了所有其他州的臭名昭著的地图),但我猜,一旦他们有了预测,他们就不想听到它的问题了。

或者也许我在我的数据争论中搞砸了。我的代码在上面,所以请随意看一看。

就像我一直说的那样,这些型号有很多活动部件,很难全部记录下来。我们的模型也不完美,即使在选举结束后,也很难评估不同的预测。

练习展示的一件事是将细粒度推论放到网上的好处。如果你幸运的话,一些博客作者可能会免费分析你的数据!

为什么要在一些预测的肠子里根深蒂固地做以上所有的努力呢?

2.分析并没有花太长时间。但后来确实又花了一个小时左右的时间才把它写出来。沉没成本谬论等等。也许下一次,在做这样的分析之前,我也应该估计一下写作时间。有点像当你拿到你想要的卡片时,如果你不准备留在家里,你就不应该在转弯的时候买卡片。

3.教学。是的,我知道我的R码很难看。但是难看的代码仍然比没有代码更容易理解。我觉得这类帖子是有帮助的,因为它为我们如何进行实时数据分析提供了一个模型,即使在这种情况下,数据只是别人黑匣子的输出。

让我强调一下,我们不是在和FiveThirtyEight竞争。我的意思是,“经济学人”确实在与FiveThirtyEight或其母公司ABC新闻竞争-但我不是在竞争。到目前为止,“经济学人”给了我0美元。撇开商业竞争不谈,我们都有一个共同的目标,那就是在现有数据的情况下评估未来的不确定性。

我希望两个组织都尽其所能。“经济学人”与FiveThirtyEight有着不同的外观和感觉-仅举个例子,你大概就能猜到这些杂志中谁赢得了上次总统辩论的头条新闻?我们与益普索(Ipsos)合作,在候选人上台前后对选民进行了民意调查。这篇报道的标题是唐纳德·特朗普(Donald Trump)和乔·拜登(Joe Biden)按下静音按钮。但由于4900万人已经投票,在最后一场辩论中值得称赞的表现可能不会有太大改变。但是,在他们的资源和激励措施的限制下,总有改进的可能性。

另外,关于密西西比州和华盛顿州的评论中有很多讨论,这很好,但问题不仅仅是这两个州。它与许多在联合分配中行为古怪的州,如新泽西和阿拉斯加,这是我们开始的地方。根据FiveThirtyEight模式,特朗普预计将在新泽西州大败,在阿拉斯加是最受欢迎的,获胜几率为80%。但该模型还表示,如果特朗普在新泽西州获胜,他在阿拉斯加获胜的几率将降至58%!那不可能是对的。至少,这看起来不太对劲。

再说一次,当事情看起来不对劲时,我们应该仔细检查我们的模型。统计预测是不完美的人类产品。他们可能会出错,这并不令人惊讶。世界是复杂的。当一小群人匆忙组装一个复杂的模型时,如果它没有问题,我会大吃一惊的。我和我的合作者建立的模型都有问题,当人们向我们指出这些问题时,我很感激。我不认为指出他们模式中的问题是对FiveThirtyEight团队的侮辱。一如既往:我们从错误中吸取教训。但只有当我们愿意这样做的时候。

我们的[Five30]相关性实际上是建立在微观数据的基础上的。“经济学人”的人不断地对我们的模型做出奇怪的假设,如果他们费心阅读方法论,他们可能会意识到这些假设是不正确的。

我确实试着阅读了方法论,但很难跟上。这不是奈特的错,只是很难跟上任何记录。很多人在阅读我的文章时也有问题。这就是为什么分享代码和结果是件好事。我们不得不不断猜测他们在FiveThirtyEight上做什么的一个原因是,代码是秘密的,直到最近,我才知道状态结果的模拟。我之所以写上面的帖子,是因为一旦我有了这些模拟,我就可以探索更多。

我确实认为看看一个人的边缘案例是很重要的!但“经济学人”(Economist)的人往往会提出更具争议性的东西,而不是错误的东西,我非常肯定,就我们模型的要点而言,这些东西在方向上是正确的,即使你可以对实施提出异议。

我真的不知道他所说的更具争议性而不是错误的意思是什么。";我只是认为(A)他们模型中的一些预测没有意义,(B)一些预测没有意义并不令人震惊,因为这就是建模在现实世界中的运作方式。(B)我不知道他所说的更具争议性,而不是错误。我只是认为,(A)他们的模型中的一些预测没有意义,以及(B)一些预测没有意义并不令人震惊,因为这就是建模在现实世界中的表现方式。

此外,我不知道他所说的方向正确的做法是什么意思,就我们的模式而言,这是一种正确的方式。他的模式说,如果特朗普赢得新泽西州,他只有58%的机会赢得阿拉斯加。现在他说,从方向上讲,这是正确的方法。这是否意味着他认为,如果特朗普赢得新泽西州,他在阿拉斯加获胜的机会就会下降,但可能不会降至58%?也许会从80%降到65%?还是从80%到40%?问题是,我认为它根本不应该下跌。我认为,如果事情真的发生,特朗普在新泽西州获胜,他赢得阿拉斯加的机会应该会增加。

在我看来奇怪的是,内特对这个违反直觉的结果如此确信,以至于他如此确信方向是正确的。再说一次,他的模型很复杂。很多活动部件!为什么很难相信它可能在某个地方搞砸了?太让人沮丧了。

另外,让我再说一遍:我在这里看不到竞争。内特正在尽他最大的努力,他有很多时间和资源限制,他管理着一个完整的团队,还需要关注公共沟通,媒体推广等。

我的猜测是,内特并不真的认为,如果特朗普赢得新泽西州的胜利,他赢得阿拉斯加的可能性就会降低。这只是因为他现在真的很忙,与其说担心他的预测错在哪里,不如说他确信自己的预测在方向上是正确的。我很清楚,要修补一个模型而不让它变得更糟,真的很难。例如,他可以通过添加国家误差项或添加国家和地区误差项来增加州与州之间的相关性,但随后他必须减少每个州内的差异以进行补偿,然后有很多事情需要检查,有很多新的方法会出错-更不用说向世界解释你已经改变了预测方法的挑战。实际上,更简单的做法是牢牢关上潘多拉的盒子,假装它从未被打开过。

我希望在选举结束后的某个时候,内特和他的团队会更仔细地考虑这些问题,并以某种方式修正他们的模式。我真的希望他们开源,但即使他们保守秘密,只要他们发布他们的预测性模拟,我们就可以查看相关性,并试图提供帮助。

同样,他们也可以帮助我们解决问题。如果我们的模型中有任何内特认为不合情理的特定预测,他应该随时让我们知道,或者张贴到我们会找到的地方。几个月前,他评论说,我们拜登赢得普选的可能性似乎太高了。我们调查了一下,决定内特。

.