Data Science

Чтобы лучше усвоить материал, рекомендуем вам использовать данные для примера и Python Notebook.

Почему именно экспоненциальный рост?

Экспоненциальный рост — это математическая функция, которая может использоваться в нескольких ситуациях. С ее формулой можно вычислить количество случаев в определенный момент времени. В случае с коронавирусом — число зараженных людей.

Причиной использования экспоненциального роста для моделирования вспышки коронавируса является то, что, согласно исследованиям специалистов, первая вспышка эпидемии следует принципу экспоненциального роста.

Формула экспоненциального роста

Экспоненциальный рост выражается следующей формулой:

Функция экспоненциального роста

Где:

  • x (t) — количество случаев в момент времени t;
  • x0 — количество случаев в начале эпидемии, также называемое начальным значением;
  • b — количество людей, зараженных каждым больным человеком, скорость роста (фактор роста).

Рассмотрим гипотетический случай, в котором:

  • начальное значение = 1 ( первый зараженный человек), поэтому x0 = 1;
  • каждый больной заражает 2 других людей, поэтому скорость роста будет b = 2;
  • мы проанализируем развитие эпидемии начиная с периода 0 и заканчивая периодом 14.

Сначала подставляем значения a и b, чтобы получить формулу для нашей эпидемии:

Далее мы используем эту формулу, чтобы вычислить значение y для каждого значения t от 0 до 14. Таким образом, мы получим число зараженных людей в каждый промежуток времени, как видно из таблицы ниже. При 1 зараженном в период 0 и факторе роста 2, получаем более 16000 случаев в период 14.

В графическом представлении мы получаем кривую, очень напоминающую те, которые видим в ситуации с коронавирусом:

График экспоненциального роста с фактором роста 2

Нахождение точной формулы для эпидемии коронавируса

Чтобы найти реальный фактор роста эпидемии коронавируса, рассмотрим данные о ее распространении:

Данные о коронавирусе. Источник: https://covid.ourworldindata.org/data/full_data.csv

Находим фактор роста с помощью линейной регрессии

На первый взгляд эти данные говорят только о количестве случаев в день, а не о факторе роста заражений. Лучший способ найти фактор роста, основываясь на эмпирических ежедневных наблюдениях, — это использовать статистическую модель, называемую линейной регрессией.

Линейная регрессия позволяет определить наилучшие значения для a и b в указанной ниже формуле, учитывая эмпирические наблюдения для y и x. В этой формуле у — количество случаев, а х — время. Однако необходимо слегка переписать функцию экспоненциального роста, так как линейная регрессия может работать только с формулами следующего вида:

Тип формулы, который нужен для линейной регрессии

Переписываем экспоненциальную формулу для линейной регрессии

Для начала необходимо переписать формулу в виде линейной регрессии. Для этого воспользуемся логарифмами:

  • мы используем логарифм количества инфекций вместо количества инфекций;
  • мы используем логарифм фактора роста вместо фактора роста.

Применяем модель линейной регрессии к нашим данным

Шаг 1. Первым делом импортируем данные в Python Notebook и применяем преобразование логарифма:

Шаг 2. Далее используем библиотеку Statsmodels для определения функции линейной регрессии:

Шаг 3. Составляем функцию прогнозирования на основе таблицы.

Вернемся к нашей формуле линейной регрессии:

Тип формулы, который нужен для линейной регрессии

Таблица statsmodels дает значения для a и b под coef (в середине):

  • Коэффициент const — это значение для a в нашей модели линейной регрессии: 0.4480.
  • Коэффициент Time — это значение для b: 0.1128.

Теперь мы можем заполнить функцию линейной регрессии:

Обратите внимание, что:

  • a в линейной регрессии является логарифмом начального значения;
  • b в линейной регрессии является логарифмом фактора роста.

Следовательно:

  • логарифм начального значения равен 0.4480;
  • логарифм фактора роста 0.1128.

Чтобы найти действительные значения, нам нужно вычислить их с помощью экспоненты:

Теперь можно вернуться к исходной формуле экспоненциального роста и вставить эти значения, чтобы узнать фактическое значение в случае коронавируса:

Фактическая формула для эпидемии коронавируса

Прогнозируем ситуацию на две недели вперёд

Полученную выше формулу можно использовать для прогнозирования ситуации на любую дату. Стоит отметить, что данные прогнозы являются лишь примером, показывающим, как математика и статистика могут использоваться в эпидемиологии. Эпидемиологи из реальной жизни, помимо экспоненциального роста, тестируют разные типы моделей, а также проделывают большую работу по валидации моделей, что было пропущено в данном примере.

Как только лучшая модель будет найдена, ее можно использовать для прогнозирования. Используя функцию, которую мы нашли с помощью кривой экспоненциального роста, можно сделать прогноз на 2 недели после последнего 68-го дня в нашем наборе данных. Для этого просто помещаем t = 68 в формулу, и модель предсказывает количество заражений на этот день: 3355.

Возможности для дальнейшего анализа:

Мы рассмотрели применение модели линейной регрессии для прогнозирования процесса экспоненциального роста. Обратите внимание на следующие меры предосторожности:

  • Линейная модель — это только приблизительная функция экспоненциального роста и она имеет определенный предел погрешности.
  • Функция экспоненциального роста не является идеальным представлением эпидемии. Мы определили наиболее подходящую функцию экспоненциального роста, но в дальнейшем возможно изучение, например, логистического роста.
  • Экспоненциальный рост соответствует эпидемии только на ее начальных этапах. В какой-то момент вылечившиеся люди больше не будут распространять инфекцию. Когда (почти) все окажутся зараженными или вылечившимися, рост прекратится.

Читайте также:


Перевод статьи Joos Korstanje: Modeling Exponential Growth

Предыдущая статьяВведение в GraphQL: сложные операции и переменные
Следующая статьяJava-Lombok: нужны ли геттеры и сеттеры?