疫情繫列|明天會更好,嗎?


這些天,周遭的話題依然繞不開疫情。舉國空前的防護力度下,病毒終於放緩了肆意的腳步。人們也從曾經的猝不及防,化作今日的從容淡定。城市迎來了復工潮,寂靜的街道也逐步熙攘起來。

疫情繫列|明天會更好,嗎?


很多人不禁要問,“明天會更好嗎?”


除了醫療技術的進步,大數據成了解答問題的另一關鍵。打開電視、電腦、手機即可遇見各種專業術語,比如“傳染病模型”、“傳染係數”、“拐點”等等。即便在外行看來,這些海量的數據所得出的科學論斷,將給我們一個確信的明天。在這處處大數據的時代,擁有數據便是擁抱未來。


關於數的信仰

人類對於“數”的信仰由來已久,這種崇拜寄託著窺視未來的無限憧憬。古希臘的畢達哥拉斯和他的信徒對“數”發起了宗教信仰,他們甚至為每一個“數”賦予精神含義,例如1代表創造者,2代表黑暗,5代表婚姻,6代表生命,7代表雅典娜等等。在他們看來,“數”本身就是萬物的法則。

疫情繫列|明天會更好,嗎?


數百年後的科學發展史不經意間印證了畢派的論斷:自然界是按數學原理構成的,數學關係決定、統一併顯示了自然的秩序。哥白尼在提出日心說的當時,並沒有什麼鐵證,而他最強有力的依據僅僅是日心說的數學表達更為簡潔與優雅。

疫情繫列|明天會更好,嗎?


值得一提的是,在今天看來太陽並非宇宙中心。如藉助宇宙沙盒(非常棒的遊戲),用更宏大的恆星系來作為參考系,會發現我們整體的太陽系都處於高速運動中,其實看起來可能更復雜了。

疫情繫列|明天會更好,嗎?


近代最體現數學真理觀的例子,可能來自於羅素和懷特海所撰寫的《數學原理》(Pincipia Mathematica)。全書試圖用邏輯推導數學,充斥著各種各樣複雜的符號,洋洋灑灑地寫到300多頁才定義出了自然數“1”,近400頁才證明了“1+1=2”(就是字面上的含義,與哥猜無關)。儘管論證所採用的諸如可劃歸性之類的公理被質疑,儘管慘遭哥德爾不完備定理的衝擊,但作為金字塔塔尖的學科,人們愈發相信數是理解和掌握世界的核心。

疫情繫列|明天會更好,嗎?


自伽利略將數學與神學融為一體,到後來萊布尼茨、笛卡爾、包括後來的狄德羅,再到後來愛因斯坦用盡餘生的大一統理論,人類在因果論這條路上修修補補。量子世界的出現確實打亂了這個節奏,它告訴我們世界的本質是複雜與混亂。不過在大量的宏觀層面,這種“異常”可以被隔離。


模型與預測


基於對數的崇拜,理解世界最直觀的方式可能便是數學建模。正如維基百科上的定義:“A mathematical model is a description of a system using mathematical concepts and language.”在某種意義上,這種理念和操作正是基於先驗的、形而上的對於世界的把握。


數百年來,數學建模思維方法積累得五花八門層出不窮。比如統計學裡的多元迴歸、典型相關分析、數據分類、主成分分析、殘差分析、因子分析、聚類,以及其他方面的圖論、排隊論、差分方程,還有近幾年異軍突起的深度學習。豐富多彩的套路,構成了揭示和掌握未來的“武器庫”,應對不同的局面。


簡單來說,自己日常工作所遇建模就兩種目的:要麼強調結果,要麼注重過程。前者包括我們常用的各類圖像識別算法,無論是場景識別、物體檢測、語意分割、還是情感打分等等。其中所涉及的模型全部都是通過學習了大量的標定數據後,對於全新數據的預測。而通過各種模型的優化算法,使得我們對於預測的準確度有了很高的確信。下面這張圖來自著名的3Blue1Brown的視頻介紹,可視化介紹了經典的手寫數字的機器學習識別思路。

疫情繫列|明天會更好,嗎?


