Утром, когда завтракаю, почти ежедневно просматриваю Яндекс.Погоду и у меня переодически возникает чувство дежавю, но только наоборот. Глядишь — одна температура на выходные указана, а на другой день смотришь — уже совем другие показатели температуры обещаны. Потихоньку начинаешь сомневаться в своей памяти (30 лет — это же уже четвёртый десяток начался). Но чтобы окончательно не пасть духом — я решил проверить, насколько прогноз соотносится с реальной температурой.
Голубая линия — это реальная температура. Оранжевая область — это диапазон предсказаний.
Немного технических деталей
Первым делом поставил в крон скрипт, который каждый час сохраняет страницу Яндекс.Погоды в виде html файла и оставил его поработать некоторое время.
curl https://yandex.ru/pogoda/novosibirsk > test/`date +%Y-%m-%d-%H-%M`
Следующим шагом написал небольшой php скрипт, поражающий своей простотой и лаконичностью, для парсинга сохраненных файлов и формирования json файлов, которые, в свою очередь, используются для отображения графиков. Пример обработки сохраненного дня:
function parseFile($day) {
global $mega, $csv, $realT;
$predicts = [];
$html = file_get_html(__DIR__ . '/test/' . $day);
foreach($html->find('.forecast-brief_cols_10') as $element) {
foreach ($element->find('.forecast-brief__item-temp-day') as $s) {
$predicts[] = str_replace('?', '-', $s->plaintext);
}
}
$dayDate = date_create_from_format("Y-m-d-H-i", $day);
$dayDateString = date_format($dayDate, 'Y-m-d H:i:s');
$dayArr = explode('-', $day);
if ($dayArr[3] == 14) {
foreach($html->find('.current-weather__thermometer_type_now') as $s) {
$realT[] = [
intval(date_format($dayDate, 'U') . '000'),
intval(str_replace('?', '-', $s->plaintext))
];
}
}
for ($i = 1; $i < count($predicts); $i++) {
$nextDay = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($dayDateString)));
$nextDayArr = explode('-', $nextDay);
$line = [
'Y' => $dayArr[0],
'm' => $dayArr[1],
'd' => $dayArr[2],
'H' => $dayArr[3],
'i' => $dayArr[4],
'_m' => $nextDayArr[1],
'_d' => $nextDayArr[2],
'_C' => $predicts[$i]
];
$mega[] = $line;
$csv .= join(';', array_values($line)) . "\n";
}
}
Для внесения ясности
- Прогнозом я считал дневные температуры дня, показанные не на текущий день (на картинке нижний длинный выделенный прямоугольник);
- Реальную температуру я брал из верхнего выделенного прямоугольника в 14:25
Результат вы могли видеть в начале статьи, где реальная температура пытается проползти сквозь диапазон предсказаний, но что ей удаётся не всегда. Посмотреть подробнее и потыкать на разные даты можно здесь.
Примеры графиков предсказаний температуры для конкретного дня:
Вывод
Память моя в порядке, можно не волноваться.
FireWind
Кстати, гораздо интереснее будет, если вместо одного оранжевого цвета предсказаний будет несколько цветов — по дням. Например за 5,3,2,1 день. Очевидно, что чем дальше от актуальной даты предсказание, тем больше будет отклонение от действительной температуры. А возможно, все совсем не так очевидно.
sizeg
У меня коллега был отучившийся на метролога, он говорил, что только 3 дня точных. Остальное «предсказание».
Dreamastiy
Действительно ли это был метролог?
Метеорология
mwaso
А можно Вас попросить подобные последним двум графикам составить для GisMeteo.ru, AccuWeather.com, Weather.com, Meteoinfo.ru?
Ktulkhu_Triediniy
Я бы ещё в этот заявочный список попросил добавить Foreca и Weather Underground, а также было бы неплохо сравнить у всех них соотношение реальной температуры от какого-нибудь электронного градусника и показываемой, как температура на текущий момент времени.
sergarcada
Вопрос еще в том, какому «градуснику» верить. Электронный термометр у меня расходится с ртутным на 2 градуса при температуре за бортом около -20 по Цельсию. И чем ниже температура, тем больше расхождение. И всегда интересовал вопрос, кому же больше верить — китайскому электронному чуду или безымянному ртутному (а может и спиртовому, хз).
Rumlin
Наука говорит, что нужны два термометра:
sergarcada
Ну и каким измерял автор? Я имею в виду, что можно ли доверять измерениям автора статьи. Добавьте 1 градус на погрешность прибора и график на первой картинке таки влезет в указанный коридор.
Rumlin
и не внутри психрометрической будки, а также измерение скорее всего проводится не на открытой площадке на высоте два метра над грунтом, а где нибудь у стены, на каком-то этаже здания.
Вчера как раз «разглядывал» температуры на Народный Мониторинг. Разброс значений в 5 градусов между некоторыми.
saege5b
давно в транспорте слышал разговор двух парней.
один из них писал диплом и там были расчёты завязанные на температуру.
он получил официальные данные со всех трёх имеющихся поблизости метеостанций.
одна оказалась слишком далеко.
две других давали настолько непохожие данные что у него расчёты на правдоподобность вообще никак не проверялось.
и он плакался приятелю, что он обязан в дипломе привести данные со всех трёх станций и обосновать каждый чих.
а по кривости народных датчиков, вроде по бигдата делают? опорные показания у метеостанции. а остальные принимаются в расчёт как показатели изменения в динамике. а дальше веса доверия, с учётом известных погрешностей известных датчиков и схем.
Rumlin
Народные по моему просто «показывают», т.к. явно некоторые показывают температуру в комнате — +20С
artoym
Автор брал данные яндекса с температурой на данный момент, если вы про это. В статье было описано что температура на 14.25 каждого дня
SilverHorse
А вот мне интересно, откуда на разных сайтах берутся данные по давлению. Недавно обратил внимание, что на погодных сайтах давление у меня в Челябинске различается аж на 20 миллиметров. Прямо сейчас:
Foreca: 1020 hpa (765 mmHg)
OpenWeatherMap: 1020 hpa (765 mmHg)
Гисметео: 746 mmHg
Яндекс: 746 мм рт.ст.
Weather.com: 30.12 in (765 mmHg)
Meteoinfo.ru (Гидрометцентр): 747 мм рт.ст.
Chelpogoda.ru (Челябгидромет): 747 мм рт.ст.
Ощущение, что источник для зарубежных сайтов почему-то приводит давление примерно к уровню моря (Челябинск находится на высоте 200-220 метров над уровнем моря и нормальное давление тут 738 миллиметров). Почему — мне неведомо.
PahanMenski
Могу предположить, что данные сервисы получают метеосводки в виде отчетов METAR, которые как-раз таки содержат давление, приведенное к уровню моря (QNH). Далее его можно пересчитать в давление на конкретной высоте по простым формулам, если знать эту высоту. Почему они не выполняют этот пересчет, учитывая что данные по высотам найти не проблема, уже другой вопрос.
nik_vr
Яндекс же берёт данные у Foreca как раз.
Gozdi
Янд похвастался информацией с метео-радаров, но реалии сильно отличаются от анимации осадков…
nik_vr
Ну вот прямо сейчас у меня совпадает картинка на «Карте погоды» и за окном :) По прогнозу снегопад прекратится в течение получаса — посмотрим :)
Gozdi
проверил на днях эту софтинку, показывала снегопад в 25 км за перевалами, в это время меня засыпало, стоящего на подъеме с лопатой в руках. Такие вот радары, как GPS у Кремля ))
kAIST
Метеорадары есть не во всех городах, поэтому где то скорее всего просто «прогноз». А так, у нас в Казани все совпадает, с точностью до района. Впрочем, как и совпадало раньше, когда была доступна публично картинка с метеорадара.
Neyury
Он кажется берет данные из нескольких источников и обрабатывает их
Ktulkhu_Triediniy
Если честно, для меня это новость. Я всегда считал, что у Яндекса свои прогнозы.
nik_vr
В подвале страницы с прогнозом:
Ktulkhu_Triediniy
Значит Форека такой неточный прогноз… Раньше был сильно точнее, однако.
OLS
> А можно Вас попросить подобные последним двум графикам составить для GisMeteo.ru, AccuWeather.com, Weather.com, Meteoinfo.ru
https://geektimes.ru/post/112958/
sigvart
Вот здесь есть анализ прогноза от Gismeteo, Foreca и гидрометцентра
Rumlin
Смотрю погоду на Weather.com — они часто попадают точно с ошибкой +30 минут.
Эти же прогнозы показывает Google по запросу «погода».
lzb_j77
Дабы понимать, «насколько прогноз соотносится с реальной температурой», нужно понимать:
1) физику атмосферы;
2) количество метеостанций, выживших в России и зачем они нужны;
3) математические модели погоды, используемые в прогнозах;
4) вычислительные мощности счётных бюро, ведущие расчёт прогнозов.
MAXInator
Не нужно. Все вами перечисленное нужно для понимания причины «точности» прогнозов, а для соотношения прогноза и реальности достаточно иметь эти самые прогноз и реальность.
lzb_j77
А зачем соотносить прогноз и реальность? :) Прогноз — вещь сильно недетерминируемая.
solariserj
Зато на бытовом уровне можно определить доверять или нет.
Kain_Haart
afaik точность прогноза ОЧЕНЬ сильно зависит от срока, поэтому не стоит на бытовом уровне грести под одну гребенку доверие к яндекс прогнозу на завтра и на две недели
manfromearth
Это очевидно всем, кто знает про странные аттракторы (а это практически все, отучившиеся в технических вузах России), поэтому на бытовом уровне большинство людей все-таки различают прогноз на два дня и на две недели, и понимают, почему последний принципиально невозможен.
solariserj
Так вот надо было сделать несколько графиков:
Вот тогда было бы видно на какой дистанции можно доверять, а на какой нет, а может даже на 2 недели он берет от балды, на просто сравнить.
Кстати был случай лет 5 назад прогноз яндекса через 2 недели показал что будет гололед и снег хотя до того дня будет относительно тепло и без осадков, а мне это как раз на руку, так как мне надо было сдавать на права и не хотел сдавать в гололед, и получилось как предсказывал: высушило дорогу, я сдал, а на следующий день пошел снег и был гололед, так что прогноз на дальние даты может и изменятся, но иногда(как в моем случае) попадает.
sim-dev
При ширине диапазона предсказаний минимум в 10, а максимум в 20 (согласно первому графику) градусов просто удивительно, что еще бывают случаи «не угадывания». Надо расширить диапазон, и тогда проблем с неугадыванием у Яндекса не будет: «завтра температура будет. точка.»
Sgho
Зашел написать именно этот комментарий.
shadovv76
постоянная температура -5 чаще попадет в прогноз чем фактическая :)
kx13
На сайте rp5.ru можно скачать архив погоды за любой период с 2005 года сразу в xls или csv.
griin
Всем заинтересованным в погоде рекомендую заглянуть на www.windguru.cz
Да он корректируется с течением времени, но на сутки вперед показывает достаточно точно, на работе мониторим осадки и в соответствии с ними планируем монтажные работы.
Если зарегистрироваться, можно создать свои локали для показаний прогноза, можно привязать свою погодную станцию, при наличии.
aryanatha
у меня многие знакомые парапланеристы используют этот сервис. им как раз нужен максимально точный прогноз и этот сайт они считают самым правильным
vlivyur
Я так и не смог понять графики: что голубым обозначено, а что коричневым, зачем дата со временем в заголовке?
prostofilya
Голубым — реальная температура в конкретный день («дата со временем в заголовке»).
Коричневым — прогноз для этого дня, взятый за несколько дней до этого самого конкретного дня (точный день можно увидеть внизу).
sergarcada
То есть целую неделю температура у автора за окном вообще никак не менялась? Опять же, на оси абцисс явно указаны дни и месяцы. А в заголовке графиков — дата и время.
vlivyur
Нет, график зависимости прогноза от дальности этого прогноза. 24го ноября на 3 декабря, 25 ноября на 3 декабря и т.д. А вот зачем фактическую температуру растянули на все эти дни — загадка.
artoym
Графики у автора прекрасные. Температура на все дни растянута чтобы было проще читать график.
kAIST
Яндекс недавно сделал очень полезную вещь — прогноз осадков. Не для всех городов это работает конечно, но нашему городу (Казань) — повезло.
Это даже не «классический» прогноз погоды, а реальные данные с метео радаров. Два года назад, картинка с радара была доступна всем. Открываешь и видишь, где идут осадки, в какую сторону движутся и с какой скоростью. По работе очень нужно было все это дело прогнозировать. Клиенты удивлялись, когда говорил «ничего не отменяем, через час дождя не будет и на пару часов». Потом данные внезапно закрыли (стали выкладывать с задержкой в сутки).
https://yandex.ru/pogoda/kazan/nowcast
talovd
Радар от Gismeteo тоже немного поменяли.
https://www.gismeteo.ru/maps/
kAIST
У гисметео, насколько я понял, данные со спутника. А тут с метео радара. Разрешение гораздо выше — вплоть до района города. И плюс в реальном времени скорость и направление ветра, что позволяет очень точно спрогнозировать: идет дождевая тучка, через час она накроет район.
OLS
В СПб до сих пор доступен один радар
argz
Да, теперь вот так — http://www.meteorad.ru/maps (Карта метеоявлений ДМРЛ за последние 3 часа. Данные с задержкой 24 часа). И эта задержка очень удобна, потому что позволяет им на все претензии отвечать, что, мол, данные выкладываются, но с временной задержкой.
А раньше были нормальные карты:
inferrna
Есть мобильные приложения, которые делают то же самое. Можно поискать по запросам «погода спутник», «погода радар» и подобным.
Gozdi
непонятно, как реализован заявленный И.И.
В виде пользователя, нажимающего на иконку реального состояния погоды на местности?
fantast8
В исследовании допущено множество ошибок и само исследование абсолютно бесполезно, так как не показывает никаких конечных значений, а именно оправдываемости в % и отклонения фактической температуры от прогнозируемой в градусах на разные сутки. Это во-первых.
Во-вторых, главная ошибка заключалась в том, что Яндекс показывает не реальную температуру, а расчётную, опять же используя данные своего суперпупер крутого Метеума. Поэтому эти виртуальные температуры нельзя использовать для проверки прогноза. Для верификации прогнозов всегда используются данные местной метеостанции. В данном случае, если речь идёт про Новосибирск, то это учебная станция 29637 или станция в аэропорту UNNT.
В третьих. Точность прогноза определяется попаданием фактического значения в прогнозируемый интервал. В соответствии с наставлением Гидрометцентра об оправдываемости краткосрочных прогнозов, допустимой погрешностью считается 3 градуса. Например, по прогнозу на завтра днём максимальная температура составит +20 градусов, тогда допустимый интервал +17...+23 градуса. Если фактическое значение попадает в этот диапазон, значит прогнозу ставится 100%, если нет — 0%. Схема простая. В качестве дополнения всегда обязательно считается отклонение факта от прогноза в градусах, на разные сутки. Например, похожим образом я определял точность прогнозов сайта Gismeteo для Кургана. Выборка 60 дней. На первые сутки точность составила 92%, на 5-е сутки — 77%, а на 13-е — 50%. В качестве инструмента оценки прогнозов использована программа Weather_FMX Version 2.10
QDeathNick
А как тогда у вас получается, что на 13-е сутки 50%? Что значит 50%?
fantast8
Что из 100 прогнозов, только 50 оправдывается. На первые сутки из 100 прогнозов оправдывается 93
barker
О, уже пару лет такая же идея лежит в записках. Только вот не вполне корректная реализация, имхо. Т.к. прогноз очень сильно меняется в течение даже дня и по-хорошему надо собирать заранее и потом через фиксированное время смотреть текущую погоду. Но как это реализовать я не понял пока, кроме того, что в течение года собирать реальный прогноз который показывается каждый день на неделю вперёд, например. Потому что задним числом и при приближении к прогнозируемому дню прогноз всё точнее становится, очевидно.
з.ы. да, выше примерно то же самое несколько раз упоминали.
basilbasilbasil
Есть ещё данные с аэропортов. Мобильное приложение точно есть.
imalion
Павел, спасибо за статью. Мне нравится ваш метод сравнения гораздо больше методички Росгидромета, но в реализации есть неточности.
Почему больше нравится — потому, что это реальный юзкейс живого человека. Так нашу погоду смотрят пользователи, так они принимают решения. Поэтому результат для меня в десять раз полезнее, чем доли градуса в среднем отклонении температуры (привет fantast8).
Главная неточность в том, что вы принимаете значение из поля фактической температуры за ground truth. На самом деле это тоже немного прогноз, просто более точный, чем тот, который сделан за 24 часа. Чтобы сравнение было более правильным, нужно сравниваться в точке, которая поближе к метеостанции (сейчас вы савниваете прогнозы и факты на точку, близкую к геометрическому центру Новосибирска).
Теперь о вечном — почему меняются прогнозы. Если коротко, то прогнозы меняются потому, что наши методы несовершенны и потому, что приходят новые данные. Если бы наши прогнозы на горизонт не более чем на 10 дней всегда были идеально точными, мы бы не меняли свои значения никогда, но это увы не так. Однако, мы знаем, что добавив актуальных данных в прогноз, мы повышаем точность на ближних горизонтах, что тоже важно для пользователей. Мы досыпаем новые данные в прогноз до 24 раз за день, поэтому и долгосрочные прогнозы, бывает, меняются. Мы знаем, что это плохо сказывается на нескольких юзкейсах и у нас есть мысли про то, как это полечить.
fantast8
Вот опять Вы обманываете людей. О каких долгосрочных прогнозах идёт речь? На сайте Яндекса нет долгосрочных прогнозов. Вы заявляете это как прогноз на месяц, но это лишь усредненные данные за последние 7 лет, к будущему состоянию атмосферы они не имеют никакого отношения. Поэтому у Вас и появляется такая разница между 2 и 3 января.
imalion
Под долгосрочными прогнозами я имел в виду прогнозы на 5-10 дней, это и правда неточность моей терминологии. Что до наших климатических норм, которыми мы продолжаем прогноз, то имеют они отношение к будущему или нет, покажет время.
Вот вы, как метеоролог-любитель, наверняка знаете какая погода будет, например, во Владивостоке 25 января. Расскажите — сильно она будет отличаться от климатической нормы? Покажите, как говорится, свою точность.
fantast8
Я специализируюсь на своей области, мне нет никакого дела до Владивостока. Если хотите делать долгосрочные прогнозы, расшаривайте GRIB данные модели CFS.
a-rus
Делал подобное, но с глубиной прогноза по прошедшим дням. С выводом согласен — близкие к реальным данные можно получить только на 2-3 дня.
severgun
21 декабря. -5 -25 градусов. Браво! Отличная точность.
Что по одежде при таком прогнозе?
ganzmavag
Благодаря этому посту наконец-то узнал, почему у меня виджет Яндекс.Погоды стал в текущей погоде на 3-4 градуса по утрам ошибаться. Что-то они перекрутили с алгоритмами, раньше использовал, чтобы точнее знать, во что одеваться, а теперь оденешься на минус, а там за окном на самом деле почти плюс уже. Снес, поставил MSN, теперь снова соответствует температура на виджете температуре на улице.