Чтобы понять, врёт прогноз или нет, его надо с чем-то сравнить. Мы сравниваем с показаниями приборов: наземная станция Росгидромета, сводки из аэропортов (это формат METAR), автоматическая станция, которая отчитывается раз в десять минут. Каждую величину сверяем со своим прибором: температуру с термометром, давление с барометром. Там, где за какой-то час ни один прибор ничего не записал, в дырку подставляется ERA5 — это не измерение, а погода, пересчитанная задним числом; почему это важно, разобрано ниже. Дальше — насколько промахнулся каждый источник прогноза в этом городе, по нашей базе.
Берём прогноз, выпущенный за 6 часов, за сутки или за трое суток до нужного часа, и смотрим, насколько он разошёлся с тем, что потом показал прибор.
Для температуры, ветра, порывов и давления это средняя ошибка в привычных единицах: на сколько градусов или метров в секунду источник промахивался в среднем. С осадками так считать нельзя. Дождь либо был, либо нет, а прогноз называет вероятность, и по средней ошибке всегда побеждал бы источник, который вечно обещает «дождя не будет»: в сухой день он прав целиком, а в мокрый ошибается один раз. Поэтому осадкам мы ставим оценку Брайера: она наказывает и за уверенно обещанный дождь, которого не случилось, и за пропущенный ливень. В обоих случаях меньше — лучше.
Тёмная линия — то, что показал прибор. Светлая — то, что обещали источники за сутки до этого часа: не какой-то один из них, а их общая середина, консенсус. Синяя заливка между линиями и есть промах. Проведите курсором по графику, чтобы посмотреть конкретный час.
Источников четыре, и они не равны между собой. Сначала спрашиваем приборы: наземную станцию, аэропорты, автоматическую станцию. Если за какой-то час ни один прибор ничего не сказал, в дырку идёт ERA5. Ниже видно, сколько часов пришло от каждого источника, то есть чем на самом деле измерена таблица выше.
У автостанции счётчик всегда меньше остальных, и это не поломка. Она отдаёт только последние сутки: истории у неё нет, поэтому её часы копятся вперёд, начиная со дня, когда мы её подключили. За прошлые месяцы выгружать нечего.
Ближайший час — единственное место на всём сайте, где число берётся не из расчёта, а прямо с прибора: с радара, если радар до города достаёт. Источники перебираются сверху вниз, от самого точного к запасному, и в строке ниже написано, до какого дошли. Там же размер ячейки, на которые разбито небо: чем ячейка мельче, тем ближе показание к тому, что происходит именно над вами, а не в среднем по округе.
Меру выбирает величина, а не удобство. У температуры, ветра и давления ошибка считается в тех же единицах, что и сама величина. У осадков так нельзя: дождь либо был, либо нет, а прогноз называет вероятность. Там работает оценка Брайера — средний квадрат промаха названной вероятности мимо факта, нуля или единицы. Подбирать по ней порог, с которого час считается мокрым, нельзя: подняв порог, мы делаем событие более редким, и оценка улучшается сама, без единого улучшения в прогнозе. Сравнимая между порогами величина — насколько прогноз лучше простой многолетней доли мокрых часов; её и считает калибровочный скрипт проекта.
Итоговое число — не среднее по источникам. Для температуры, ветра и давления считается распределение: середина — линейная поправка к среднему по моделям, ширина — линейная функция того, насколько модели разошлись. Это метод EMOS/NGR. Когда модели спорят между собой, коридор шире, и ровно этого среднее сказать не умеет. Четыре коэффициента на срез «город — величина — срок» подбираются на скользящем окне в 90 суток. Скорость ветра не бывает отрицательной, поэтому её распределение усечено нулём слева — иначе часть вероятности уходила бы на ветер медленнее нуля. Осадки сюда не идут: на событии «мокро или сухо» тот же приём не выигрывает у монотонной кривой поправки, которая там уже стоит, и мы его не применяем.
Вклад источника зависит от его прошлой точности, но осторожно. Вес считается как величина, обратная ошибке, а сама ошибка измерена по конечной выборке и шумит — от шума такой вес раздувается вверх, и источник, промолчавший в трудные часы, выглядел бы лучшим по горстке удачных замеров. Поэтому вес вообще не считается раньше 47 разных суток истории, полное доверие оценка получает к 90 суткам, а между этими границами вес подтянут к равному. Осторожность здесь не перестраховка: если веса случайны, комбинация прогнозов оказывается смещённой даже когда каждый её участник несмещён. И всё это имеет смысл ровно настолько, насколько верна мерка, — потому прогноз и сверяется с показаниями приборов, а не с другим прогнозом.