天天看點

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

導言

前段時間英國采取的“群體免疫”政策,似乎引起了很多關注,當然同時也引起了很多争議。我們希望從應用數學的角度出發,帶大家看一下數學上是如何對傳染病進行模組化的,他背後的原理是什麼。

數學難們别被應用數學吓到我們會從最易懂的角度去解析這樣一個問題。

首先,一個與“群體免疫”息息相關的概念,即媒體不斷提到的R0值。雖然看上去這兩個概念并無明顯的聯系,但我們會在下文為大家解釋R0的含義以及它是如何與群體免疫這一概念聯系起來的。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型
seir模型啟發式算法_應用數學:群體免疫與SEIR模型
seir模型啟發式算法_應用數學:群體免疫與SEIR模型
seir模型啟發式算法_應用數學:群體免疫與SEIR模型

注:圖檔來自網絡

01、關于R0與群體免疫

R0,即基本傳染數,是量化一種流行病的标準,通俗來說表示了一個得了某種流行病的人平均能傳播給幾個人。簡單地說,R0小于1,意味着得病的人會越來越少,流行病會逐漸消失;R0大于1,流行病則會擴大傳播;R0等于1或者在1左右,總有人治愈的同時就有人患病,流行病會成為一種地區性傳染病一直存在。一般通過控制流行病傳播使R0值降低到1以下就意味着控制疫情的成功。

我們再來看群體免疫的概念。其實群體免疫的概念也很易了解。整個人口群體中應有一部分人免疫病毒(無論是由于感染後痊愈而攜帶抗體的還是天生免疫),也有一部分人不免疫。那麼對于R0值來說,這個傳染數應該隻會影響不免疫的人群。我們假設免疫人群占總體人群的比例為a,則不免疫的人群比例就是1-a,是以實際可能被感染的人群是R0*(1-a),他其實就代表了一個新的R0,考慮免疫人群下的R0。按照上面的推理,實際上我們把這個數字控制在1以下就達到了勝利,病毒會越傳越少。即我們可以得到以下不等式:R0*(1-a)<1。

大家會發現這個不等式很好解,結果是a>1-1/R0. 這就是我們能達成群體免疫所需人群比例的下限。由于現在關于新冠病毒的資料還不完整,我們先假設假設這個R0的數值大概在3-4之間,是以a的數值應該在66.7%到75%之間。是以我們可以得出這樣的結論,如果英國人群當中有66.7%到75%之間的人免疫新冠,則R0*(1-a)能夠被控制到1以下,也就是成功了。當然實際情況要複雜得多,比如人口的出生率死亡率等等,這裡隻是最簡單的模型預測。

下面的圖像也友善大家更直覺的了解群體免疫的作用。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

注:圖檔來自網絡

以上就是關于R0以及群體免疫最直覺的解釋了,但實際上其背後的理論層次是要深得多的。為了研究疫情的發展,我們通常會使用一種研究傳染病大緻走向的動力學模型----SEIR。

02、SEIR模型你需要知道什麼?

“SEIR”其實是一組英文單詞的縮寫,表示的是易感人群(susceptible),處于潛伏期的人群(exposed),感染者(infectious)以及治愈者(recovered)。不難發現,這已正是一個個體從沒有生病到痊愈的全部過程。當然這是一個相對基本的數學模型,但是現實生活往往是更加複雜,有更多變量的。

在數學模型中,我們設定某個群體的總人數為N(不考慮出生率和死亡率,是以N是一個常數)。而S,E,I,R,也不難發現,是四個關于時間的函數。那麼我們可以列出這樣的一個等式,即在任何時刻,都有N=S(t)+E(t)+I(t)+R(t)。同時我們假定所有的S人群的變化都會轉化成E人群,而E人群的會全部轉化為I人群,以此類推。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

首先來看S的函數。

