Базовое репродуктивное число R0

Одно число определяет, разгорится эпидемия или потухнет сама собой. Это число — $R_0$, и оно связывает заразность болезни со скоростью выздоровления.

Базовое репродуктивное число $R_0$ — среднее количество людей, которых заражает один больной за время болезни в популяции, где все восприимчивы. В модели SIR оно равно отношению $\frac{\beta}{\gamma}$.

Произносится как «эр-ноль». Индекс «ноль» подчёркивает: речь о самом начале эпидемии, когда вокруг ещё нет ни иммунных, ни принятых мер, и каждый встречный больного — потенциальная жертва заражения. Зачем нам это число? Оно одним взглядом отвечает на главный вопрос: способна ли болезнь вызвать эпидемию вообще, и насколько массовой она будет. По $R_0$ можно прикинуть и то, какую долю населения нужно защитить, чтобы вспышка остановилась.

Откуда берётся $R_0 = \frac{\beta}{\gamma}$

Рассуждение простое. Один больной заражает других со скоростью $\beta$ в день (в самом начале, когда почти все восприимчивы). Болеет он в среднем $\frac{1}{\gamma}$ дней. Перемножаем «скорость заражения» на «длительность болезни» и получаем общее число заражённых от одного человека:

R0 = beta * (1 / gamma) = beta / gamma

пример: beta = 0.3, gamma = 0.1
R0 = 0.3 / 0.1 = 3   один больной заражает троих

Порог $R_0 = 1$

Дальше всё решает сравнение с единицей. Если $R_0 \gt 1$, каждый больной в среднем заражает больше одного человека — число заражённых растёт от поколения к поколению, начинается эпидемия. Если $R_0 \lt 1$, один больной заражает в среднем меньше одного, цепочки передачи обрываются, и вспышка затухает. Значение $R_0 = 1$ — пограничное: болезнь тлеет, не разрастаясь и не угасая.

Порог коллективного иммунитета

$R_0$ предполагает, что вокруг больного все восприимчивы. Но если часть людей уже имеет иммунитет, многие контакты больного «пропадают впустую» — приходятся на тех, кого нельзя заразить. Эффективное число заражений падает. Эпидемия перестаёт расти, когда доля восприимчивых снижается настолько, что на каждого больного приходится в среднем меньше одного нового. Этот порог называют порогом коллективного иммунитета $1 - \frac{1}{R_0}$:

доля с иммунитетом для остановки = 1 - 1/R0

R0 = 2  -->  1 - 1/2 = 0.50  (50%)
R0 = 3  -->  1 - 1/3 = 0.67  (67%)
R0 = 4  -->  1 - 1/4 = 0.75  (75%)

Для $R_0 = 3$ порог составляет около 67%: если иммунитет (например, после болезни) есть у двух третей населения, оставшихся восприимчивых уже слишком мало, чтобы поддержать рост, и волна спадает. Чем заразнее болезнь (выше $R_0$), тем больше людей нужно защитить.

Размер эпидемии зависит от $R_0$

$R_0$ влияет не только на то, начнётся ли вспышка, но и на её итоговый масштаб — сколько людей переболеет всего. Прогоним модель SIR до конца при разных $\beta$ ($\gamma$ фиксируем равным 0.1) и посмотрим на финальное число переболевших R.

def final_size(beta, gamma=0.1):
    S, I, R, N = 999.0, 1.0, 0.0, 1000.0
    for _ in range(300):
        new_inf = beta * S * I / N
        new_rec = gamma * I
        S -= new_inf
        I += new_inf - new_rec
        R += new_rec
    return R

print(f"{'beta':>5} {'R0':>5} {'переболело':>11}")
for beta in (0.12, 0.15, 0.20, 0.30):
    print(f"{beta:>5.2f} {beta/0.1:>5.1f} {final_size(beta):>11.1f}")

Вывод:

 beta    R0  переболело
 0.12   1.2       270.5
 0.15   1.5       586.6
 0.20   2.0       802.8
 0.30   3.0       946.7

При $R_0$ чуть выше единицы (1.2) переболевает лишь около трети населения. С ростом $R_0$ итоговый размер эпидемии быстро растёт: при $R_0 = 3$ болезнь охватывает уже более 94% людей. Связь нелинейная — небольшое увеличение заразности у заразных болезней резко поднимает долю переболевших.

Как работает под капотом

Функция final_size прогоняет ту же пошаговую модель SIR, что и в прошлом уроке, но на 300 шагов — заведомо дольше, чем длится любая вспышка в этих условиях. К концу заражённых практически не остаётся (I почти ноль), эпидемия завершилась, и значение R перестаёт меняться. Это финальное R и есть общее число переболевших.

Заметьте: даже при $R_0 = 3$ переболевают не все 1000, а около 941. Это не ошибка округления. Под конец эпидемии заражённых становится так мало, что последним восприимчивым просто «не от кого» заразиться — цепочки обрываются, оставляя небольшую долю населения нетронутой. Точная доля выживших-непереболевших определяется уравнением, в которое $R_0$ входит нелинейно, поэтому считать её удобнее численно, прогоняя модель.

Частые ошибки

  • Считать $R_0$ свойством одной лишь болезни. $R_0$ зависит и от поведения людей, и от плотности контактов: одна и та же болезнь в разных условиях даёт разные $R_0$.
  • Путать $R_0$ и эффективное $R_{eff}$. $R_0$ — это «в полностью восприимчивой популяции»; по ходу эпидемии и при мерах работает меньшее эффективное число.
  • Думать, что $R_0 = 3$ означает «переболеет ровно 3/4». Размер эпидемии и порог иммунитета — разные величины, и оба считаются по $R_0$, но по-разному.
  • Ждать, что при $R_0 = 3$ переболеют все 100%. Часть населения остаётся восприимчивой, потому что эпидемия затухает раньше.
  • Останавливать модель слишком рано. Чтобы получить финальный размер, нужно прогнать достаточно шагов, пока I не упадёт практически до нуля.

Итоги

  • $R_0 = \frac{\beta}{\gamma}$ — среднее число людей, которых заражает один больной в полностью восприимчивой популяции.
  • $R_0 \gt 1$ — эпидемия растёт; $R_0 \lt 1$ — затухает; $R_0 = 1$ — пограничный случай.
  • Порог коллективного иммунитета равен $1 - \frac{1}{R_0}$; для $R_0 = 3$ это около 67%.
  • Чем выше $R_0$, тем больше итоговый размер эпидемии — связь нелинейная и быстро растущая.
  • Даже при высоком $R_0$ переболевают не все: эпидемия гаснет, оставив часть населения нетронутой.
Проверьте себя
1. Чему равно R0 в модели SIR?
Agamma / beta
Bbeta / gamma
Cbeta * gamma
Dbeta + gamma
2. Что произойдёт с эпидемией, если R0 < 1?
AОна будет расти всё быстрее
BОна затухнет — цепочки передачи обрываются
CПереболеют ровно все
DНичего не изменится
3. Каков порог коллективного иммунитета при R0 = 3?
AОколо 33%
BОколо 50%
CОколо 67%
D100%
4. Почему при R0 = 3 переболевают не все 100% населения?
AИз-за ошибки округления в модели
BЭпидемия затухает раньше — под конец заражённым почти некого встретить среди восприимчивых
CПотому что gamma слишком велика
DПотому что R0 на самом деле меньше 1
py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →