Skip to content

Commit 9f77674

Browse files
committed
🔄 resync sir_model.md
1 parent 753de32 commit 9f77674

2 files changed

Lines changed: 52 additions & 31 deletions

File tree

.translate/state/sir_model.md.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
source-sha: a1cd90c5ef6d6f05277318f47fe21eda60fa5e6b
2+
synced-at: "2026-07-18"
3+
model: claude-sonnet-5
4+
mode: RESYNC
5+
section-count: 5
6+
tool-version: 0.17.0

lectures/sir_model.md

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,20 @@ kernelspec:
77
display_name: Python 3
88
language: python
99
name: python3
10+
translation:
11+
title: 新冠病毒建模
12+
headings:
13+
Overview: 概述
14+
The SIR Model: SIR模型
15+
The SIR Model::Time Path: 时间路径
16+
The SIR Model::Parameters: 参数
17+
Implementation: 实现
18+
Experiments: 实验
19+
'Experiments::Experiment 1: Constant R0 Case': 实验1:固定R0的情况
20+
'Experiments::Experiment 2: Changing Mitigation': 实验2:改变缓解措施
21+
Ending Lockdown: 解除封锁
1022
---
23+
1124
```{raw}
1225
<div id="qe-notebook-header" align="right" style="text-align:right;">
1326
<a href="https://quantecon.org/" title="quantecon.org">
@@ -16,9 +29,9 @@ kernelspec:
1629
</div>
1730
```
1831

19-
# 新冠病毒建模
32+
# {index}`新冠病毒建模 <single: Modeling COVID 19>`
2033

21-
```{contents}
34+
```{contents} Contents
2235
:depth: 2
2336
```
2437

@@ -55,7 +68,7 @@ import numpy as np
5568
from numpy import exp
5669
```
5770

58-
最后,我们使用SciPy的数值例程odeint来求解微分方程
71+
我们还将使用SciPy的数值例程odeint来求解微分方程
5972

6073
```{code-cell} ipython3
6174
from scipy.integrate import odeint
@@ -65,17 +78,17 @@ from scipy.integrate import odeint
6578

6679
## SIR模型
6780

68-
我们要分析的是一个包含四个状态的SIR模型。在这个模型中,每个人都必须处于以下四种状态之一:
81+
我们要分析的这个版本的SIR模型包含四个状态。
82+
83+
假设人口中的每个人都必须处于这四种状态之一。
84+
85+
这些状态是:易感者(S)、暴露者(E)、感染者(I)和移出者(R)。
6986

70-
- 易感者(S):尚未感染,可能被感染的人群
71-
- 潜伏者(E):已感染但尚未具有传染性的人群
72-
- 感染者(I):已感染且具有传染性的人群
73-
- 移出者($R$):已经康复或死亡的人群
87+
说明:
7488

75-
需要注意的是:
76-
- 一旦康复,就会获得免疫力,不会再次感染
77-
- 处于移出状态($R$)的人包括康复者和死亡者
78-
- 潜伏期的人虽然已感染,但还不能传染给他人
89+
* 处于R状态的人已经被感染,并且已经康复或死亡。
90+
* 假设康复者已获得免疫力。
91+
* 暴露组中的人尚不具有传染性。
7992

8093
### 时间路径
8194

@@ -96,47 +109,49 @@ from scipy.integrate import odeint
96109
\begin{aligned}
97110
\dot s(t) & = - \beta(t) \, s(t) \, i(t)
98111
\\
99-
\dot e(t) & = \beta(t) \, s(t) \, i(t) - \sigma e(t)
112+
\dot e(t) & = \beta(t) \, s(t) \, i(t) - σ e(t)
100113
\\
101-
\dot i(t) & = \sigma e(t) - \gamma i(t)
114+
\dot i(t) & = σ e(t) - γ i(t)
102115
\end{aligned}
103116
```
104117

105118
在这些方程中,
106119

107-
* $\beta(t)$ 被称为*传播率*(个体与他人接触并使其暴露于病毒的速率)。
108-
* $\sigma$ 被称为*感染率*(暴露者转变为感染者的速率)
109-
* $\gamma$ 被称为*恢复率*(感染者康复或死亡的速率)。
120+
* $\beta(t)$ 被称为**传播率**(个体与他人接触并使其暴露于病毒的速率)。
121+
* $\sigma$ 被称为**感染率**(暴露者转变为感染者的速率)
122+
* $\gamma$ 被称为**恢复率**(感染者康复或死亡的速率)。
110123
* 点符号 $\dot y$ 表示时间导数 $dy/dt$。
111124