而注重過程的後者更多地見諸經濟學。或許不少人在第一次看到供需平衡的模型時,也和我一樣疑惑,如此定義粗糙的一張圖,沒頭沒尾能有什麼用呢?事實上,它確實沒有什麼實際層面的預測功能,但在揭示內部機理,判斷髮展趨勢,評價政策導向時卻可以給出相對合理的答案。

疫情繫列|明天會更好,嗎?

經濟學方面的論文通常涉及大量的統計模型,不少文章洋洋灑灑寫出了上百個自變量,看似複雜精細的研究,其實依然有大量的簡化工作,很多內、外因被簡化或者忽略。這種類型的模型,主要的面對著龐大複雜的系統,它遵循著奧卡姆剃刀原則(和 Less is More 的說法真是如出一轍),試圖梳理和建立複雜對象的內部邏輯。而至於是否可以準確的分析和預測一些結果,不可強求。


假如數據變多了會怎樣?得益於各種技術突破,我們收集和處理數據的能力急劇增長。更大、更海量的數據在源源不斷的迸發出來,這是否給了我們更好的去完善後者的機會?說來慚愧,作為一個在數理基礎方面的學渣,談這麼宏大的問題著實惶恐。作為一名曾經的畫圖狗,自己開了個城市大數據公司,成天與數據打交道,本該更相信“用數據理解城市”的方法論。可現實是,當利用海量數據去預測將來時,往往迎來粗糙的答案,草草收尾。

疫情繫列|明天會更好,嗎?


這裡並非宣揚神秘主義與不可知論,實際上利用數據來預測將來,我們還是可以做出很多出色的工作。商家可以通過用戶平日裡採購啤酒的週期,精準預測他再次採購的時間;視頻網站會根據大量的用戶喜歡看的電影,給新用戶預測他/她可能會喜歡的電影;現代基因技術可以根據口腔採集的DNA,預測個人未來各種疾病的發病概率。這些在過去看起來有點魔幻的科技,都建立在大量的數據的與強大的算法上。他們標誌著時代的進步、人類的發展。


上述的例子都是對於未來的預測,都離不開數據。如果要預測某人下一次買啤酒的日子,需要知道他過去很長一段時間買啤酒的頻次與數量;如果需要給人推薦電影,則需要找出大量和他/她喜歡同樣的電影的人,然後分析別人看了什麼來給出推薦;如果需要知道某人的DNA中的隱患,則需要更為浩大的全人類基因測序圖譜。


不知各位發現沒有,一方面,當我們要預測一個過去反覆出現的事情時,可能只需要少量的數據,當預測變的稍微複雜時,比如電影與疾病,則需要極其龐大的數據量;另一方面,當預測的範圍比較窄時,比如“明天是否來買啤酒”,或者“某部電影他/她是否喜歡”時,再多數據也做不到絕對精準,只有當時間跨度拉長的時候,才有準確度可言。賭博中著名的“輸了翻倍”陷阱也是這個道理,預測範圍太窄一定不準。


而我之所以對於利用數據去進行預測沒有那麼多確信,也許是因為多數的情況自己都在面對更復雜而龐大的城市系統。面對這種自變量幾乎無窮多的世界,海量數據,依舊無法提供足夠的支撐。高曉松在之前的一個談話類節目中也提出過類似的觀點,我們處於數據的開端,我們所處的時代,數據依然不夠多。


傳染病模型


回到開頭,明天會更好嗎?下面的文字先於上文成形,本希望藉著自學的機會,用傳染病模型來預測拐點。但在完成後,反而產生頗多困惑。思索良久,便把文字後置於此。


對於疫情今後發展的判斷,傳染病模型預測是近期廣為流傳的法寶,網上也有很多科普。作為一名徹底的外行,最初也是看了畢導關於傳染病模型的視頻,才萌生了撰寫這篇介紹SEIR模型的文字的想法。


據介紹,傳染病模型有四種——“SI模型”、“SIS模型”、“SIR模型”、和“SEIR模型”。不同的模型有各自適用的傳染病類型,和本次covid19疫情最為接近的模型是SEIR。為更好的展示這個模型與參數之間的關係,我參考了ASU(亞利桑那州立大學,下文簡稱ASU)的一位Phd撰寫的SEIR交互網頁,基於它改造為一個可以交互查看的傳染病模型的頁面出來,也就是各位在本文頂部可全屏點開查看的可視化頁面。


