Базовое репродуктивное число R0
Одно число определяет, разгорится эпидемия или потухнет сама собой. Это число — R0, и оно связывает заразность болезни со скоростью выздоровления.
Базовое репродуктивное число R0 — среднее количество людей, которых заражает один больной за время болезни в популяции, где все восприимчивы. В модели SIR оно равно отношению beta/gamma.
Произносится как «эр-ноль». Индекс «ноль» подчёркивает: речь о самом начале эпидемии, когда вокруг ещё нет ни иммунных, ни принятых мер, и каждый встречный больного — потенциальная жертва заражения. Зачем нам это число? Оно одним взглядом отвечает на главный вопрос: способна ли болезнь вызвать эпидемию вообще, и насколько массовой она будет. По R0 можно прикинуть и то, какую долю населения нужно защитить, чтобы вспышка остановилась.
Откуда берётся R0 = beta/gamma
Рассуждение простое. Один больной заражает других со скоростью beta в день (в самом начале, когда почти все восприимчивы). Болеет он в среднем 1/gamma дней. Перемножаем «скорость заражения» на «длительность болезни» и получаем общее число заражённых от одного человека:
R0 = beta * (1 / gamma) = beta / gamma пример: beta = 0.3, gamma = 0.1 R0 = 0.3 / 0.1 = 3 один больной заражает троих
Порог R0 = 1
Дальше всё решает сравнение с единицей. Если R0 > 1, каждый больной в среднем заражает больше одного человека — число заражённых растёт от поколения к поколению, начинается эпидемия. Если R0 < 1, один больной заражает в среднем меньше одного, цепочки передачи обрываются, и вспышка затухает. Значение R0 = 1 — пограничное: болезнь тлеет, не разрастаясь и не угасая.
Порог коллективного иммунитета
R0 предполагает, что вокруг больного все восприимчивы. Но если часть людей уже имеет иммунитет, многие контакты больного «пропадают впустую» — приходятся на тех, кого нельзя заразить. Эффективное число заражений падает. Эпидемия перестаёт расти, когда доля восприимчивых снижается настолько, что на каждого больного приходится в среднем меньше одного нового. Этот порог называют порогом коллективного иммунитета:
доля с иммунитетом для остановки = 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%)
Для R0 = 3 порог составляет около 67%: если иммунитет (например, после болезни) есть у двух третей населения, оставшихся восприимчивых уже слишком мало, чтобы поддержать рост, и волна спадает. Чем заразнее болезнь (выше R0), тем больше людей нужно защитить.
Размер эпидемии зависит от R0
R0 влияет не только на то, начнётся ли вспышка, но и на её итоговый масштаб — сколько людей переболеет всего. Прогоним модель 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
При R0 чуть выше единицы (1.2) переболевает лишь около трети населения. С ростом R0 итоговый размер эпидемии быстро растёт: при R0 = 3 болезнь охватывает уже более 94% людей. Связь нелинейная — небольшое увеличение заразности у заразных болезней резко поднимает долю переболевших.
Как работает под капотом
Функция final_size прогоняет ту же пошаговую модель SIR, что и в прошлом уроке, но на 300 шагов — заведомо дольше, чем длится любая вспышка в этих условиях. К концу заражённых практически не остаётся (I почти ноль), эпидемия завершилась, и значение R перестаёт меняться. Это финальное R и есть общее число переболевших.
Заметьте: даже при R0 = 3 переболевают не все 1000, а около 941. Это не ошибка округления. Под конец эпидемии заражённых становится так мало, что последним восприимчивым просто «не от кого» заразиться — цепочки обрываются, оставляя небольшую долю населения нетронутой. Точная доля выживших-непереболевших определяется уравнением, в которое R0 входит нелинейно, поэтому считать её удобнее численно, прогоняя модель.
Частые ошибки
- Считать R0 свойством одной лишь болезни. R0 зависит и от поведения людей, и от плотности контактов: одна и та же болезнь в разных условиях даёт разные R0.
- Путать R0 и эффективное Rt. R0 — это «в полностью восприимчивой популяции»; по ходу эпидемии и при мерах работает меньшее эффективное число.
- Думать, что R0 = 3 означает «переболеет ровно 3/4». Размер эпидемии и порог иммунитета — разные величины, и оба считаются по R0, но по-разному.
- Ждать, что при R0 = 3 переболеют все 100%. Часть населения остаётся восприимчивой, потому что эпидемия затухает раньше.
- Останавливать модель слишком рано. Чтобы получить финальный размер, нужно прогнать достаточно шагов, пока I не упадёт практически до нуля.
Итоги
- R0 = beta/gamma — среднее число людей, которых заражает один больной в полностью восприимчивой популяции.
- R0 > 1 — эпидемия растёт; R0 < 1 — затухает; R0 = 1 — пограничный случай.
- Порог коллективного иммунитета равен 1 - 1/R0; для R0 = 3 это около 67%.
- Чем выше R0, тем больше итоговый размер эпидемии — связь нелинейная и быстро растущая.
- Даже при высоком R0 переболевают не все: эпидемия гаснет, оставив часть населения нетронутой.