/time_series_theory

Решение задач по анализу временных рядов: детекция пиков QRS на сигналах ЭКГ с помощью ML, прогнозирование заболеваемости COVID с помощью LSTM и др.

Primary LanguageJupyter Notebook

Решение различных задач по анализу временных рядов

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


№1 Задачей является научить модель детектировать наличие QRS комплекса в сигнале ЭКГ.

В процессе решения был создан бинарный классификатор, который по небольшой области размером в 200 временных отчетов (вырезанной части исходного сигнала) научился определять, имеется ли по центру участка QRS пик.
В качестве ML модели использовался градиентный бустинг. Обучение происходило по данным ЭКГ сигналов большого числа пациентов. Датасет сигналов электрокардиограммы для обучения и тестирования был взят с MIT-BIH Database.
Для итогового определения QRS комплеса на неизвестном сигнале используется подход со скольжением небольшого окна по сигналу и последующей классификацией каждой области на наличие пика с помощью заранее обученной модели.
В работе подробно описан метод предподготовки трейновых данных, позволяющий добиться точности порядка 98% на тестовых данных (данных ЭКГ новых пациентов).

Решение данного проекта представлено в формате документа ECG_classification.ipynb

kolesnokov__dima


№2 Прогнозирование заболеваемости COVID-19.

Для решения данной задачи было проведено обучение рекурентной LSTM нейронной сети. Данная архитектура сети лучше всего позволяет прогнозировать временные ряды.
В качестве тестовых и трейновых данных использовался датасет о заболеваемости короновирусом в России - COVID.csv

Решение данного проекта представлено в формате документа LSTM_prediction.ipynb


№3 Решение задач на фильтрацию сигналов с помощью рядов Фурье, предсказания текущей координаты трекуемого объекта с помощью фильтра Калмана, а также задач на установление зависимостей между темпами вакцинации и активностью твитов на данную тематику.

Данный проект состояит из трех отдельных несвязанных между собой задач:

  1. Ряды Фурье в задаче анализа временных рядов.
    В этом разделе с помошью представления исходного сигнала в виде ограниченной суммы рядов получилось:
  • Оценить высокочастотную периодичность прироста новых случаев заболевания COVID (график "Прирост по дням")
  • Определить даты, соответствующие наивысшим точкам каждой волны заболеваемости
  1. Фильтр Калмана в задаче анализа временных рядов.
    В этом разделе рассматривалось задание по определению положения трекуемого объекта в каждый момент времени, у которого мы знаем примерную математическую модель, описывающую его движение, а так же имеем зашумленные данные от GPS локатора, который находится на объекте.
    В процессе решения были для каждой искусственной задачи подобраны наилучшие коэффициенты учета неточностей координаты и скорости для минимизации квадрата ошибки (разности между текущей координатой реального движения и координатой предсказанной с помощью фильтра в данный момент времени).

  2. Использование эконометрических подходов в задачах по анализу взаимосвязи между временными рядами
    Даны два датасета: Динамика вакцинации от ковида (А) и активность твитов про ковид и вакцинацию (Б) Необходимо было:

  • Используя тест Гренджера на причинность, определить, является ли процесс, описываемый датасетом А причиной процесса Б (по Гренджеру), и наоборот.
  • Используя векторную авторегрессионную модель определить, являются ли данные процессы стационарными
  • В случае, если оба процесса являются нестационарными, проверить, являются ли данные процессы коинтегрированными

Решение данного проекта представлено в формате документа fft_kalman_econometrics.ipynb