Распространение сферического коня в вакууме по территории РФ


    Привет от ODS. Мы откликнулись на идею tutu.ru поработать с их датасетом пассажиропотока РФ. И если в посте Milfgard огромная таблица выводов и научпоп, то мы хотим рассказать что под капотом.


    Что, опять очередной пост про COVID-19? Да, но нет. Нам это было интересно именно с точки зрения математических методов и работы с интересным набором данных. Прежде, чем вы увидите под катом красивые картинки и графики, я обязан сказать несколько вещей:


    • любое моделирование — это очень сложный процесс, внутри которого невероятное количество ЕСЛИ и ПРЕДПОЛОЖИМ. Мы о них расскажем.
    • те, кто работал над этой статьей — не эпидемиологи или вирусологи. Мы просто группа любителей теории графов, практикующих методы моделирования сложных систем. Забавно, но именно в биоинформатике сейчас происходит наиболее существенный прогресс этой узкой области математики. Поэтому мы понимаем язык биологов, хоть и не умеем правильно обосновывать эпидемиологические модели и делать медицинские заключения.
    • наша симуляция всего лишь распространение сферического коня в вакууме по территории РФ. Не стоит относиться к этому серьезно, но стоит задуматься об общей картине. Она определенно интересная.
    • эта статья не существовала бы без датасета tutu.ru, за что им огромное спасибо.
    • мы хотим пригласить других заинтересованных исследователей в ODS.ai и под инициативой ML for Social Good (канал #ml4sg в ODS) вместе улучшать эту модель, чтобы получить опыт и возможность применять ее в будущем. Все интересные задачи, которые мы еще не решили, будут помечены в статье как TODO.

    Под катом — результаты нашего марш-броска на датасет.


    Датасет пассажиропотока


    Так как рабочих рук у нас было не слишком много, мы старались разделить направления работы, покрывая как можно больше возможных задач.
    Лучше всего иллюстрирует датасет визуализация Вадима Сафронова (safronov).


    Самое интересное, что мы нашли:


    1. В России есть 5 городов, на которые приходится половина всех перелетов: Москва, Санкт-Петербург, Симферополь, Краснодар, Сочи.
    2. На 26 направлений из 9736 (это все виды транспорта) приходится 80% всего пассажиропотока, а всего в датасете — 951 город.

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


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


    Модель


    Мы решили использовать практически самое простое семейство эпидемиологических моделей: SIR. Но их конечно сильно больше. С помощью таких моделей можно прогнозировать, сколько людей заразятся какой-то болезнью в закрытой популяции, сколько восстановятся после нее и как быстро.


    Для удобства восприятия результатов мы ввели для симуляции два основных параметра (изменяя которые смотрели на результаты):


    • contact_rate можно рассматривать как скорость распространения болезни. Больше значение параметра -> быстрее распространяется болезнь.
    • recovery_rate — параметр, отвечающий за скорость выздоровления.

    Для каждой пары "город отправления А" — "город прибытия Б" мы сделали следующий цикл:


    1. В день 0 у нас есть начальное число зараженных в А.
    2. Распространяем болезнь на 1 день в А (тут мы и используем SIR-модель).
    3. Считаем процент зараженных от численности населения А.
    4. Считаем число зараженных в пассажиропотоке из А в Б, просто используя процент заболевших из шага 2.
    5. В Б пересчитываем число инфицированных для запуска модели на следующий день. Кто-то приехал из А в Б зараженный, а значит и число зараженных для запуска модели внутри Б изменилось.

    Так мы делаем на каждый день для каждого из 1000 городов нашего датасета. Повторяем в течении полугода.


    Данные по начальному числу зараженных брали на 24 марта 2020ого года.


    И вот настал тот самый момент, когда всплывают все ЕСЛИ, которые нам пришлось ввести.


    • Сравнивая модели, мы предполагали, что социальная изоляция уменьшает contact_rate, что кажется вполне логичным.
    • Мы НЕ пытались подогнать параметры модели под статистику реального распространения. Подобрали их лишь примерно, поэтому реальные числа можно воспринимать только для оценки порядка и динамики заболевания, а не как абсолютное значение.
    • Мы НЕ учитывали возрастное распределение в каждом регионе. Это тоже влияет на распространение вируса.
    • Мы НЕ учитывали вместимость больничных коек, смертность и другие вещи. Нам были интереснее маршруты распространения.

    TODO: мы могли бы учитывать и передачу вируса внутри транспортного средства. Т.e. зная пассажиропоток из А в Б, мы можем посчитать, сколько требуется самолетов/поездов и для каждого транспортного средства произвести свой запуск модели внутри этого средства. Село 2 больных и 98 здоровых -> вышло 10 больных и 90 здоровых. Кроме того, задача оценки кросс-заражения между пассажирами идентична той, которую поручено исполнить операторами связи.


    Результаты


    Легенда:


    • Размер метки на карте показывает население этого города. Больше кружок — больше людей.
    • На карте не отображаются города, где нет ни одного заболевшего. Поэтому если город появился — значит там кто-то заболел.
    • Цветом обозначается число заболевших. От зеленого (мало заболевших) до красного (много заболевших).

    Мы провели два основных кейса на полгода вперед.


    TODO: было бы интересно сделать симуляцию с возможностью закрыть часть маршрутов в любое время.


    Первый кейс: ничто не происходит, никто не реагирует.


    Все полеты происходят как обычно, в жизни людей ничего не меняется.
    contact_rate = 0.27
    recovery_rate = 0.05



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


    Второй кейс: социальная изоляция и уменьшение перемещений.


    Во втором кейсе мы ввели социальную изоляция (понизили contact_rate), весь пассажиропоток снизили до 10% от обычных значений.


    contact_rate = 0.21
    recovery_rate = 0.05



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


    Итоги


    Пожалуйста, соблюдайте рекомендации ВОЗ, чаще мойте руки и следите за собой. Снизьте число социальных контактов и путешествий.


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


    Было сделано распределенной командой ODS из Берлина, Санкт-Петербурга, Лиссабона и Москвы в канале #ml4sg. Отдельное спасибо всем участникам проекта и всем заинтересовавшимся.


    Все данные и код есть в репозитории.


    Берегите себя. Ваше ODS.

    Open Data Science
    Крупнейшее русскоязычное Data Science сообщество
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 36

      +9
      Добрый день. А легенду к видео, счетчик дней можно добавить? а то информативность очень слабая выходит :-(
        +5
        Да, вы правы.
        Но в связи с постоянно меняющейся обстановкой мы торопились довести это до хотя бы такого вида. Постараемся добавить :(
          +2
          Очень ждем, спасибо!
          +6
          На самом деле там без подбора параметров большого смысла в конкретных числах нет. Важна только динамика и сравнение этой динамики при разных симуляциях. Поэтому с числами информативности не будет сильно больше.
            +2
            Пока самая информативная задача, из того что вижу — это отложенный спрос на пассажиропоток
          +5
          Все самое вкусное по ссылке на GitHub в конце.
            +1
            Пожалуйста, соблюдайте рекомендации ВОЗ, чаще мойте руки и следите за собой

            Ничто не ново под луной:
            "Будь осторожен, следи за собой" ©
            Цой жив знал.

              +28

              "Моя ладонь превратилась в мытую ладонь."

                +10
                «Не выходи из комнаты, не совершай ошибку»
                  +9
                  «Эй, прохожий, проходи. Эх, пока не заразил»
                    +1
                    «Мама, мы все тяжело больны.
                    Мама, я знаю, мы все сошли с ума...»
                    0
                    Ты вернешься домой — ты там умрешь еще вернее:
                    Дома газ над плитой, кипяток в батарее
                    Твой утюг на тебя 220 замкнет
                    И собака твоя тебя не вспомнит и сожрет
                    Канарейка взлетит и тебе выклюет глаз
                    Ты уснешь с сигаретой — загорится твой матрац
                    Прозвенит будильник — ты умрешь с перепуга
                    Если спишь не один — с тобой умрет твоя подруга
                    И ты не поймешь, что настал твой черед
                    Обрести свой покой.
                +3
                Стоит рассматривать Архангельск, Северодвинск, Новодвинск как один город. Общий аэропорт Талаги, общие поезда до Исакогорки, межгородской трафик в десятки тысяч авто в день.
                  +2
                  Много таких городов в изначальном датасете, которые находятся в одном регионе, но между ними есть отдельные жд и автобусные маршруты. Можно считать это издержками исходных данных и идеей для улучшения.
                  +2
                  Спасибо за работу!
                    0
                    Интересно учитывать набитость транспорта. Если внутри выдерживаются пресловутые полтора метра, то заразность заметно ниже.
                      0
                      Полтора — не полтора, но если в DC в метро стоят на каждой ступеньке, то в Поребрик-сити — через ступеньку.
                      Всегда.
                      Даже в утренний и вечерний ажиотаж.
                      Разница в % зараженных чувствительна возможно и поэтому.
                        +1
                        В Мск через ступеньку все стоят. Даже когда толкучка и очередина. Может на Выхино иначе, но на куче прочих на каждой ступеньке чтоб стояли — не встречал.
                        Вот только в Питере редко кто слева мимо пройдёт, а в Мск это нормальное явление.
                          0
                          А сравните среднюю длину эскалатора там и там, получите самый очевидный ответ, почему так )
                            0
                            Ой, я даже не живя в Мск в Питере по эскалаторам бегал. И сейчас в Мск хочу независимо от длины. При том, что с тростью для снятия нагрузки с одного колена.
                            Не, это больше от общего отношения к жизни зависит)
                      +1
                      России есть 5 городов, на которые приходится половина всех перелетов: Москва, Санкт-Петербург, Симферополь, Краснодар, Сочи.

                      А как же Новосибирск ???

                        +1
                        Судя по всему, на него приходится часть от оставшейся половины перелетов)
                          +2
                          Важно отмечать — в апреле прошлого года.
                          +5
                          Дык мы отсюда, кроме чартеров, всюду летаем через Москву. А иногда и на Дальний Восток (sic!) выгоднее дешевле через Москву
                          +6
                          Несмотря на то, что тема очень печальная, меня всегда привлекает всякая статистика.
                          Чем больше вариантов визуализации — тем лучше. Отслеживание транспортных потоков нынешних и докарантинных позволяет перевести историю в то самое сослагательное наклонение «а что было бы, если бы мы...».
                          Думаю, многие теперь будут ждать прогресса в визуализации. Я когда писал свой вариант графика по CoVid-19 — каждый день с утра свежими глазами смотрю вчерашний вариант и нахожу что можно улучшить, дабы восприятие графика не напрягало и раскрывало картину.
                          Дабы не слишком нагло влезать в чужую песочницу - под катом моя визуализация
                          Я вот поймал себя на мысли, что мне ещё не попадалась визуализация, которая бы полностью удовлетворила мой интерес к динамике развития по странам.
                          А раз не попалась — самое время нарисовать свою.
                          Данные взяты из открытых источников, график — полностью самописный.
                          Первые варианты рисовал на WPF, но постепенно столкнулся с проблемами производительности — WPF не умеет в многопоточность. Вернулся к GDI+.
                          Монтаж кадров и наложение музыки делаются автоматом при помощи FFMPEG, на выходе уже готовый ролик.

                            +3
                            Тогда скорее всего Вам вот что покажется интересным. Может на хабре уже делились в коментах: несколько дней назад попалась отличная наглядная визуализация моделирования влияния различных параметров на процесс распространения «сферического коня в вакууме».

                            www.youtube.com/watch?v=gxAaO2rsdIs

                            Пока это лучший математический канал, который мне попадался, в плане визуализации и объяснения на пальцах математических абстракций, объектов и многого другого. Например, запомнились их обзоры по преобразованиям Фурье и матрицам.
                            –21
                            Симферополь — это не Россия и его придется вернуть обратно где взяли. Но заразу от России сейчас подцепит, да.
                              +8

                              Ви так говорите, будто Россия — единственная страна, в которой можно "подцепить заразу". Чем спорить до брызгания слюней — я ща закладочку сделаю, вернёмся к этому вопросу где-то через полгодика — время рассудит :)

                                +1
                                Я думаю скифы город взад не возьмут. Ввиду отсутствия живых представителей.
                                Чингисхан тоже ничего такого в завещании не упоминал.
                                  0
                                  Я как представитель тавров готов принять, но кто же отдаст.
                                  А по сути аэропорт Симферополь после милитаризации аэропорта Бельбек (Севастополь) стал транзитным хабом и обслуживает весь полуостров 2,5 млн. чел. — и Севастополь и Ялту и все курорты. По сути в датасете Севастополь представлен автобусами и одним поездом из Питера.
                                  +3
                                  Так вернули же, еще в 2014.
                                  Кстати надо еще вернуть и другие части — русское русским, польское полякам, венгерское венграм, румынское румынам.

                                  Именно искуственность, созданная Советским Союзом при образовании УССР вылилась в эту странную напряженность.
                                    –2
                                    «Вернули» только в шизофреническом воображении путинских гопников.
                                    Что там было при УССР, никого не волнует. По международному праву Крым — это Украина и точка. Если же РФ будет продолжать валять дурака, то доиграется до повторения участи СССР.
                                      +1
                                      На самом деле мало кого волнует именно международное право, которое попирается всеми, кто имеет такую возможность. Именно поэтому факты таковы, каковы они есть.

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

                                      Очень печально наблюдать на ресурсе, где должны по идее собираться интеллектуальные люди, мнения подобные вашему, которые являются отражением довольно топорной пропаганды, а не реальных фактов.
                                        –1
                                        мнения подобные вашему, которые являются довольно топорной пропагандой, а не отражением реальных фактов.

                                        Вы с себя это списывали?
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    Модель это хорошо, проблема в том, что для её построения не хватает сегодня достоверных данных. Исходные данные очень сильно искажены массой субъективных факторов.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое