Data Science

Часть 1, Часть 2

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

Почему именно логистический рост?

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

В других случаях использования логистического роста числом максимум может быть размер популяции животных, растущей в геометрической прогрессии до момента, когда среда обитания не сможет обеспечить достаточное количество пищи для всех животных. Далее, рост замедляется до тех пор, пока не будет достигнута максимальная емкость среды. 

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

Логистический рост и экспоненциальный рост

Формула логистического роста

Логистический рост характеризуется следующей формулой:

Формула логистического роста

Где:

  • y (t) — количество случаев в любой момент времени t;
  • c — предельное значение, максимальная емкость для y;
  • b (фактор роста) должен быть больше 0.

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

  • начальное значение равно: c / (1 + a);
  • максимальная скорость роста при t = ln (a) / b и y (t) = c / 2.

Глубокое погружение в формулу логистического роста для любителей математики

Для тех, кто хочет лучше понять математическое значение формулы: приведенная выше функция фактически получена из приведенной ниже дифференциальной формулы, обнаруженной Пьером Франсуа Ферхюльст. Я объясню её пошагово:

  • Выделенная зеленым часть dy / dt указывает, что эта формула предназначена для расчета роста, а не численности населения.
  • Мы видим, что у и с находятся в формуле, значит рост населения зависит от численности населения (у) и от максимальной емкости (с).
  • Когда y равно c (то есть население имеет максимальный размер), y / c будет равно 1. Следовательно, выделенный синим множитель будет равен 0 и рост, соответственно, будет равен 0.
  • Когда у намного меньше, чем с (популяция находится далеко от предела), выделенная синим часть будет приблизительно равна 1. Следовательно, рост определяется частью ry, выделенной оранжевым. Оранжевая часть — это формула экспоненциального роста.

Простой пример логистического роста

Для ясности, рассмотрим гипотетический пример, в котором:

  • максимальное количество больных людей с составляет 1000;
  • мы начинаем с начального значения, равного 1 (первый зараженный человек), поэтому c / (1 + a) = 1, даёт 1000 / (1 + a) = 1, где а= 999;
  • в начале инфекции каждый больной заражает 2 других людей, поэтому скорость роста b = 2;
  • мы будем проверять развитие эпидемии от 0 до 10.

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

В Python это выглядит следующим образом:

Далее мы используем эту формулу, чтобы вычислить значение y для каждого значения t от 0 до 10. В результате, мы получим число зараженных людей в каждый промежуток времени, как видно из таблицы ниже. Это показывает, что в начале наблюдается быстрый рост числа инфекций, но затем его темпы замедляются и рост заканчивается на максимальной емкости .

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

Графическое представление логистического роста

От данных о коронавирусе к формуле логистического роста

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

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

Нелинейная оценка наименьших квадратов для логистического роста коронавируса в Китае

Эти данные предоставляют информацию исключительно о количестве случаев в день. Чтобы успешно применить формулу логистического роста, нам необходимо получить правильные значения параметров a, b и c.

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

ШАГ 1 — “Читаем” данные:

ШАГ 2 — Определяем соответствующую логистическую функцию:

ШАГ 3 — Произвольно инициализируем a, b и c:

Мы инициализировали np.random.exponential, но вы можете использовать все что угодно. Внимание: ваш выбор может повлиять на результат шага 5.

ШАГ 4 — Устанавливаем верхнюю и нижнюю границы для a, b и c:

Нижние границы для всех параметров равны 0. Я установил верхнюю границу для b на 3, потому что с первой попытки я задал её произвольно, и она стала слишком высокой. Верхние границы a и c не оказали отрицательного влияния на подгонку кривой, поэтому я установил сравнительно высокие границы для этих переменных.

ШАГ 5 — Используем Scipy Curve Fit для нелинейной оценки наименьших квадратов:

На этом этапе Scipy выполняет оптимизацию нелинейных наименьших квадратов и дает нам значения для a, b и c, которые минимизируют ошибку наименьших квадратов нашей модели.

ШАГ 6 — Сравниваем на графике кривые полученной функции и реальных данных:

Как вы можете видеть на графике ниже, логистическая модель действительно не так уж далека от реальных данных распространения коронавируса в Китае.

ШАГ 7 — Заключение:

Мы определили, что логистическая функция по форме действительно очень близка к наблюдаемым данным распространения коронавируса в Китае. Чтобы применять эту информацию в реальной жизни, необходимо выполнить много проверок моделей, сравнить точность и другие показатели производительности различных моделей, а также внимательно следить за тем, будут ли будущие тенденции распространения вируса следовать сценарию выбранной модели.

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

  • Согласно этой модели, c составляет 81 802, предсказывая максимальный предел для числа инфекций в Китае, который составит 81 802 случаев.

Согласно этой модели, также можно вычислить момент, когда скорость роста достигла максимального значения:

  • это был момент времени: t = ln (a) / b = ln (61,5) / 0,1929 = 21-й день;
  • число инфекций в этот момент составило: у = с / 2 = 40 500.

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

Надеемся, что наш пример прояснил вам процесс определения логистической модели и ее применение для различных ситуаций. Благодарим за чтение!

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


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

Предыдущая статьяПлохие практики Angular
Следующая статьяИзбегайте этих нелепых ошибок при работе с Python