我们生活在陌生的时代。 在撰写这篇文章时,我已经 #WFH 整整两个星期了。 曾经繁华的城市现在就像鬼城一样。 电视和社交媒体都充斥着一个话题:Covid-19,更通俗地称为冠状病毒(尽管它只是其中之一)。
虽然这场流行病确实带来了很多焦虑和困难,但它也带来了一些有趣的挑战。 感谢约翰霍普金斯大学和其他研究人员等研究人员,我们每天都能获得来自世界各国确诊病例数量的数据。 这对于像我这样的数据迷来说是一个福音! 但这也可能是一种诅咒。 我们中的许多人将获取这些数据并使用它来运行,不顾一切地创建各种图表和模型,然后继续使用这些结果对大流行的范围和严重性做出古怪的说法。 最近几天,我的推特上充斥着专家,他们点出弊大于利的图表和文章,它们比任何病毒都更快地传播恐惧。 套用我发现的一句话,“很多数据,即人们在完成这一切后将不得不进行一些反省”( https://twitter.com/wisevis/status/1237021575926472704 )。
这并不是说绘制和分析数据无论如何都是错误的。 我工作在JMP ,一个充满数据迷的地方,其中许多人正在跟踪和绘制数据。 快速浏览JMP 公共将揭示许多惊人的图表,精心准备以信息丰富的方式呈现数据而不会引起警报。 事实上,我们自己的拜伦·温格德最近举办了一次网络研讨会并写了自己的博文正确绘制 Covid-19 数据。 我强烈建议您检查一下,因为他提出了几个出色的观点,并且以前对此类数据有过经验。 所有这些之间的一个共同点是它们仅可视化当前数据。 没有建模,没有预测。 都非常安全。
好吧,无畏的读者,我必须承认我并不安全。 正如某个著名的卡通鸭子所说,我“变得危险了”。 这是正确的… 我制作了预测模型。
边缘生活
现在,在你拿起你的火把和干草叉之前,听我说完。 在制作这些预测模型时,我之前无意将它们公开。 它们仅供我私人使用。 事实上,我现在分享它们的原因是为了准确地说明你为什么不应该一开始就对他们充满信心。 正如 George Box 雄辩地指出的那样,“所有模型都是错误的,但有些模型是有用的”。 是的,我知道这句话被使用和滥用的次数太多了,但我希望我将要向您展示的内容可以让您重新认识它。 仅仅因为你拟合了一个模型并且所有指标都指向它是高度准确的,并不意味着它是正确的。
在我们深入研究之前,先了解一些背景信息。 我一直使用的数据是约翰霍普金斯大学在他们的GitHub 网站从 2020 年 1 月 22 日开始。 正如许多人之前所说,计数只有在测试全面时才会准确。 换句话说,有限的测试意味着可信度较低的数据。 此外,出于我希望是显而易见的原因,我没有,也不打算对累积死亡人数进行建模。
第 1 课:了解自己的极限
在选择如何对累积确认计数进行建模时,我根据我非常非常基本的流行病学知识选择了我的模型。 毫无疑问,您听说过人们使用指数模型。 该模型适合我们一直在经历的确诊病例中的快速加速。 但是,我没有使用这样的模型有一个很好的理由:它在物理上根本不准确。
请允许我用一些真实数据来说明。 下图显示了指数(绿色,假设这是人们正在谈论的模型)和逻辑(蓝色)符合意大利确认的计数(截至 2020 年 3 月 22 日)。

请注意,两个模型都非常适合数据。 然而,指数模型继续无限增长,而逻辑模型最终稳定在某个更高的值。 流行病学家用来描述在人群中传播的疾病行为的最简单模型是SIR模型. 该名称来自于人群的划分方式:易患疾病、感染疾病和远离疾病。 基本思想是,有一些固定的人群容易感染某种新疾病,其中很大一部分人将过渡到感染和移除阶段(通过康复或……)。 如果您实施这样的模型并跟踪受感染个体的累积计数,您最终会得到看起来很像逻辑曲线的东西。 这完全是因为一个关键事实:人口规模是固定的。 请注意,指数模型像超级英雄一样继续上升,上升和消失,没有注意到任何可能试图反对它的所谓人口阈值。 这显然与现实不符,因为已采取措施阻止感染或整个人口都被感染,因此感染的累积数量将不得不在某个时候趋于平稳。
您还可以从其他几个来源清楚地看到这种行为。 来自中国的记录数据显然遵循了这一趋势。 甚至原版中显示的曲线扁平化曲线和现在著名的模拟华盛顿邮报文章甚至这个惊人的扩大在每日计数中显示这种趋势(这转化为我在上图中显示的累积计数行为;想想该曲线的一阶导数)。 所以,总而言之,我没有使用指数模型。 相反,我从逻辑模型开始。
这并不是说逻辑模型或任何其他 sigmoid 模型(sigmoid = S 形)也不是没有弱点。 在过于煽动性方面的指数错误的情况下,逻辑会在过于乐观的方面犯错。 任何 sigmoid 模型都可以大致分为三个基本部分:增长率、拐点和渐近线。
第一部分是不言自明的:累积总数从 0 增加的速度有多快。 这部分是两个模型唯一的共同点。 第二部分,拐点,是模型中增长率开始从快到慢转变的点。 在上图中,逻辑模型的拐点大约是最后一个点所在的位置,就在曲线的中间。 就每日计数而言,这是病例数达到峰值然后开始下降的地方。 最后一部分,渐近线,是可能发生的最大情况。 就每日计数而言,病例数最终降至零(或至少是非常小的数字)。
显然,渐近线和增长率可能是该模型中最受欢迎的两个方面,因为它们告诉您预期的总病例数以及多快。 事实上,渐近线可能更受欢迎,因为它告诉你你应该期望事情有多糟糕。 然而,这也是最大的弱点。 太低的渐近线会让你产生一种错误的安全感和理解感。 事实上,我认为拐点更重要。 如果您不知道拐点在哪里,那么如果您使用的是指数模型,那么您将处于没有更好的位置。 当我们查看数据时,我将进行更多解释。
总之,构建模型的第一课是不仅要了解数据的限制,还要了解模型的限制。 如果您了解模型的工作部分,您就会了解它的优势和劣势,最重要的是,它可能会崩溃。 此外,了解模型运行的环境也很重要。 与快速现成的模型相比,应尽可能首选更符合主题专业知识的模型。 最后,了解您的模型将如何被解释、使用以及可能被滥用。 在这种大流行的背景下,指数模型表明没有复苏的希望;一个逻辑模型说它会消退。 这只是时间问题。
第 2 课:没有计划能在战场上幸存
日期:2020 年 3 月 23 日。 时间:我猜是凌晨? 没关系。 上周末,我已经在使用 JMP 中的 Fit Curve 平台来处理数据并尝试 Logistic 模型拟合(对于那些在家跟随的人来说,这是 Logistic 3P 模型)。 那个星期一,我决定对我的模型进行测试。
现在,我只对来自四个地点的数据进行建模:意大利(当时病例数仅次于中国)、纽约、加利福尼亚(两个有大量确诊病例的州)和北卡罗来纳(因为我当然会)。 虽然我使用相同的模型形式,但我确保每个位置都有自己的参数估计值(使用位置作为按组)。 这是我在自然分组中拟合模型时的自然倾向。 它还反映了这样一个事实,即每个位置都是独一无二的,应该彼此区别对待。 意大利的检测和治疗方式与美国有很大不同,甚至在各个州之间也存在差异。 数据建模应反映这一事实。
以下是我使用截至 2020 年 3 月 22 日的每日累积计数得到的拟合,大约两个月的数据:

看看这些合身有多神奇! 我只能听到报告说“这是什么?! 如此干净的数据全部排列整齐,表现得非常好。 还有那近乎完美的趋势?! 哦,多么美好的一天! 如此精妙的数据,先生,值得表扬! 太棒了,好先生,太棒了!”我敢打赌,许多数据分析师会看到这一点,并嫉妒这些拟合有多近乎完美。 谁该怪他们? 看看数据看起来有多干净! 如果我没有得到这么好的合身,我会感到惊讶!如此低的 p 值加上 R^2 值非常接近 1,这些模型应该是正确的,对吧? 出色地…
正如你可能从我明显讽刺的语气中猜到的那样,这些模型并不是指标所声称的宝石。 我们可能出现问题的第一个警告信号是查看参数估计本身。 注意每个位置的拐点估计值(记得我说过这是最重要的参数)。 它们都大致相同……它们都是记录数据的最后一天。 是的,该模型说您恰好抓住了病例率开始放缓并且病例应该很快开始减少的时刻! 多么幸运! 再次为讽刺的语气道歉,但很明显这是模型估计过程的侥幸。 事实上,在我写这篇博客之前,我什至没有注意到它。 就这么容易错过。
但是让我们假装那天你和我一样,错过了那个重要的事实。 估计模型后,我意识到我将有机会通过跟踪模型预测与未来几天的实际计数来测试它。 所以,这正是我所做的。
周二早上(请注意,获取计数数据会有一天的延迟……这就是它的本质),我输入前一天的计数并将它们与我的模型预测进行比较,以及逐点 95% 的置信区间(因为没有不确定性的预测是失去我的统计执业执照的快速方法)。 那我过得怎么样?
地点
|
实际计数
|
预言
|
降低 95%
|
95% 上
|
意大利
|
63927
|
64721.72
|
63662.40
|
65781.04
|
美国加利福尼亚
|
2108
|
1829.92
|
1758.63
|
1901.21
|
美国纽约
|
20884
|
19171.40
|
18616.80
|
19726.00
|
美国北卡罗来纳州
|
353
|
386.29
|
367.21
|
405.37
|
一天。 有一天,我的准确率下降到区区 25%。 我所有的美国模特几乎立刻就被轰炸了。 加利福尼亚和纽约模型低估了真实数量,而北卡罗来纳模型高估了真实数量。 意大利模型在技术上也高估了真实数据,但不确定性下限仍然可以捕捉到它。 但是,嘿,也许这一切都只是侥幸? 也许实际上数据的噪音比乍一看更多,我只需要给模型时间来启动,对吧?
这是截至周四计数的本周剩余时间的数据。
地点
|
天
|
实际计数
|
预言
|
降低 95%
|
95% 上
|
意大利
|
周二
|
69176
|
70487.69
|
68933.02
|
72042.36
|
周三
|
74386
|
76058.94
|
73906.42
|
78211.46
|
周四
|
80589
|
81345.24
|
78513.24
|
84177.24
|
美国加利福尼亚
|
周二
|
2538
|
2041.74
|
1925.52
|
2157.95
|
周三
|
2998
|
2238.73
|
2067.96
|
2409.51
|
周四
|
3899
|
2415.94
|
2184.81
|
2647.07
|
美国纽约
|
周二
|
25681
|
21698.12
|
20692.37
|
22703.87
|
周三
|
30841
|
23357.28
|
21946.15
|
24768.41
|
周四
|
37877
|
24361.26
|
22648.06
|
26074.46
|
美国北卡罗来纳州
|
周二
|
495
|
461.98
|
422.16
|
501.77
|
周三
|
590
|
530.14
|
463.68
|
596.59
|
周四
|
738
|
586.96
|
491.78
|
682.14
|
太好了……前景肯定看起来不太好。 至少在几天内,我有 4 分中的 2 分是正确的。 但是,总的来说,我的模型表现得很糟糕。 尤其是加利福尼亚和纽约的模型,它们严重低估了真实数据。
“我是怎么回答的?”,你可能会问。 “我指的是你”,你也可以澄清一下。 我是否蜷缩成一堆,每天看着我的大多数模型坠毁和燃烧,从残骸中升起烟雾和火焰? 实际上,我对结果印象深刻。
虽然听起来很矛盾,但我发现这是一个完美的例子,说明为什么你不应该盲目相信我们在模型评估中使用的指标。 它还提供了一个很好的理由,为什么您应该始终验证和测试您的模型,无论指标看起来多么完美。 这就是为什么交叉验证等技术在统计建模界如此流行的原因。 你可以拥有最漂亮的模型,它几乎完美地拟合了数据。 但是一旦无法做出准确的预测,那就完全是垃圾了。 模型的好坏取决于其超越数据的预测能力。
敬请关注…
那么接下来会发生什么? 我们的英雄将如何从这场悲剧中崛起? 有什么新的挑战在等着他? 他将学到什么新的教训? 而且,最重要的是,我什么时候才能回到办公室?
查看本系列的下一部分,在这里我讨论了更多的经验教训,并希望能回答你所有的问题。 除了最后一个。 正如你所清楚地看到的,我无法给你一个诚实的答案。
伟大的文章迦勒! 期待后续。 我们在桑迪亚想念你!
谢谢@matteo_patelmo !
我很高兴看到你玩不同的模型。 这实际上是我将在后续帖子中讨论的内容。 我实际上使用的和你一样,所以这让我觉得我在正确的轨道上。 事实上,Logistic 模型和 Gompertz 模型都是广义逻辑模型,我也开始使用了。 它有一个额外的参数会影响发生最大增长率的位置。 我也计划在我的后续帖子中讨论它,但我很想看看它如何与您的数据一起使用。
我曾考虑过交叉验证,但我不确定它以最常见的形式在这里表现如何。 您可以做的最接近的方法是将一部分最新数据子集并将其用于验证。 就像@russ_wolfinger 在周五的 JMP On Air 演示中所做的那样,他使用上周的数据进行验证。
你好@calking ,非常有趣的帖子。
我还对用于预测 covid19 病例的模型的预测准确性进行了一些尝试,并希望与社区分享我的发现。
我将 Logistic 3P 与 Gompertz 3P 的能力进行了比较,后者根据截至某个日期收集的数据预测未来数据的能力。下图显示了意大利受灾最严重的伦巴第大区的结果。曲线表示对第 95 年(4 月 5 日)的预测,数据在一年中的某一天(x 轴)可用。4 月 5 日,伦巴第的实际病例总数为 49118 例。
Gompertz 3P 模型(顺便说一下,AICc 始终是最低的)已经高估了这个值很多天,并在最近几天收敛到实际值。另一边的物流 3P 总是低估真正的价值。我从中得到的主要教训是长期预测(超过几天)可能会变得非常不准确,并且对于这种模型选择,必须非常小心地使用 min AICc。我不确定如何也可以应用交叉验证。