此圖中用黃、藍、紅、綠四種不同顏色的曲線,表示了S、E、I、R四種人群的數量隨時間的變化和發展趨勢。通過輸入這四種人群的初始統計數量,以及一些傳染病係數,模型將會推演其後時間內的四種曲線的演化形式。縱座標的單位是人數,橫座標的單位則是天數。

疫情繫列|明天會更好,嗎?

前期大部分精力花在了改寫上述可視化頁面之上,我做了兩處改動:


原版SEIR模型中潛伏者不具傳染性,而此次疫情最大的麻煩之一就是潛伏期患者也具有很強的傳染性,不容忽視;


原先頁面上有些暫時不需考慮的細節被隱去,比如自然死亡率,疫苗治癒率等;

隨著上述修改,模型原先的微分方程組也進行了一定的調整。對於數學功底很渣的自己來說,乍看起來很複雜,實則方程組寫的並不複雜,比較容易用代碼去迭代計算。


修改前:

疫情繫列|明天會更好,嗎?

修改後(感謝北大許立言老師團隊指點):

疫情繫列|明天會更好,嗎?

對上述變量稍作解釋:

N|總人口

S|健康的人

E|感染但處於潛伏期的人

I|感染並且發病的人

R|移除的人,即治癒或者死亡的人(也有說法把隔離至方艙醫院的情況也算作移除)

β1|由於I感染S,至其轉化為E的概率

β2|由於E感染S,至其轉化為的E概率

σ|E轉化為I的概率

γ|I轉化為R的概率


說了這些枯燥的內容,沒理解也沒關係,可以點擊文章末尾的鏈接直接體驗這個頁面。頁面大致如下(ipad橫屏效果更佳),我們可以通過拖拉設置一些參數,藉此來觀察這個工具對於“明天的預測”。

疫情繫列|明天會更好,嗎?

01 確定S、E、I、R的數值

可在如下圖所示的區域輸入初始狀態下S

EIR的人數。頁面中的曲線也會隨著輸入的變化而實時更改。模型是一個非常直接、精確的數學推演。不過在實際的操作中,合理輸入這些起始數據並不容易。或者說,恰恰因為這些公式這麼的嚴絲合縫,似乎說明在選擇參數的時候似乎就更需要慎重了。

疫情繫列|明天會更好,嗎?


以武漢為例,它的應該取多少呢?有兩個問題:when and where。


先說“When”,九省通衢在疫情公佈之前恰逢春運前夕,巨大的人口流動給帶來難以估量的變數,電視上的前任領導說原先有1400萬,後來出走500萬。所以在封城後姑且算作900萬?或許吧,封城前的來而往之就太複雜了。

疫情繫列|明天會更好,嗎?


“Where”的問題更大,它牽扯到“日均接觸他人數”γ,其與S的乘積才是關鍵,可兩者又互相牽連。模型假設區域中人群均勻分佈,每日人均接觸一定數量的他人。譬如封城後只見家人與門衛二人,所以γ=2對嗎?仔細想想這與模型的假設並不一致,因為原先的假設裡的“他人”是隨機的。如果兩個人每天固定只見到彼此,那麼這個值只有當S取2的時候,才會是1。封城之後的武漢,已然成為一個個孤島,許許多多的小S,組成了城市的大S


對於S的取值還可進一步估計。比如通過LBS數據預估地區人口的分佈與流動,根據社交網絡數據判斷地區大致的人口活動和接觸的情況,或根據人口普查數據去推演大致的家庭結構分佈(單身狗、兩口之家、三口之家、四口之家的比例)。最後再乘上一個春節期間人口流動情況的增益係數。事實上,近來網上各式各樣很火的“全國人口遷徙地圖”,都可以藉由其所展示的數據情況去大致探究這裡面的蛛絲馬跡。

疫情繫列|明天會更好,嗎?


撇開S的取值,剩下的EIR的數值也需要各種“估計”。比如,E的數值並不等於公開的疑似數量。因為E

指的是潛伏者,可能毫無症狀,如果只是取疑似者數量,會漏掉大量尚處於潛伏期外觀看起來沒有問題的人。I的取值可能更麻煩,因為一開始所確診的人數是受限於試劑盒,所以之前的確診人數應該低於實際的數量,而隨著2月12日納入CT診斷後,單日又激增了1萬5千人,這些人實際上是之前一段時間的積累結果。


可能只有R的取值相對來說是比較容易確認的。雖然聽起來不妥,但死亡與治癒的總數應等於。當然這裡面也有一些小小的bug,比如我自己就有朋友確診了,實際上在醫院的後期他們已經治癒,但需要隔離相當長的一段時間才可以被正式確認為R,然後正是因為當前執行了相對嚴格的“治癒標準”,所以R的確認在時間上是滯後的。這麼多預估的內容,就算費米轉世,或許也難以搞定。


02 確定β1、β2、σ、γ的數值

這些係數可通過滑動條的拖拉進行選取。

疫情繫列|明天會更好,嗎?


相較於那些表示具體人數的英文大寫字母,這些小寫的希臘字母的確定就更為困難。可行的方法就是在Google Scholar上搜相關的論文,找高引的文章查閱他們的參數取值作為參考。不同的文章針對不同的病毒和問題進行了相應的分析與研究,給出了各種可以參考的βσ

γ的值,這裡不作過多展開。實際上個人覺得在這裡討論這些也沒有多大意義,畢竟情況差異很大。

疫情繫列|明天會更好,嗎?


另外需要補充的是,本文提及公式和參數有一定簡化。採用了ASU的頁面介紹方案,比如β1表示的是由S到E的轉化率,直接拿S*I/N來計算,而在其他介紹中,人與人的接觸率還需單獨考慮。關於這一問題,實質上還是和上文提到的

S的範圍確定屬於粘連關係。


既然是一個可以交互的頁面,那麼肆意地拉動這些參數,可以更直觀的體驗這些非線性的數據變化。

疫情繫列|明天會更好,嗎?

β1決定了一切傳染病的根源。當β1=0時,所有健康人群都不會感染,整個的

S曲線呈水平;而隨著β1由0開始逐步增大,整個疫情的發展變得非常迅猛,但越來越大的同時,曲線之間的變化也逐步穩定,即使β1=1也不會導致結構性的變化。


疫情繫列|明天會更好,嗎?

β2作為表徵潛伏期也具有傳染性。實際上當

β2=0時,即表示潛伏期不具傳染性,也就是原版SEIR的模型示意,基本上可以當作非典(SARS)來看。對比其他的曲線變化,其主要影響的效果在於整個傳染病發展的“前移”。健康的人更早的被感染,移除的人也更早的被移除。但受感染者數量的峰值其實變化不大。


疫情繫列|明天會更好,嗎?

σ這個值即有橫向的影響,更棘手的在於它對於潛伏者與感染者的曲線的峰值影響更大。相較於其他的係數,

σ直接與潛伏天數呈反比,也就是說某個疾病潛伏期越長,它的值越低。當σ=0.01時,潛伏者的數量甚至會超過感染者的數量,也難怪疫情的早期有不少聲音認為“海量的潛伏者”尚未被發現的擔憂,不過總體來看,σ的增大會明顯減少潛伏者的數量。其實這個值是可以被調整的,比如檢測試劑的改良和提高,將極大的增大σ


疫情繫列|明天會更好,嗎?

γ是終極大殺器,這個值只需要稍作改變,便能大幅度影響所有曲線。隨著γ的增大,我們甚至可以觀察到紅色與藍色的線很低,而綠色線則大大高出的情況。這說明移除率急劇增長,單個個體從健康者->潛伏者->感染者->移除者的時間甚至不到1天的功夫。合乎這種情況的傳染病,或者非常弱可以自愈,或者極強,秒殺一切。各方研製特效藥、抗體,也正是解決這一疾病的王道所在。


03 尋找“拐點”

在鋪天蓋地的新聞普及下,何為“拐點”,我們並不陌生。這有些類似於故名看k線圖,很多人都在期待著這一天的到來。在這個模型的圖示中,SEIR四條曲線中,SR是首尾收斂於極大極小值的邏輯斯蒂函數曲線,而