易感人群每一天相較于前一天的改變人數是多少呢?按照我們上面所說,S減少的人,即是E增多的人。為了計算這些被感染的人的數量,首先,需要定義一個系數β,即每人每天接觸的人數*被傳染的機率(這裡的機率指的就是一個未感染的人接觸傳染者後被傳染的機率),比如平均每天一個人會接觸到十個人,而每個被感染者接觸過的人都有10%的機率被感染,則這個數值就是1。

由于β定義中的機率是針對未被感染的人群,是以我們這裡的β*I就表示的是假設全體人群都是易感染群的情況下所有感染者一天能傳染多少人,是以需要乘上S/N(由于所有人不全是易感人群也有E和R人群,是以我們乘的是S人群在人群總體中占的比例)以及時間長度t,這便是新一天的變化量了。當然再加上原有的易感人群,我們就能得出關于易感人群的方程(注意易感人群在疾病傳染過程中一定是減少的,是以有負号),即:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

而為了友善研究每一天的變化,我們把S0挪到左邊去,就得到了每天的變化。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

我們希望的是研究S關于t的函數,然而如果t以天計算我們得到的就隻是個散點圖,我們必須要拟合出一個函數來才行。是以我們把時間從天縮小到一個極其微小的機關來讓t在每一個點都能有一個對應的函數值。我們可以用一個微小量dt來表示時間非常少,而同樣的因為時間很短S的變化也是很小的,是以用dS。那麼再把dt除到等式左邊來,我們就得到了這樣的方程,即:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

國中實體都教過我們,路程除以時間是速率,S關于t的函數也是一樣的。上面的方程其實就表示了S減少的速率。

解決了S(t)函數的問題,我們再來看其他幾個函數,由于已經解釋了這一套推導的過程,接下來會根據上面的解釋進行分析。

我們已經知道了易感人群關于時間的變化速率的函數,下面我們來看潛伏期人群(exposed)的。我們通過模型可以發現,所有的S的減少人數最後都變成了E的新增人數,是以可以先把上面的式子抄下來,當然不能加負号了。同時我們還要減去E人群減少的人數,因為E人群同時在轉化為感染者。(注意我們這裡假設潛伏期的人沒有傳染的能力)

下面我們來處理E轉化為I的部分。我們知道潛伏期的人在潛伏期過後會變成感染者,是以我們需要新定義另一個系數α,它代表了機關時間内從潛伏期過渡到感染者的機率,而1/α則表示了潛伏期的長度。舉例來說,如果潛伏期為14天,即1/α=14天,那麼α就等于1/14,也正好是每一天一個人從潛伏期到被确診的機率。

那麼再使用這個系數α乘上現有E人群的總體,就應該是E人群轉化為I人群的速率。是以整體方程為:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

我們以同樣的思路想一下下面的函數

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

為了觀察感染者是如何變化的,首先我們确定I關于時間t的函數由三部分組成,I0是最開始的感染者,即為一個常數,加上一個潛伏者轉成感染者的人(我們提到過這是一個動力學模型,是以上一個的減少量即是這一個的增加量),還要減去治愈的人,這裡的γ就是被治愈成功的機率。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

為了得到I的改變速率,我們将I0放到等式的左邊得到了δI即I的該變量,再把t除過去,這個時候為了函數的完整性,我們将t設為微小量,I的改變量相應的也變得無限小,就可以得到以下式子。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

R也就很簡單了,同理:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

(這裡的R0不是我們上面所提到的基本傳染數,是recover的初始值,當然在我們從疫情最開始考慮的時候,他預設是0)

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

R的改變速度自然就是上面I轉移過來的速度,即是治愈的機率。

在我們完成了對幾個基本方程的列舉之後,我們也就可以回答R0是怎麼構成的這個問題。

大家如果還記得我們之前定義的幾個系數的話,這個就很好解釋了。R0其實就等于前面的β/γ(那兩個系數)。這也從數學上給我們上了重要的一課:由于β在分子上,是以當每個人每天接觸的人較少時,β就會更小,相應地R0也會減小。這展現了隔離的重要性,因為隔離能顯著地減少每個人每天接觸的人數。

03、如何模組化

了解了這些函數之後可能會有一個問題,我們如何去模組化呢?

我們會用到一些模組化軟體完成對這個方程的求解(如matlab,geogebra)

首先我們為了模組化要完成資料的收集。方程中很多的常數都需要我們收集生活中實際的資料進行求算,如β,α等。資料來源自選即可,對于武漢的疫情資料可以在國家衛建委的網站上收集。對于代碼編寫這個就會涉及到一些matlab等軟體中的算法,我們不會詳細展開,但是我們可以找到網上的一些開源的代碼,他們都是建構好的模闆,如果不需要添加更複雜的結構可以就按模闆來。然後在相應的地方填入資料。

這裡提供一個在github上扒的開源代碼,有興趣的可以進去看看。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

網頁連結:https://github.com/ECheynet/SEIR

04、帝國理工預測

下面我們來看一下帝國理工Covid-19團隊的模組化預測:

相信大家在聽到英國群體免疫提出之後,也聽說了帝國理工釋出了一個模型預測實行群體免疫那種政策将會有數十萬人死亡。那我們帶大家一起看一下這樣的一個報告。

(以下都是官方公開的檔案)

原報告标題為:以非藥物幹預方法減少covid-19死亡率和醫療需求的影響

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

他們在官方釋出的報告中聲明的是使用了transmission model,并沒有聲明具體使用了哪樣一種模型。但是他對各項系數的假設以及模型的準确性是很有參考性的。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

他将潛伏期設為了5.1天,也就是說如果我們按他的資料來的話我們式中的α約等于0.2;他将R0假設為2.4。模型上不同的是,他考慮的模型中,假設所有已有症狀的人比潛伏期的人有50%的機率更有可能感染别人,而我們的模型中E是百分之百不傳染人的。

接下來,他又通過中國的資料預估了死亡率,如下圖:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

下面這兩條曲線展示了如果 do nothing需要的重症監護病床位是極大的。

seir模型啟發式算法_應用數學:群體免疫與SEIR模型
seir模型啟發式算法_應用數學:群體免疫與SEIR模型

這是他們根據資料預測出來的死亡曲線:

seir模型啟發式算法_應用數學:群體免疫與SEIR模型

結語

SEIR模型看似隻是用模組化軟體解個幾微分方程式就可以讓我們預測到未來的傳染病走勢,但是實際上數學預測模型中還有很多精細卻又複雜難以确認的東西需要注意,對于實際生活中的疫情,疫情的較精确模型遠遠要比SEIR複雜,一些國家需要考慮到隔離執行力問題,如武漢的隔離執行力就很強,中國還有大量的自我隔離者,即會在易感人群的數量上與其他國家産生很大的偏差,這種情況有些學者就會用到SIQR的模型,以Q來計算到隔離人數;這個模型是沒有計算出生與死亡率的,但實際上對于一些嚴重的病毒,死亡率肯定要計入其中;以及RNA的改變特性,可能會導緻一些recover的人重新回到S變成一個循環,像這些情況會用到一些SEIR的變式,一些更複雜的傳染病模型,真實的模組化當中永遠是靈活使用,應用中沒有死闆的公式。

關于群體免疫,顯然它的可行性是有待考證的,仍然需要大量資料的支撐,我們在這裡讨論的隻是相關概念和理論。

聲明:文章收集于網絡,版權歸原作者所有,為傳播資訊而發,如有侵權,請聯系小編删除,謝謝!

歡迎加入本站公開興趣群

高性能計算群

興趣範圍包括:并行計算,GPU計算,CUDA,MPI,OpenMP等各種流行計算架構,超級計算機,超級計算在氣象,軍事,航空,汽車設計,科學探索,生物,醫藥等各個領域裡的應用

QQ群:326600878