全體人口流經的三個盒子
在上一篇裡,兩個物種互相推擠:兔子餵養了狐狸、狐狸又削減了兔子,而洛特卡—沃爾泰拉方程把這場拉鋸化成永遠旋轉的閉合環圈。一場傳染病有著相同的味道——藉接觸率而互動的族群——但有一個關鍵的不同。這裡的「物種」並非不同的動物;它們是處於不同狀態下的*同一群人*,而一個人沿著這些狀態單向流動,並且(在最簡單的故事裡)永不回頭。那道單向之流,正是 SIR 模型的整部引擎。
想像把人口分進三個盒子。S 裝著*易感者*——尚未染病、但可能染病的人。I 裝著*感染者*——此刻患病、且能把病傳出去的人。R 裝著*康復者*(或移除者)——已經得過病、如今免疫的人,或者已經死亡的人;無論哪一種,他們都不再散播疾病,也無法再次染病。每個人都恰好坐在一個盒子裡。隨著時間推移,人們在受感染時從 S 流入 I,又在痊癒時從 I 流入 R。S 只會排空、R 只會注滿;而 I 則先膨脹、再消退。這套三盒記帳法,是一整個稱作區室模型的家族中最簡單的成員,而當我們抵達藥物給藥那一篇時,你會再次與它相遇,只是換了一身衣裳。
把這道流寫成三條方程
現在我們把這幅圖像化為變化率。兩個參數主宰著一切。令 beta 為傳播率:粗略地說,就是一名感染者進行近到足以傳病的接觸有多頻繁,再乘上它真的傳出去的機率。令 gamma 為康復率:感染者由 I 離開、前往 R 的速率。由 I 流向 R 的這一道最為容易——它不在乎任何旁人。每單位時間有 gamma 比例的感染者康復,所以那道流出量是 gamma I,給出第三條方程 R' = gamma I。請注意,1/gamma 正是*一個人保持有傳染力的平均時間*:若 gamma = 每日 1/7,人們大約有一週具傳染力。
感染之流是這個模型的心臟,也是唯一一塊真正非線性的部件。一次新的感染,需要一名感染者*與*一名易感者相遇。若你把人口充分混合,S 遇上 I 的相遇率便正比於乘積 S 乘 I——感染者加倍,相遇加倍;易感者加倍,再加倍一次。所以人們由 S 傾瀉而出、湧入 I 的速率,就是 beta S I。那單一的乘積項 beta S I,正是讓一條疫情曲線彎曲、而非走成直線的東西;它與驅動掠食者—獵物的那套「兩樣東西必須相遇」結構是同一個,只是換了頂帽子。
S' = - beta S I (susceptible only ever drain away) I' = beta S I - gamma I (gained from S, lost to recovery) R' = gamma I (recovered only ever fill up) with S + I + R = 1 constant (nobody is created or destroyed)
這三條耦合的方程構成了一個一階系統,正屬本整級為之而建、擅於應付的那一類。S(t) 與 I(t) 並沒有寫成 t 的整潔公式的初等封閉解——而這對非線性常微分方程而言是常規、而非例外,恰如你早先被提醒過的那樣。那麼我們如何說出任何事呢?有兩條路,兩條你都已經擁有。我們可以跑一個數值求解器把曲線畫出來,也可以*定性地*推理這個系統而從不真正去解它——而正是那份定性推理,讓這個模型吐露出它最著名的那一個祕密。
R0:裁定一切的那一個數字
這裡是每一位衛生官員最先發問的問題:把單獨一名感染者投入一個完全易感的人口中——疾病會起飛,還是會熄滅?看看一開始、當 S 本質上等於 1(幾乎人人易感)時的那條中間方程。那時 I' = beta S I - gamma I 約等於 (beta - gamma) I。當 beta - gamma 為正,感染人數增長;為負,則收縮。重新整理,疾病恰好在 beta/gamma 大於 1 時擴散。那個比值有它的名字與名聲:它就是基本再生數,R0 = beta/gamma。
R0 有一個美麗而具體的意義。回想 beta 大約是一名感染者在一片易感之海中每單位時間造成的新感染,而 1/gamma 是那人保持有傳染力的時長。把它們相乘:beta 乘 (1/gamma) = beta/gamma = R0,便是*一名感染者在康復之前、於一個原本未受觸動的人口中平均製造出的新病例數*。若 R0 = 3,第一名病患傳染三人,這三人又各傳三人,疫情於是咆哮而起。若 R0 = 0.8,第一名病患平均傳染不到一人,傳播鏈因飢餓而斷,什麼也不會發生。R0 = 1 處的那條分界線,就是流行病閾值——是整個數理流行病學中最鋒利的那一個「行/止」開關。
為何曲線會見頂,又為何有人毫髮無傷
即便當 R0 > 1、疫情起飛了,它也不會吞噬每一個人。感染曲線上升、抵達一個高峰、再跌回零——而關鍵在於,它在 S 觸底為零*之前*就跌了下來。為什麼?再看一次 I' = (beta S - gamma) I。感染人口唯有在 beta S - gamma > 0、亦即 S > gamma/beta = 1/R0 時才增長。每一次新感染都花掉一名易感者,所以 S 持續下降。就在 S 滑落、越過 1/R0 這個值的那一瞬間,括號翻為負,I' 轉而向下,疫情便越過了它的高峰。高峰並非疾病用盡了人——它是易感池稀薄到低於維持增長所需閾值的那一刻。
越過高峰之後,I 持續下跌,但 S 也持續下跌——只是更慢,因為剩下能去感染的感染者更少了。當 I 再度抵達零,疫情便燒盡,而在那一刻,仍有一些易感者*留在 S 盒子裡,自始至終未曾被感染*。這正是那個著名而略違直覺的結果:疫情之所以停止,並非因為它用盡了易感者,而是因為它夠快地用盡了*感染*者,以致剩下的易感者從未被觸及。那殘餘的比例是真實而可預測的——即所謂疫情的最終規模——而這也是為何縱使一場兇猛的疫情,仍能留下相當一部分純粹走運的少數人。
有一條乾淨的途徑,能讓你完全不必對時間求解便看清整條軌跡——正是本級一再回報你的那個定性訣竅。把 S 方程除以 R 方程以消去 t:dS/dR = -beta S / gamma = -R0 S。這條小小的可分離關係積分後得到 S = S0 e^(-R0 R),一條整潔的定律,把殘餘的易感程度與已康復的程度聯繫起來。在末了令 I = 0,便把它化成一條關於最終易感比例的方程,即*最終規模關係*。你從不需要 S(t) 作為 t 的公式;你只需要軌道在 S-R 平面中的*形狀*,照你讀一幅相平面圖那樣讀出來。
簡單模型刻意弄錯的地方
現在來到誠實的部分:烘進那三行裡的每一個假設都是一次簡化,而知道它們,正是「使用 SIR」與「誤用 SIR」之間的分野。最大的一個是充分混合的均質性——那個 beta S I 項假設人人都以相等的機率與所有人接觸,像理想氣體分子那樣。真實的人住在家庭、學校與城市裡;接觸是成簇而斑駁的,所以單一的平均 beta 抹平了一個確實要緊的結構。這個模型還假設了一個*封閉*的人口:沒有出生、沒有來自其他原因的死亡、沒有遷入或遷出——對一場數週之內的快速疫情而言尚可,對一種拖延數年的疾病便錯了。
還有兩個假設值得插上旗子。第一,SIR 賦予*永久免疫*——一旦進入 R,你便永不回到 S。對於免疫力會衰退、或病原會變異的疾病而言,這是假的,於是你需要一個讓 R 漏回 S 的 SIRS 變體,它能產生反覆的波次,而非單一的一道隆起。第二,SIR *沒有潛伏延遲*:一個人在受感染的那一瞬間就具傳染力。許多真實的疾病會先有一段潛伏期,而這恰是 SEIR 模型填補的缺口——它在 S 與 I 之間插入一個暴露(Exposed)盒子 E:已感染、但尚未具傳染力。那一個額外的區室延遲並重塑了曲線,也是從你手上這個模型往真實性更上一階的自然下一步。
這些都不使 SIR 成為錯的——它們使它成為一個*第一手的模型*,而且是極出色的一個。它從三行誠實的式子出發,解釋了為何疫情先爆發、再自我限制,為何 R0 = 1 是一道刀刃,為何群體免疫是一個分數而非一個全體,又為何有些人能完全逃脫。當你把 beta 與 gamma 配適到真實的病例數據——那道閉合建模循環的模型配適步驟——你便得到對 R0 與可能高峰的、真正可供決策的估計。這門手藝在於:從這裡起步,看清楚簡單模型捕捉到了什麼,唯有在數據顯示簡化已然破裂之處,才加上區室。那種有紀律的層層疊加,正是這收尾一級的整個精神所在。