Базовое репродуктивное число 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 переболевают не все: эпидемия гаснет, оставив часть населения нетронутой.
Проверьте себя
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