112125
我们不需要单独建模处于 $R$ 状态的人口比例 $r$,因为这些状态构成一个分区。
113126

114127
具体来说,"已移除"的人口比例为 $r = 1 - s - e - i$。
115128

116-
我们还将追踪累计病例数 $c = i + r$
129+
我们还将追踪 $c = i + r$,即累计病例数
117130

118131
(即所有已感染或曾经感染的人)。
119132

120-
对于适当定义的$F$(见下面的代码), 系统{eq}`sir_system`可以用向量形式表示为
133+
系统{eq}`sir_system`可以用向量形式表示为
121134

122135
```{math}
123136
:label: dfcv
124137
125138
\dot x = F(x, t), \qquad x := (s, e, i)
126139
```
127140

141+
其中$F$的具体定义参见下面的代码。
142+
128143
### 参数
129144

130145
参数$\sigma$和$\gamma$由病毒的生物学特性决定,因此被视为固定值。
131146

132147
根据Atkeson的笔记,我们采用以下参数值:
133148

134-
* $\sigma = 1/5.2$ - 这意味着平均潜伏期为5.2天
135-
* $\gamma = 1/18$ - 这表示患者平均需要18天才能康复或死亡
149+
* $\sigma = 1/5.2$ - 这意味着平均潜伏期为5.2天
150+
* $\gamma = 1/18$ - 这表示患者平均需要18天才能康复或死亡
136151

137152
传播率被构造为
138153

139-
* $\beta(t) := R(t) \gamma$,其中$R(t)$是时间$t$时的*有效再生数*
154+
* $\beta(t) := R(t) \gamma$,其中$R(t)$是时间$t$时的**有效再生数**
140155

141156
(这个符号表示有点令人困惑,因为$R(t)$与表示已移除状态的符号$R$不同。)
142157

@@ -203,7 +218,8 @@ x_0 = s_0, e_0, i_0
203218
```{code-cell} ipython3
204219
def solve_path(R0, t_vec, x_init=x_0):
205220
"""
206-
给定R0的时间路径,计算感染人数i(t)和累计病例c(t)的演变轨迹。
221+
给定R0的时间路径,通过数值积分求解i(t)和c(t)。
222+
207223
"""
208224
G = lambda x, t: F(x, t, R0)
209225
s_path, e_path, i_path = odeint(G, x_init, t_vec).transpose()
@@ -333,18 +349,17 @@ plot_paths(i_paths, labels)
333349
plot_paths(c_paths, labels)
334350
```
335351

336-
## 解除封锁措施的影响分析
352+
## 解除封锁
337353

338-
接下来我们将基于Andrew Atkeson的[研究](https://drive.google.com/file/d/1uS7n-7zq5gfSgrL3S0HByExmpq4Bn3oh/view),探讨不同时机解除封锁措施对疫情发展的影响
354+
以下内容复现了Andrew Atkeson关于解除封锁时机的[附加研究结果](https://drive.google.com/file/d/1uS7n-7zq5gfSgrL3S0HByExmpq4Bn3oh/view)
339355

340356
我们对比两种解封方案:
341357

342-
1. 短期封锁方案:实施30天严格封锁($R_t = 0.5$),之后17个月放开管控($R_t = 2$)
343-
2. 长期封锁方案:实施120天严格封锁($R_t = 0.5$),之后14个月放开管控($R_t = 2$)
358+
1. $R_t = 0.5$持续30天,之后17个月$R_t = 2$。这相当于30天后解除封锁。
359+
2. $R_t = 0.5$持续120天,之后14个月$R_t = 2$。这相当于4个月后解除封锁。
344360

345-
模型的初始条件设定为:
346-
- 25,000名活跃感染者
347-
- 75,000名处于潜伏期的感染者(已感染但尚未具有传染性)
361+
这里所考虑的参数设定模型初始时有25,000名活跃感染者,
362+
以及75,000名已经暴露于病毒、即将具有传染性的人群。
348363

349364
```{code-cell} ipython3
350365
# 初始条件
@@ -398,4 +413,4 @@ paths = [path * ν * γ * pop_size for path in i_paths]
398413
plot_paths(paths, labels)
399414
```
400415

401-
如果我们能够将感染高峰推迟到疫苗研发出来之前,就有可能大幅降低最终的死亡人数
416+
如果我们能够将感染高峰推迟到疫苗研发出来之前,就有可能降低累计死亡人数

0 commit comments

Comments
 (0)