Параметр µ - интенсивность выздоровления, величина, обратная средней продолжительности болезни. Это стандартное значение для ОРВИ и гриппа, полученное из статистических наблюдений. Данный параметр может зависеть от штаммов вирусов, но для заболеваемости населения конкретной местности, где могут быть представлены различные штаммы, данный параметр является усредненным и постоянным.
Параметр г - скорость потери иммунитета, величина, обратная средней продолжительности сохранения иммунитета к данному заболеванию. Данная величина также берется из медицинских справочников и в целом является постоянной.
Параметры А и r напрямую зависят от этапа эпидемической ситуации и определяют её дальнейшее развитие. А - среднее число зараженных от внешних источников в единицу времени. Параметр r - показывает среднее число людей, приобретающих иммунитет в результате различных профилактических мер. Поэтому для каждого этапа они будут разные, для вспышек заболеваний и для периода фоновой заболеваемости. Потому они и являются вариативными.
Перейдем непосредственном к главной задачи данной работы. Моя задача - оценить параметры эпидемической ситуации для различных районных территорий и округов города Москвы в период фоновой заболеваемости ОРВИ и гриппом. Период фоновой заболеваемости - это время в летний период с 24 по 33 неделю года. Для данного периода будем считать, что А и r равны нулю. Основной параметр, который является предметом нашего интереса - интенсивность заражения . Дополнительным исследованием также будет проверка для данной местности актуальности постоянных параметров µ и г.
С помощью соотношений данной модели и таблицы понедельной заболеваемости ОРВИ и гриппом для 57 поликлиник Москвы, нужно написать программный код, который будет обрабатывать данные и выводить оптимальные параметры модели. Для этого нужно реализовать считывание данных из таблиц, основной алгоритм поиска минимума целевой функции и подбор параметров, минимизирующих ее; проделать группировку данных по округам Москвы и повторить аналогичный анализ для округов; вывести все необходимые данные в таблицы и построить графики, сравнивающие модель и реальные данные заболеваемости; проделать группировку по всей Москве и по округам и найти в дополнение к предыдущему найти параметры µ и г.
1.5 Выбор методов решения
Для реализации данной программы был выбран язык программирования Python. Данные плюсы и преимущества языка повлияли на выбор программного средства.
- Специальные библиотеки данного языка осуществляют синхронизацию и работу с таблицами Excel и упрощают работу с большим объемом данных,
- Возможность работать в интерактивной оболочке IPython Notebook и выводить таблицы и графики по ходу исследования, редактировать и изменять код,
- Удобство работы с массивами данных,
- Создание отчетов и итоговых таблиц.
Ввиду того, что целевая функция состоит из рекуррентных соотношений, стандартные методы нахождения минимума здесь не применимы. Поэтому минимум был найден путем перебора параметров из допустимых диапазонов.
Все вышеперечисленные факторы повлияли на выбор языка программирования. Конечно, есть низкоуровневые языки, в которых при подробном написании вычисления производились бы гораздо быстрее, но в моем случае скорость не играла решающей роли.
Результаты по Главе 1
1. Приведен обзор основных эпидемических моделей
2. Разобраны способы нахождения параметров модели на основе статистических данных
3. Описана подробно модель, на которой основана программная реализация
4. Сформулированы задачи
5. Обоснован выбор языка программирования
2. Описание решений
2.1 Возможности программы для решения задач
Исходя из всех поставленных задач, данное исследование можно поделить на три основные части. Было реализовано три подзадачи, при различных программы для подсчета параметров. Помимо самого написания программ, были созданы сопутствующие документы и видео по использованию данной программы.
Таблица 2.
Реализация трех подзадач.
|
Для параметра «Интенсивность заражения- л» |
Для трех параметров «л, I, R» |
Для пяти параметров «л, I, R, µ, г» |
|
|
ѕ Для каждой из 57 поликлиник города Москвы ѕ Для 11 округов Москвы |
ѕ Для каждой из 57 поликлиник города Москвы ѕ Для 11 округов Москвы |
ѕ Для суммированных данных по Москве |
Каждая из трех программ имеет следующие общие возможности:
1. Программы открывают все Excel таблицы из указанной пользователем папки и выгружают из каждой таблицы все необходимые для анализа данные. Создают новые таблицы и объединяют их в единый массив данных.
2. Данные заболеваемости нормируются на население в 100000 человек.
3. Для каждой таблицы из созданного массива строятся графики реальных данных понедельной заболеваемости с учетом фонового 3-сигма диапазона, графики заболеваемости с 24 по 33 неделю, выводится название округа и поликлиники, среднее число заболевших в фоновый период для 2016 и 2017 годов.
4. Написаны функции для системы рекуррентных соотношений SIR+А модели, функции для смоделированного числа заболевших от оптимальных найденных параметров.
5. Задается целевая функция, использующая массив реальных данных и массив данных, вычисленных по рекуррентным соотношениям. Реализуется нахождение минимума целевой функции с помощью перебора параметров (один, три или пять параметров в соответствии с подзадачей) из допустимых диапазонов.
6. Найденные параметры, при которых достигается минимум, записываются в сводные таблицы по 2016 и 2017 годам, которые выводятся в IPython Notebook, а также сохраняются в отдельные файлы Excel.
7. Строятся сравнительные графики модельной заболеваемости от оптимальных параметров и реальной заболеваемости в фоновый период для 2016 и 2017 годов.
8. Строится график, показывающий различия между параметром л по всем 57 поликлиникам в 2016 и 2017 годах.
9. Считаются коэффициенты корреляции от найденных параметров.
10. Из исходных таблиц суммируются данные по округам Москвы и считаются те же параметры и проделываются все пункты с 5-9 только для округов.
2.2 Детализация функционала программ
2.2.1 Этап работы с Excel
В начале исследования я получила 57 таблиц с данными заболеваемости из поликлиник. Для того, чтобы реализовать автоматизированное считывание данных из таблиц, в таблицах не должно быть никаких расхождений, лишних строк, отступов, измененных названий колонок, несоответствующих формату данных. Поэтому перед началом программирования мне нужно было привести таблицы к единому виду, так как они были заполнены по-разному, несмотря на то что давался единый образец (сложности сбора статистической информации).
Моей задачей являлось записать данные понедельной заболеваемости за 2016 и 2017 годы, количество обратившихся в поликлинику людей в каждый из годов, округ, номер и адрес поликлиники. Исходная таблица имела следующий вид, пример приведен в приложении. (Приложение 1)
Данная задача решалась с помощью следующих возможностей языка Python: glob.glob (адрес пути) возвращает список путей, соответствующих шаблону данного пути. В моем случае список путей ко всем Excel файлам в указанной пользователем папке. Pandas.read_excel - считывает таблицу в pandas dataframe. С помощью поиска по названию колонок pandas dataframe создается запись только необходимых для анализа данных и создание удобного массива данных.
После считывания всех 57 таблиц был получен большой массив данных, состоящий из новых таблиц, заполненных только необходимой информацией. Обращаться к таблице поликлиники стало возможным через обращение к элементу массива. Обращение к отдельным столбцам конкретной поликлиники стало возможным через указание двух индексов массива: первый относился к таблице из массива, второй к столбцу выбранной таблицы. Таким образом был получен удобный способ по работе со всеми необходимыми столбцами каждой из 57 таблиц. Этот подход обобщает работу с 57 разными файлами и позволяет производить анализ сразу для всех однотипных элементов. К тому же разработанный алгоритм удобен тем, что файлов Excel таблиц в исходной папке может быть сколько угодно, и с любым количеством файлов программа будет работать корректно.
2.2.2 Этап вывода данных реальной заболеваемости
Для того, чтобы сравнивать между собой данные и результаты по каждой из поликлиник, в которых различное количество обратившихся за помощью людей, была проделана нормировка данных на 100000 человек. То есть, каждая строка столбца заболевших людей умножалась на 100000 и делилась на количество обратившихся в данную поликлинику. Видеть ситуацию реальной заболеваемости - важный этап любого анализа. По виду графика понедельной заболеваемости для одного года можно определить, типичная ли ситуация заболеваемости была в данной конкретной местности, были ли выбросы и ошибки сбора статистических данных. Исходя из общих наблюдения, ситуация заболеваемости ОРВИ и гриппом имеет сезонные пики. Приблизительно в конце осени каждого года и в конце зимы начале весны наблюдается резкое увеличение количества больных. В середине лета, как правило, можно наблюдать ситуацию фоновой заболеваемости, нет фактора агрессивности внешней среды. Этот период и является предметом изучения в данной работе. Параметр интенсивность заражения в этот период связан больше с частотой контактов, чем с активностью патогенной среды. Поэтому есть основание полагать, что данная характеристика может отражать особенности местности наблюдения.
Далее стандартными способами языка Python найдены среднее значение по периоду фоновой заболеваемости и доверительный интервал, построены графики реальной заболеваемости за 2016 и 2017 годы. Пример построенного графика в приложении (Приложение 2).
2.2.3 Модель и основной алгоритм
Основной алгоритм программы представляет собой несколько функций, которые в совокупности осуществляют запись рекуррентных соотношений, нахождение оценки количества заболевших, запись целевой функции и нахождение минимума целевой функции, а также функцию для построения графика от смоделированных данных заболеваемости при найденных оптимальных параметрах (Приложение 3).
Далее написан алгоритм нахождения оптимальных параметров для каждой из 57 поликлиник. По ходу нахождения параметры записываются в Dataframe таблицы и позже конвертируются в Excel таблицы и сохраняются в основной папке с программой автоматически (Приложение 4).
В зависимости от подзадачи, находится один, три или пять параметров. Данный алгоритм представляет собой перебор параметров из допустимых диапазонов и нахождение минимума целевой функции. Как только найден минимум, найдены и параметры, при которых минимум достигается. Основной параметр - интенсивность заражения используется для построения оценки количества заболевших и позволяет сравнивать заболеваемость в фоновый период в различных районных территориях и округах Москвы. Остальные параметры также уточняют оценку количества заболевших.
2.2.4 Вывод графиков и результатов по поликлиникам
Таблица 3.
Результаты для трех подзадач.
|
Для параметра «Интенсивность заражения- л» |
Для трех параметров «л, I, R» |
Для пяти параметров «л, I, R, µ, г» |
|
|
ѕ Две итоговые таблицы для 2016 и 2017 годов ѕ 57 графиков для 2016 года ѕ 57 графиков для 2017 года |
ѕ Две итоговые таблицы для 2016 и 2017 годов ѕ 57 графиков для 2016 года ѕ 57 графиков для 2017 года |
ѕ Для поликлиник не вычислялись, только для округов и Москвы в целом |
В таблицах указан округ, номер поликлиники, количество обратившихся и найденные параметры для конкретной поликлиники. Выводятся графики реальной и смоделированной заболеваемости при оптимальных параметрах. Понадобился также график зависимости целевой функции от параметра интенсивность заражения. Наглядная зависимость функции от этого параметра позволила провести проверку на наличие других локальных минимумов. Подробные результаты будут представлены в приложении (Приложение 4).
После получения таблиц, с помощью возможностей Python, конвертируем Pandas Dataframe в таблицу Еxcel. Фрагмент автоматически собранной таблицы в Приложении. В заключении анализа зависимости параметров и результатов по двум годам, проводится вычисление коэффициентов корреляции. Строится сравнительный график для 57 поликлиник по параметру «Интенсивность заражения л» (Приложение 5, 6).
распространение инфекция модель эпидемический
2.2.5 Группировка данных заболеваемости по округам Москвы
С помощью метода языка Python DataFrame.groupby группирую внутри каждого из 11 округов данные заболеваемости. И проделываю все те же операции и тот же анализ. Группировка осуществляется для всех трех программ. Это позволяет сравнить в результате точность моделей при увеличении количества параметров. Сгруппированные данные по округам позволяют получить усредненные оценки по более обширной территории, избежать влияния ошибок в статистических данных. Сгруппированные данные также нормируются на 100000, для того чтобы можно было сравнивать их между собой и сравнивать с поликлиниками (Приложение 7).
2.2.6 Реализация поиска пяти параметров «л, I, R, µ, г»
Ввиду того, что при увеличении параметров при переборе значительно увеличивается время работы программы, для всех 57 поликлиник этот анализ проводить было нецелесообразно. Поэтому анализ был проделан для 11 округов и для Москвы в целом. Диапазоны параметров, из которых производился перебор имели более крупный шаг из соображений времени работы программы. Как будет видно далее, точность оценки количества заболевших людей в период фоновой заболеваемости при увеличении количества параметров увеличивалась.