Часть 1, Часть 2
В прошлой статье мы рассмотрели пример моделирования первой вспышки коронавируса с помощью экспоненциального роста. Следующая ступень анализа — логистический рост. Воспользуйтесь Python notebook и данными для примера, чтобы начать практиковаться уже сейчас.
Логистический рост — это математическая функция, которая может использоваться в нескольких ситуациях. Логистический рост характеризуется увеличением роста в начальный период, но снижением на более поздней стадии, при приближении к максимуму. В случае с коронавирусом этот максимальный предел будет равен общему количеству людей в мире, потому что, когда все заболеют, рост неизбежно уменьшится.
В других случаях использования логистического роста числом максимум может быть размер популяции животных, растущей в геометрической прогрессии до момента, когда среда обитания не сможет обеспечить достаточное количество пищи для всех животных. Далее, рост замедляется до тех пор, пока не будет достигнута максимальная емкость среды.
Причиной использования экспоненциального роста для моделирования вспышки коронавируса является то, что, согласно исследованиям специалистов, первая вспышка эпидемии следует принципу экспоненциального роста, а общий период эпидемии — принципу логистического роста.
Логистический рост и экспоненциальный ростЛогистический рост характеризуется следующей формулой:
Формула логистического ростаГде:
Также отметим два других очень интересных момента об этой формуле:
Для тех, кто хочет лучше понять математическое значение формулы: приведенная выше функция фактически получена из приведенной ниже дифференциальной формулы, обнаруженной Пьером Франсуа Ферхюльст. Я объясню её пошагово:
Для ясности, рассмотрим гипотетический пример, в котором:
Сначала подставляем значения 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 — Заключение:
Мы определили, что логистическая функция по форме действительно очень близка к наблюдаемым данным распространения коронавируса в Китае. Чтобы применять эту информацию в реальной жизни, необходимо выполнить много проверок моделей, сравнить точность и другие показатели производительности различных моделей, а также внимательно следить за тем, будут ли будущие тенденции распространения вируса следовать сценарию выбранной модели.
Это выходит за рамки этой статьи, которая просто пытается показать, как определить кривую логистического роста. Тем не менее, теоретически, мы можем сформулировать некоторые наблюдения:
Согласно этой модели, также можно вычислить момент, когда скорость роста достигла максимального значения:
В случае если эта модель будет тщательно проверена и верифицирована, она может быть использована законодателями для оценки принятых и определения правильных мер.
Надеемся, что наш пример прояснил вам процесс определения логистической модели и ее применение для различных ситуаций. Благодарим за чтение!
Перевод статьи Joos Korstanje: Modeling Logistic Growth
Комментарии