- PVSM.RU - https://www.pvsm.ru -
Многие время от времени задумываются — насколько точны прогнозы погоды? Чей прогноз погоды точнее? В какую сторону чаще всего ошибаются прогнозы для моего города?
Время математических приключений!

Последние несколько лет Яндекс активно развивает свой погодный сервис. Пару лет назад была представлена технология Метиум [1] и прогноз осадков [2] с точностью до минут.
В обсуждении к этим публикациям выделялись комментарии fantast8 [3]. «Метеоролог-любитель» в довольно агрессивной форме набросился критиковать технологии Яндекса и если не обращать внимания на стиль общения, то суть претензий сводилась к отсутствию фактуры и закрытости статистики.
И тут я задумался: а кто-нибудь вообще считает точность прогнозов?
Быстрое гугление выдало проект ForecastAdvisor [4], однако там оценивались прогнозы исключительно по городам США, и, естественно, отсутствовали русскоязычные провайдеры (Яндекс, Гидромет и т.д.).
В рунете некоторое время существовал проект MyCli.me, ныне закрытый. Однако у него были постоянные проблемы со сбором данных и рейтинговая система (выбор наилучшего прогноза) не была основана на научном методе.
Кроме того, я нашел много начинаний, например, от OLS [5] и lucius [6], но все они были ограничены или по времени, или по городу, или по провайдеру. Например, один из самых удивительных проектов от slimyhorror [7] анализирует сбываемость прогнозов уже больше 5000 дней подряд! Но оцениваются только прогнозы от BBC и только для городов Великобритании.
Таким образом, было принято решение делать свой проект. Дело за малым — собирать прогнозы, собирать фактическую погоду и оценивать сбываемость на основе научно обоснованной формулы. С нее и начнем.
В 2009 году Гидрометцентр России выпустил «Наставления по краткосрочным прогнозам». Согласно этому руководству, прогноз считается сбывшимся, если он отличается от фактический наблюдаемой температуры не больше, чем на 3 °С в любую сторону. Если прогноз отличается от фактической погоды больше, чем на 3°, то такой прогноз считается несбывшимся (пункт 7.3.1.4 наставления).
Прогнозы погоды должны оцениваться раздельно для дня и ночи (7.2.3). Оправдываемость суточного прогноза определяется как среднее из значений оправдываемости прогнозов на ночь и на день. Оценка успешности прогнозов погоды за календарный период (месяц, сезон, год и т.д.) заключается в вычислении их средней оправдываемости за соответствующий период (9.1.1).
Окей, вроде не сложно — берем прогноз на завтра (на послезавтра и т.д.), собираем данные о фактической погоде, сравниваем отдельно для дня и ночи. Если
Math.abs(predict - actual) > 3
то прогноз не сбылся (Pt=0%), если <= 3 то Pt=100%. Считаем среднюю оправдываемость за соответствующий период и получаем нужные данные.
От парсинга сайтов с погодой сразу отказался, т.к. парсинг HTML не отличается стабильностью и это неизбежно увеличило бы количество ошибок в итоговой статистике. К счастью, многие провайдеры предоставляют API для доступа к своим прогнозам. На первом этапе я добавил прогнозы от accuweather.com, darksky.net, openweathermap.org и wunderground.com. Все они предоставляют JSON-API. На втором этапе были добавлены норвежский yr.no с XML-API, российский Гидрометцентр (пришлось парсить RSS) и Яндекс.Погода.
На сегодняшний день есть договоренность с foreca.com и ведутся переговоры с gismeteo.ru, intellicast.com и английским metoffice. Если у вас есть знакомые в этих проектах, готовые помочь с API, — пишите!
В теории со сбором фактической погоды не должно было возникнуть никаких проблем. В каждом крупном городе есть станция наблюдения за погодой, обычно в центре города, например в Москве это ВДНХ [8]. Национальные гидрометеорологические службы передают данные с этих станций во Всемирную службу погоды [9], где она обрабатывается и хранится. Наблюдения передаются в виде SYNOP-кода каждые 3 или 6 часов.
Кроме того, в каждом крупном аэропорту есть станция наблюдения за погодой, которая каждый час (или полчаса) передает авиационный отчет о погоде в формате METAR.
Сырые SYNOP и METAR данные можно найти на сайте NOAA; обработанные данные на сайте ogimet.com. Сами станции удобно искать на weatherobs.com.
Однако тут есть несколько проблем. Во-первых, качество передаваемых данных — в сводках нередко бывают опечатки (например, буква O вместо цифры 0). Во-вторых, стабильность данных. В 2017 году Авиаметтелеком на целый месяц прекратил передачу в международный обмен метеосводок с более чем пятидесяти аэродромов России. В-третьих, есть города, в которых мне просто не удалось найти работающую станцию. Например, в Ростове-на-Дону нет данных ни по станции 34730 (URRR), ни по станции 34731.
В подобных ситуациях для сбора фактической погоды я использую информацию от частной сети станций The Weather Company [10] (ныне принадлежит IBM).
В итоге получился сайт Meteotrust.com [11]
На данный момент данные собираются для 10 городов России от 7 провайдеров. В ближайшее время планирую добавить больше городов, больше провайдеров и больше периодов (долгосрочные прогнозы от hydrometcenter и accuweather, прогнозы на 10 дней). Кроме того, готовится сбор статистики по осадкам. Оценивать точность прогнозов по осадкам немного сложнее, чем по температуре. Об этом будет отдельный пост.
Openweathermap — дно.
Accuweather, yr.no, darksky — крепкие середнячки.
У Яндекса и Wunderground — превосходные прогнозы.
Гидрометцентр часто борется с Яндексом за первое место по качеству краткосрочных прогнозов. Однако есть предположение, что с увеличением количества городов, особенно зарубежных, общая успешность прогнозов Гидрометцентра будет падать.
Автор: zapolnoch
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/analiz-danny-h/278666
Ссылки в тексте:
[1] Метиум: https://habrahabr.ru/company/yandex/blog/271725/
[2] прогноз осадков: https://habrahabr.ru/company/yandex/blog/317626/
[3] fantast8: https://habrahabr.ru/users/fantast8/
[4] ForecastAdvisor: https://www.forecastadvisor.com/docs/about/
[5] OLS: https://geektimes.ru/post/112958/
[6] lucius: https://geektimes.ru/post/283950/
[7] slimyhorror: https://weather.slimyhorror.com/
[8] это ВДНХ: http://maps.yandex.ru/?um=m-uaN_AktR03hI2TQlDFAmvpiu8mO9Ua&l=sat
[9] Всемирную службу погоды: http://worldweather.wmo.int/en/pilot.html
[10] The Weather Company: https://www.wunderground.com/weatherstation/overview.asp
[11] Meteotrust.com: https://meteotrust.com/
[12] Источник: https://habrahabr.ru/post/354160/?utm_campaign=354160
Нажмите здесь для печати.