В последние дни я вижу все больше и больше проектов, связанных с моделированием эпидемий, моделированием SIR и т. Д. Очевидно, что пандемия COVID-19 побудила разработчиков по всему миру предлагать проекты и решения, которые пытаются предсказать развитие пандемии в мире. следующие недели или месяцы.
Вероятно, самая простая модель, которую можно использовать для моделирования эпидемии, - это модель SIR.
Но как определяется модель SIR?
(Из WolframMathworld)
Модель SIR - это эпидемиологическая модель, которая вычисляет теоретическое число людей, инфицированных заразной болезнью, в закрытой популяции с течением времени. Название этого класса моделей происходит от того факта, что они включают связанные уравнения, связывающие количество восприимчивых людей S (t), количество людей, инфицированных I (t), и количество людей, выздоровевших R (t).
Модель требует начальных значений Уязвимых людей в популяции (S0), Зараженных (I0) и Вылеченных (R0). Ему также нужен бета фактор, который постоянно определяет, как часто контакт с восприимчивым инфицированным приводит к новой инфекции, и гамма фактор, который показывает скорость выздоровления инфицированного человека и его попадания в стойкая фаза.
Моделирование выполняется для N итераций (которые представляют собой временной интервал моделирования).
Установка и пример
SIR.js можно установить через npm, набрав npm install sir.js
.
Код доступен в этом репозитории GitHub, и вы можете внести свой вклад!
Настроить и использовать его очень просто:
let SIRjs = require('sir.js');
let solution = SIRjs.solve({S0: 0.9, I0: 0.1, R0: 0.0, t:1, N: 500, beta: 0.35, gamma: 0.1});
SIRjs.printChart(solution);
У него всего 2 функции: solve()
и printChart()
solve()
функция принимает аргумент объекта со следующими ключами:
- S0: Начальное значение S (восприимчивость)
- I0: начальное значение I (инфекционное)
- R0: Начальное значение R (восстановленное)
- t: временной шаг
- N: временной интервал (в единицах времени), также известный как продолжительность моделирования.
- beta: Параметр, определяющий, как часто контакт с восприимчивым инфицированным приводит к новому заражению.
- гамма: скорость выздоровления инфицированного и перехода в фазу устойчивости.
Он возвращает массив объектов, которые содержат значения S, I и R для каждого момента.
printChart()
функция печатает диаграмму ASCII для каждой из переменных S, I, R.
Затем вы можете отобразить результаты любым способом.
Вот, например, я построил график результатов с помощью Google Таблиц.
Вот и все, ребята!
Надеюсь, вам будет интересно и полезно!