子皮 | 指数、欧洲兔、SIR、熵
指数、欧洲兔、SIR、熵
前些天写了一篇小科普,关于流行病传播。很快不知为何没有了。
今天倍加小心地写一篇和流行病有关的数学小科普,希望不再无故中招。
本篇所说的“流行病”,是指传染流行病。传染流行病之所以凶猛,在于它可以迅速传播。而且在初始,流行病传播的形式通常是指数增长。
指数增长非常非常地震撼。不过很多人大概从来没有想象过。所以这里我们先说说指数的事。
有这么一个传说:
从前,一个印度国王非常喜欢象棋(64格的国际象棋)。有一天国王把发明象棋的老头儿叫来。
国王:“你发明了这么好玩的东东,朕今天要好好赏你。你说要啥吧,朕一定答应!”
老头儿:“陛下,老汉俺不要别的。就要点麦子。”
国王:“哈哈哈哈 …… 麦子!要几袋?几马车?说吧!朕马上叫人开仓拿。”
老头儿:“我要的麦子不论袋。论粒。麦粒摆在象棋盘上。“
(王宫的仆人拿来象棋棋盘。)
老头儿:“棋盘第一格摆一粒麦子,第二个格两粒,第三格摆四粒,第四格摆八粒 …… 每一格比前一格加倍。以此类推,摆满64格。“
国王:“就这些?“
老头儿:“就这些。“
……
后来呢?后来发明象棋的老头儿被国王杀掉了。因为国王拿不出那么多麦子给老头儿。
如果棋盘第一格摆一粒麦子,第二个格两粒,第三格摆四粒,第四格摆八粒 …… 那么摆满64格需要多少麦子?很简单,学过高中数学的朋友都知道:麦粒的总数是:S=1+2+22+23+24+… +263=264-1=18,446,744,073,709,551,615
18,446,744,073,709,551,615粒麦子,相当于11990亿吨小麦。按照今天全球的小麦年产量(2019年世界小麦年产量是78亿吨),全世界要1500多年才能生产出这么多小麦。
一个变量y如果是 y=ax 的样子 (这里a是一个大于1的常数,x是自变量),那么变量y可以变得令人恐怖地大。如同在上面的例子中,y是麦粒的数目,a = 2 (麦粒不断自乘2倍),而x是格子数,从1变到64。
y=ax 叫做指数函数。而当a>1时,指数函数是 “指数增长 “,因为它会不断增长 —— 以难以想象的速度增长。
上面这个“象棋盘上的麦粒“的故事告诉我们什么?它告诉我们必须记住的两件事情:
(1) 不要让国王下不来台
(2) 指数增长是一个很吓人的东东
“指数增长“是我们人类的情感和思维难以适应的东西,因为亿万年来,我们生活的地球上,太多的是循序渐进的变化:太阳升落,星斗转移,河水流动,树木生长;人类吃饭、行走、搬运、收割、购物、盖房子;我们的孩子长大、我们自己老去……
“循序渐进“大致就是等速过程。在数学上等速的过程叫线性函数。人类是习惯于线性函数的动物。
这是一个线性函数的图像。代表线性宝宝到线性娃娃到线性先生随着时间一路长大的过程:
相形之下,指数函数是一个我们不习惯和难以想象的东西。让我们来画一个函数 y=2x。代表x的是横轴 ,代表y的是纵轴。x和y的单位是英寸。我们让姚明躺在横轴上做x的度量。
当x到姚明脚脖子时,函数值y已经到了300英尺,像一座摩天大楼。
当x到姚明腰部时,函数值y是9千3百万英里,到达太阳啦!
最后,如果x是8英尺 (比姚明略高一点点),这时的y是多少?这时的y是200亿光年。远远超过了我们所知道的宇宙。
我们现在知道了,指数增长就是把姚明变成整个宇宙的过程。
上面说的是数学上的函数,下面举一个指数增长的真实的例子。
1859年,澳大利亚有一个叫托马斯﹒奥斯汀的农民,是英国来的。奥斯汀经常怀念英国老家,一团浓浓的乡愁驱之不散,于是他叫人从英国带来24只兔子,放养在他的庄园里。草地上毛茸茸的可爱的小兔子,让奥斯汀仿佛回到了田园风光的英格兰。
奥斯汀的24只兔子在澳洲安了家,生儿育女。
六年后,澳洲有了2千2百万只兔子。
这种爆炸性的繁殖,是指数增长。在没有天敌、饥荒和瘟疫的情况下,生命的繁衍都是指数增长——只要平均下来一个个体能够繁衍一个以上的个体。如果人类平均起来一个女性能够生育养大两个以上后代,那么人类总人口也是指数增长,工业革命后世界人口的速增,就反应了这个趋势。
澳洲兔子的繁殖没有一直保持指数生长(红线),繁殖率逐渐减慢(黑线),到了1930年达到7亿5千万后基本稳定下来。
兔子们吃掉澳洲最好的草,他们还糟蹋庄稼,啃断小树,污染水源 …… 据估计澳大利亚农民每投资一块钱,就有五毛钱被兔子糟蹋了。奥斯汀萌萌的英格兰小兔子,成了澳洲农民人见人恨的人民公敌。1950年,澳大利亚政府终于下决心开始了一项非常残忍的举措:引进兔子黏液病病毒。
兔子黏液病(myxomatosis)病毒的天然宿主是巴西的森林兔,通过蚊虫叮咬传播。黏液病可以使森林兔生病,但没有生命危险。而对欧洲兔,黏液病是致命的,病死率几近100%。当然,随着时间的推演,因为黏液病病毒的基因突变和病毒对兔子的天然选择,黏液病的致死率已经下降。
澳大利亚引入黏液病后,当地兔子迎来了它们的世界末日。很快,澳洲兔子人口被抹掉了90%。然而澳洲农民拍手称快。澳洲羊毛产量迅速上升。
1953年,智利也引入了兔子黏液病病毒。几乎灭绝了当地的兔子。
1952年,一个阿芒﹒德里哀(Paul-Félix Armand-Delille)的法国医生和病菌专家,捉了两只野兔,给它们注入了黏液病病毒,然后放到自己豪宅边的草地上,意图杀死房屋周围的兔子。
结果是:兔子黏液病很快传遍法国,西欧、英国、爱尔兰。法国的兔子死去95%,西班牙死去95%,而英国的兔子99%在病毒下丧生。一些以野兔为食的动物,如西班牙的猞猁和帝国鹰,因此大批饿死,几乎绝迹。
到此,兔子指数繁衍的闹剧,演绎出黏液病指数传播、几近物种灭绝的悲剧。
既然说到兔子黏液病,让我们再回到流行病传播上。我们知道流行病初始期通常是指数增长,但这种速率不可能一直持续下去。即使兔子黏液病这种所向披靡的病毒,也不可能永远指数增长 —— 最坏的情况下,当黏液病干掉了所有的兔子,病毒自然无法继续传播。
另外,痊愈的病人通常具有免疫力。考虑到死亡和痊愈,病毒可感染的人将越来越少。
比起流行病传播的简单指数模型,考虑到死亡和痊愈的模型更切合实际。这样的模型之一是我们下边要说的SIR模型。
SIR模型将总人口分为三类:
· 易感者(susceptible):S(t),表示t 时刻未染病但有可能被传染的人数。易感者总人口百分比记为s(t)。
· 染病者(infective):I(t), 表示t时刻已被感染而且具有传染力的人数。染病者占总人口百分比记为i(t)。
· 移除者(removed),R(t), 表示t时刻已从染病者中移出的人数 (包括痊愈,死亡,绝对隔离)。移除者占总人口百分比记为r(t)。
注意是假设这里是总人口为定值的封闭系统,不考虑总人口的自然出生,死亡和出入。
SIR模型是三个微分方程:
其中为β是传染率,而γ是移除率。
在发病早期,几乎100%的人都是易感者。这时s(t) = 100%。这样上面第二个方程变成了:
它的解是:i(t)=i0exp((β-γ)t)。可以看出当传染率 β 大于移除率 γ —— 或者说当 β/γ >1时 —— 染病者会不断增加,这就是我们所说的指数增长。
标记 β/γ = R0。R0就是流行病中常用的 “基本传染指数 “。R0的概念在美国2011年的灾难片《世纪瘟疫》(Contagion)出现过。电影中一位米尔斯医生(《泰坦尼克号》女主角凯特﹒温丝蕾饰演)和群众讲解了R0的概念。
随着疫情发展,易感者s(t)会减少。s(t) < 100%。这时上述SIR方程组没有解析解。但是带入一定初条件和假设一定的传染率和移除率,很容易用计算机模拟SIR方程的解。
这是计算机模拟的一例 (蓝线为易感者,粉红线为移除者,而红线为染病者,都已占总人口百分比为单位):
这个例子中R0 = 2。在传播彻底停止时,有80%的人口都染过病。但易感人群降为总人口50%的时候,感染人群总数已经开始下降。
用数学从SIR模型可以可以推出,只有满足下述条件,染病者总数才能继续增长。
讲一堆烧脑的数学干什么?是为了让我们从“染病者增长条件“中,发现怎样阻止病疫继续增长。从这个公式可以看出,阻止病疫继续增长有三个办法:
· 降低易感者百分比
· 提高移除率
· 降低传染率
降低易感者百分比:降低易感者百分比最好的办法是打疫苗。但如果没有疫苗呢?唯一的办法是让更多的人感染 —— 一旦感染就不属于易感人群了。这个让更多人感染显然不是我们想要的。
提高移除率:“移除“包括痊愈、病亡、和染病后绝对隔离。提高痊愈速度当然可以提高移除率,但是注意每种疾病都有一定病程。事实上从潜伏期到病愈,一般至少要两三个星期,因为人体产生抗体通常就要几天。这基本上不是医药能改变的。而且对多数病毒感染,根本没有有效药物。
注意这里讨论的是痊愈的速度,而不是指痊愈与病亡的比例。事实上在讨论病疫传播时,痊愈与病亡都是移除,没有区别。唯一有影响的是痊愈或病亡的速度。这就是为什么快速致命的病毒,通常无法发展成流行病。
提高移除率的另一个办法是一旦染病即绝对隔离患者。这是个好办法。但对有潜伏期的传染病,这个不容易做到。
降低传染率:这是最有余地改进的地方。传染率不仅仅由病毒本身决定,更由人群的行为决定。人群的行为包括:流动速度、接触频率和个人卫生习惯。在病疫流行时期,避免公共场合,勤洗手,必要时戴口罩等,都可以大大减低传染率。传染率降低后,和传染率成正比的R0自然下降。
上面的SIR模型模拟图的传染率是常数。如果过程中传染率能够下降,那么结果一定比这个好。
综上所述,阻止流行病的有效的办法是降低传染率。除此之外,还有没有更有效的办法呢?有。
阻止流行病更有效的办法是:阻止带病者的扩散。
上面说的SIR模型是仓室模型(compartment model)。仓室模型运用于均匀、封闭的群体。一个居民区、一个村镇、或者一个城市,在一定条件下可视为一个“仓室“。
对于更大的区域,仓室模型不马上适用,因为必须首先考虑不同区域间带病者的扩散。
一盆清水中,如果滴入一滴红墨水,我们将看到红墨水会向整个水盆各处慢慢扩散。如果我们用高倍放大镜,可以看到红颜料分子在漫无目的地布朗运动,移动过程中和水分子不断碰撞。
我们可以把染病者比作红颜料分子,把红颜料分子和水分子碰撞比作传染。当病疫发源初始,染病者一般集中在某一地域,然后他们将向周围地域慢慢扩散,扩散过程中不断发生传染,最后全国甚至全世界将成为一个均匀分布的疫区。
从集中到均匀,就是物理上的熵增加定律,或者叫热力学第二定律。热力学第二定律适用于我们观察到的整个宇宙。
在信息学和流行病学中,都有模型运用熵的概念。
当然,我们不希望病毒均匀地扩散,我们不希望整个世界变成一个大疫区。所以我们必须阻止这种扩散。我们必须阻止熵增加。
热力学第二定律所说的熵增加,是指没有外力作用的封闭系。当有外力作用时,熵可以不增加。熵甚至可以减少,例如冰箱致冷和空调。
封城是阻断熵增加。一些国家现在出于疫情停止中国的航班,类似于“封国“,也是阻止熵增加。
如同物理上阻止熵增加需要外力,流行病上的隔离也需要外力。如果物理上我们不能想象气体分子会乖乖地呆在敞口的瓶子里,或颜料分子乖乖地不在水中扩散;那么我们也无法想象在今天世界上一个城市的人突然停止进进出出,尤其是当这个城市成为疫区时,几百万人都自觉自愿地原地不动。
当然,多数情况下,自然地流动是愉快的,被外力限制是不愉快的。人不愿意被限制,更不愿意被当作一个气体分子般地被隔离。
但是,如果我们仔细注视流行病的本质,我们就知道流行病的传播过程更像一个热力学过程。如果我们的目标是在宏观上最小化流行病的传播,那么也许,在这个问题上更有效的模型里,每个个体被当作气体分子对待。描述流行病传播更准确的语言是数学和统计,而不是催人泪下的视频或报告文学。
听起来也许残酷或甚至缺乏人性,我们先要想清楚此时此刻什么是最大的人性。我们正站在一个指数增长的入口处,或者说正在面临一个不见底的深渊。如果我们对传染不全力阻挡,那么感染人数可以以数量级上升。当病毒扩散到这个国家每个角落时,也许到时任何人都无力阻挡。在此时此刻最大的人性是阻止流行病指数式增长,因为这将在数量级上消减染病的人数,这将在数量级上拯救生命。
我们看到今天很多事情做的不好,我们知道在不久前一切做得更不好。如果时间可以倒流,那么也许今天我们根本不会面临如此巨大的危险。但是,越是危险越需要理性,越需要所有的人最大限度地合作逃离危险。
想象一座大楼墙壁开裂,正面临倒塌的危险。这时楼里的人应该做什么?应该有序地撤离。此时楼里的人也许很愤怒,因为他们相信大楼的裂缝是无良的建筑商、不合格的工程师和不负责任的检察员造成的。
但是,不管人们多么愤怒,此时此刻他们依然应该听从统一指挥有序撤离。
也许楼里的人非常不信任那个指挥协调撤离的人,也许他和承包商一样不负责任和无能。但是,几分钟之内没有可能更换协调人。如果这一时刻完全依从每个人的本能行事,那么结果很可能是踩踏,结果很可能是许多人撤不出去。
生活几乎从来都是一道选择题,很多时候没有最好的选择只有最不坏的选择。在好和更好之间谁都会选择更好;但在死亡的可能性是10% 和20%之间,冷静地选择10%的人,才是真正的智慧和勇气。
最后以一些真实的数字结束这篇文章。
这是每天全国的染病总数。出于官方媒体:
把染病总数取对数,画成图:
如果染病总数对于天数是指数增长,那么染病总数的对数对于天数就应该是线性增长。图中蓝线是真实的数据,橙色线是直线趋势。从这张图上看,似乎最近几天低于线性增长。
如果染病总数的对数线性增长,那么对数每天的增量应该相等。下图是对数的每天增量,最近几天开始变小。
很多人也许会说不是每个感染的人都被证实了。所以实际感染的人数应该比证实的多。很可能,但这不影响上图的趋势。假设实际感染的人数是证实的感染人数的2倍。那么取了对数之后,这个2倍会变成一个常数项。所以上面的对数图形只会平移,而对数的每天增量图不变。所以,这个趋势仍然存在。
当然,这里的数据不够多而且噪音很大。也许真正的趋势有所不同。不过如果考虑潜伏期的滞后效应,我们有理由相信真实的趋势比图上看到的可能更好。
形势依然极端严峻任何人没有理由放松。不过也许我们已经看到了隧道尽头的一丝光亮。坚持住,每个人。
相关文章:
子皮:毕业于北大物理系,巴黎大学博士。现居美国。职业金融量化分析。近年开始写字。作品发表于电子平台、《青年作家》、《文综》及其它丛书。曾获法拉盛海外华语诗歌节奖。
长按识别二维码关注