续:“疫情与指数函数”_风闻
RE终结者-2020-03-29 23:45
给前文补充一张图,S型曲线跟J型曲线的形状就是这样的

今天花了点时间续了一下昨天发的文章,加上 @世界统一促进会秘书长 建议的预测。
先给结论:
1.S曲线仅对短期定量预测有意义,长期定量预测极其不可靠。
2.@世界统一促进会秘书长给的模型本质上和J曲线是一样的。
首先是回复 @世界统一促进会秘书长 下面是他的评论

他的文章是什么模型呢?

我以自己的话重新描述一下,统一一下用语和符号。
设x(t)为t时刻的感染人数,那么t+T时刻的感染人数为x(t+T),我们假设有(没有给出任何理论依据,就直接认为他是这样)

R是一个参数。如果有注意到我之前的文章,我是有给出建模过程的,全部参数都有物理意义,但这里的R是没有物理意义的。@秘书长 是如何处理的呢?他用了2月5日开始共41天的数据拟合这个方程,得到这个R。而且在他的拟合当中,时间间隔T不限于1日,详细可以看看他的文章。
我不是科班出身,不太懂统计上怎么处理这个的。我个人的直觉是,求参数R更好的处理方法是先把数据x(t)与R^T进行对数运算,再进行线性拟合,误差会小很多。
那么他的模型有没有物理依据呢?首先改写一下他的模型

两边同时除以T,然后给T加一个趋于0的极限

等价无穷小有这样一条

所以

左边写成导数形式

我的模型里面有

你会发现跟他的模型是一样的,他整定lnR,我整定k。说白了,他的模型也是纯正的指数曲线,而且需要理解他的模型,无非也就是感染人数的增长率与当前感染人数成正比,这一点在我的前文中也有讲述。
下面对比一下我们两人的模型,@秘书长 的模型后文称为“秘书长模型”,我的模型依照前文,后文称为“J型曲线”。

以他的方法进行参数整定,R = 1.19021,以我上述对数处理的方法,整定的结果是C = 436.99,k = 0.169。我的模型数据全部采用 @秘书长 文章里的数据,数据的真实性与可靠性参照他的数据。从3月27日为第1天,下面得到了后续39天的预测感染数据

这图不太好看细节,但至少形状上是基本重合的。点线的数据是J型曲线与秘书长模型的差值:
1.到今年5月4日,秘书长模型预测海外将有3.4亿人感染,J型曲线预测海外将有3.25亿人感染。
2.到今年4月26日至4月27日时,我们两人的预测模型数量相等,为海外感染1亿人。
3.秘书长模型感染人数的增长速度更快,他的模型更激进一点,我的模型更保守一点。
4.相比于秘书长模型,J型曲线误差在+15%,-5%以内。
如果使用S型曲线能够预测出什么结果?首先给出前文的S型曲线方程(Logistic曲线)

为了方便整定参数,改写一下方程

再改一下

把K作为一个参数,对上述方程进行最小二乘拟合,得到a与b对K的表达式。得到的表达式再进行对x(t)的最小二乘拟合,就能得到3个参数的值。另外这个很可能不是学院派的做法…总而言之,得到K = 1385300,b = -0.1743,a = 3368.4。下面把S曲线跟J曲线的预测画在一起

很明显,两条曲线的预测值一开始就有区别,J曲线是52.8万人感染,S曲线是42.9万人感染,秘书长模型是45.3万人感染,3月27日实际上有多少人感染呢?42.7万人感染。看3月28日的数据,J曲线预测为62.6万人感染,S曲线预测为48.2万人感染,秘书长模型是53.9万人感染,实际上有多少人感染呢?48.9万人感染。
进一步看S曲线后续的预测:
1.4月1日海外感染将达到拐点。
2.海外最终会有138万5千人感染,就是那个参数K。
3.4月2日与4月3日之间,J曲线的预测值为S曲线的2倍,4月6日,J曲线预测将达到S曲线的3倍。
现在这个曲线的问题是,第1点和第2点实在有点违反常识。像美国日本这样的国家,曲线才刚开始上升,没有理由在4月1日到达拐点的,而且看现在这个形势,不大可能最终停留在138万人感染。因此我尝试制作了使用不同时间长度的数据进行预测的图表,下图中横轴表示采用前n天进行预测的最终感染人数值。

这张图以22个数据为分界可以分为2个区域,在两个区域内,海外总感染人数的预测值随数据量增加而增加,但22数据预测值达到峰值后迅速下降,随即又继续增加。这说明以现有的数据,采用S曲线进行总感染人数的推断极其不可靠,其原因是现阶段仍然在疫情的前期,曲线尚未成型,初值的少量偏移都会带来终值的剧烈变化。同时,世界上不同地区的爆发时间不完全一致(加上部分国家所谓的“轻症不测”给曲线的形状带来一定的影响),导致总体的R0有一些阶跃式的变化。
最后给出 @世界统一促进会秘书长 想要的S曲线预测数据
3月30日 61万3千人
3月31日 67万8千人
4月1日 74万3千人
4月2日 80万9千人
4月3日 87万4千人
4月4日 93万7千人
4月5日 99万8千人
4月6日 105万5千人
下面是@guanchafen 的说法

只是玩一玩的话,我觉得你可以试一试下面这个模型

玩法是随便找个国家,直观感觉他最终会感染多少人,带入K里面。估计一下这个国家的抗疫水平,比较厉害的选一个大一点的b(负数的大一点是绝对值的小一点),比较佛系的选一个小一点的b。最后随便选一下a画出曲线对照一下疫情发展情况。
比如中国大陆的

不过要注意到2月12日湖北新增确诊超15000这一点,这个对曲线的形状肯定是毁灭性的打击,这个模型解决不了这种现象。另外更要注意的是,这个模型一不考虑外部输入,二不考虑瞒报现象(当然也不考虑因检测能力不足带来的疑似病例积压)。顺便一提,@mandman文章里经常能见到的一个表述

就是他的曲线跟S型或J型不符,瞒报就是原因之一。
如果你想玩的更爽一点(控制措施强度,筛检比例,收治入院比例),我建议你用下面这个模型

t:今天日期;
x(t+1):明天的确诊人数;
N:地区总人口
k(t):表征措施效果的系数,包括病毒变异传染性更强(k更高),封城(k更低)等;
m(t):今天的治愈率;
n(t):人群中获得永久免疫的人的概率。这个参数可以给你看看群体免疫的效果,另外也可以试试抗体只能存在3个月的效果。
x(t-T):T日之前的感染人数,T是治愈需要的平均时间。
M(t):今天入境人数。
g(t):入境人数检测阳性的概率,可以把这个概率定位海外确诊人数与海外总人数的比例,同时这个参数可以给你评估一下实行入境隔离14天的效果,不过可能要额外处理一下。
玩法是找一天作为基准,那一天人数就是x(0),比如1月20日大陆的293例,然后自己评估一下1月20日各个参数的值(比如23日开始降低k(t),每天降低一点,表明武汉的封城正在持续起作用且越来越有效,你可以对照一下每天的新增人数),再去算其他指标。要考虑方舱医院的效果这种,就在那个总住院人数那里改改就好。
你嫌麻烦,m,M,n这些参数全部为0就好。