Почему наш прогноз врёт, и мы это опубликовали
Мы сравнили свой прогноз с независимыми находками GBIF, а потом прогнали ту же проверку на перемешанных датах. Разница между «как есть» и «календарь без погоды» оказалась почти неразличимой.
Сервис прогноза может сказать о себе что угодно: «точный», «умный», «учитывает всё». Проверить это можно только одним способом — взять чужие, независимо собранные наблюдения и посмотреть, выше ли наш индекс в те дни, когда грибы действительно находили. Мы это сделали. И там же, где число получилось, задали себе неудобный вопрос: а вдруг оно получилось не из-за погоды, а из-за календаря — умеет ли модель хоть что-нибудь, кроме «сейчас август, значит сезон»?
Первая версия проверки сама оказалась неправильной
Для проверки взяли 5447 находок грибов из GBIF — международной базы наблюдений за живой природой, куда данные попадают от гербариев, институтов и обычных людей. Для каждой находки считается наш индекс в тот день и в её месте, а потом — в другие дни того же места. Если модель права насчёт времени, день находки должен стоять выше случайного дня.
Первая версия такой проверки дала результат хуже случайного — по числу получалось, что монета угадывает время лучше модели. Разбираться начали с модели, а нашли ошибку в самом измерителе: часть контрольных дней у края покрытия сравнивалась с окном из одних нулей — то есть с выдуманным «морозом и сушью», который настоящий день находки побеждал без всяких усилий, ни за что. Ошибку починили и пересчитали заново.
Число, которое не льстит
У проверки два отдельных вопроса, и смешивать их в одно число нельзя. «Волна» — угадали ли мы неделю внутри сезона: это то, что продаёт прогноз, «на этой неделе да, а на прошлой нет». «Сезон» — угадали ли мы месяц: нижняя планка, которую взял бы и обычный календарь без единого градуса погоды.
На 7 187 сравнениях волна дала 0,610 при 0,500 у случайного угадывания — интервал 0,556–0,655. Сезон дал 0,847, интервал 0,812–0,882. Себе мы поставили планку 0,750 по шкале волны, и до неё модель не дотягивает: 0,610 выше случая, но ниже того, что мы считали бы рабочим результатом. Называть 0,610 «точностью 61 %» мы не стали — фраза звучала бы куда увереннее, чем есть на самом деле.
Проверка проверки: что если убрать погоду совсем
Оставался вопрос: а что вообще меряет число 0,610? Чтобы на него ответить, ту же выборку прогнали ещё дважды на одном и том же снимке погоды. Один раз — с намеренно перемешанными датами находок: календарь остаётся, грибы всё ещё «находят» в правильном месяце, а вот всякая связь с погодой конкретного дня пропадает. И ещё раз — с полностью случайными датами, чтобы проверить сам измеритель: если он честный, случайные даты должны дать число около 0,500, не выше и не ниже.
Случайные даты дали 0,496 по волне — почти ровно 0,500, значит измеритель считает честно, без перекоса. А дальше начинается неприятное. Перемешанные даты — календарь без погоды — дали волну 0,576 и сезон 0,798. Разница между «как есть» (0,610) и «даты перемешаны» (0,576) — всего 0,034, и доверительные интервалы у них перекрываются на 0,046. Статистически это неотличимо.
По-простому: 94 % нашего числа даёт один календарь, а вклад погоды на этих данных мы не видим — он неотличим от нуля. Есть и оговорка, которая работает в обе стороны: до счёта дошли только 709 находок из 5447, остальные отброшены за отсутствием погоды — наблюдения GBIF старше, чем наша история замеров. Так что это не приговор модели, а честный итог того, что мы пока смогли измерить.
Что мы с этим делаем
Ничего не меняем в том, что обещаем: платный доступ открывает больше дней прогноза, а не «прогноз точнее» — модель на всех тарифах одна и та же, и продавать несуществующую точность мы не стали бы всё равно. Сезонную часть тоже не трогаем: 0,847 — это про месяц и календарь сроков, и там модель действительно работает, число об этом честно говорит.
А погодную часть будем перепроверять, когда истории наблюдений накопится больше: 709 находок против 5447 всей выборки — маловато для окончательных выводов. Это не оправдание, а план: число обязано быть пересчитано, а не забыто вместе со страницей, где оно опубликовано.
Зачем вообще это публиковать
Сервис, который показывает только удачные замеры, ничем не отличается от сервиса, который не замеряет вовсе, — разница лишь в том, что первый об этом не говорит. У прогноза грибов хватает конкурентов с уверенными процентами без единой методики позади них. Мы предпочли обратное: показать метод, число и то, где оно не дотягивает.
Причина не в скромности. Уверенное неверное число опаснее честного «мы пока не знаем»: человек, поверивший обещанной неделе, потратит на дорогу день и бензин, а лес его не наградит. «Мы умеем угадывать месяц, а неделю внутри него — пока нет» звучит куда менее эффектно, но именно это можно проверить и именно этому можно верить.