EI則有一個上凸的曲線,其增長率為0的點,即為解析幾何的“拐點”。平日新聞所提及的“拐點”,則泛指日新增確診病例數歸零,總病患逐步減少的那一天。兩者概念雖稍有不同,但差異不大。

疫情繫列|明天會更好,嗎?


此外,頁面還提供一個可以查看全國疫情按鈕。如有興趣還可以打開“疫情”按鈕,對照著真實的曲線拖拉,試試看現實世界的數字是否有對得上的部分。

疫情繫列|明天會更好,嗎?


來自模型的解答


如果有心,為了去尋找拐點、峰值而去嘗試“匹配”,會發現幾乎不可能完全擬合。因為模型中假定的這些參數,可能會隨時間、隨其他潛在因素而實時地、動態地演變。就如同一輛汽車,他從上海開往蘇州的時速會有變化。如需根據已經開過的距離預測什麼時候會到達目的地,是相對容易的,但預測下面兩分鐘是往前開了1.5還是2公里是相對困難的(其中有一些比例和誤差的tricks)。


曾經有一次請教過一位研究地震的科學家同學,相較於傳染病,地震反覆發生的次數更多,而且數據收集也更全面,為什麼不能用模型來嘗試預測地震呢?得到的答覆其實和上面的舉例類似,因為堆砌大量的數據或許可以預測未來5年某地發生多大規模的地震的概率。可如果要更大程度地縮小置信區間,精準預測地點和時間,那幾乎是不可能的,一來數據的規模可能依舊不足,二來每一層輸入的數據都有誤差。


同樣的,在這個傳染病模型中,這些SEIR的曲線並非像K線圖一樣精準,高低之間的變化對應到參數上可能就是毫釐的差異。在整個模型的操作過程中,實際上對我們的工作有很大作用的是 更多的是事後諸葛亮,有幾方面的原因,一方面,從上文就可以看出,這模型所涉及的參數,幾乎無法調整準確;另一方面這類預測並不像天氣預報那樣發生的頻繁,所以在“事件發生頻率”上的累積數據太少。輔助公共衛生的提前干預,評估控制性政策的優劣。當然具體怎麼評估可能也不簡單,比如衡量一下在防控疫情的前端採用諸如封城等干預措施,和後端大力投資特效藥哪個對於疫情更有效果?當然若要算清楚這比經濟賬,可能也並不輕鬆。


隨著防控措施的加強以及逐步復工的人口流動,控制的參數會不斷變化,也因此預測的結果會變得不怎麼可靠。有興趣的朋友不妨可以看看一個月前的新聞,有很多專家學者的預測看起來不是那麼準確,也可以理解。


我們的明天


是粗糙的世界,配不上精緻的模型,還是理想的模型本不存於世界?我並不知道答案,實際上寫到這裡也開始有點理解,為什麼後來數學家們撇清純數與現實的差異。因為踏踏實實的做智力激盪比思考這種莫名其妙的問題有趣的多。


邏輯、法則、規律,驅使著人類對於未知世界的理解,這甚至是一種本能。倘若無法理解外部環境,就意味著難以避免潛在的危險,趨利避害是本性。一切的存在都應具有目的,而這種目的應該可以被發覺、理解、以及被利用。這種目的論的調調,在今天見諸很多所謂的付費知識節目中,比如“小麥的勝利”、“進化論的錯誤”之類。


前幾日看類似的一個,其中提到太陽系恰巧“被安排”在銀河系內非常稀疏的區域(獵戶旋臂內側),人類才得以觀測宇宙。倘若在其他區域,那可能天空會亮到什麼也看不見。冥冥中我們的使命或許就是觀察世界、理解世界。或許正如它所言,理解世界是人類的使命。

疫情繫列|明天會更好,嗎?


或許百年之後,人們回顧歷史,如今的我們又一次來到了一個同樣對於“數”的崇拜時代。他們會列舉當時人們對於數據的迷戀,甚至到了給個體冠以數據科學家 、數據人、數據俠等種種很莫名的頭銜,如同今天的我們遙望著古希臘的先賢。


“明天會更好嗎?” 或許這本來就是個Dumb Question(蠢問題), 因為明天取決於今天。但願那條惱人的紅線,早日抹平。


分享到:


相關文章: