Гол — редкое событие, поэтому минута следующего гола моделируется двумя конкурирующими пуассоновскими процессами: хозяева «тикают» со своей интенсивностью lambda_home(t), гости — с lambda_away(t). Чей процесс сработает раньше, та команда и забьёт; если ни один не сработает до 90-й минуты — голов больше не будет. Базовая интенсивность — это сила атаки команды (poisson-lambda на 90 минут), а дальше она умножается на четыре поправки, каждая из которых измерена на данных, а не придумана.
Первая поправка — per-league профиль минуты: в каждой из 557 лиг голы распределены по минутам по-своему (где-то давят в концовке, где-то — в дебюте). Вторая — счёт: проигрывающая команда вопреки интуиции атакует слабее (x0.60 — эффект силы: ведёт обычно тот, кто сильнее), ведущая сушит игру (x0.70). Третья — удаления: большинство даёт x1.10, меньшинство — x0.41 (замер на 3 000 матчей с красными). Четвёртая — угроза составов: суммарный threat11 игроков на поле корректирует интенсивность в коридоре [0.85, 1.15].
| Фактор | Значение | Откуда |
|---|---|---|
| Профиль лиги | 557 лиг, поминутно | дамп goal-timing, окно 2 года |
| Проигрывает | x0.60 | замер: ведёт сильнейший |
| Ведёт в счёте | x0.70 | замер: сушка игры |
| Большинство / меньшинство | x1.10 / x0.41 | 3 000 матчей с удалениями |
| Угроза составов | [0.85, 1.15] | g90 → threat11, 24 тыс. игроков |
| Темп матча (pace) | 1.0 (заморожен) | учёт ронял no-more — отключён |
На странице матча NextGoal-карточка показывает вероятности следующего гола (хозяева / никто / гости), кривую вероятности по минутам, ожидаемую минуту (mean — главную, медиану и IQR — для понимания разброса), вклад угрозы и бомбардиров, а также удаления. В скауте тот же движок работает в инлайн-раскрытии события: прогноз first-гола считается с t=0, прогноз last-гола — от последнего забитого, рядом — сверка actual_after: что случилось на самом деле после этой минуты.
Медиана минуты хуже среднего (MAE 14,3 против 13,3) — поэтому виджет ставит mean главным числом. Темп матча (удары, владения) соблазнительно учитывать, но замеры показали: pace ломает флаг no-more, так что он заморожен на 1.0. Отсутствие бомбардира на поле почти не влияет (x1.04 — в пределах шума, не внедрено). VAR-отмены и дубли голов чистятся через valid-goals: гол считается только после сверки со счётом, иначе минуты врут.
Эндпоинты для разработчиков: /api/db/games/:id/next-goal (голы, красные, threat, медиана/IQR, кривая) и /api/scout/events/:id/goal-forecast (first + last + actual_after). Методология ансамбля исходов — в v5.3, точность исходов — в /accuracy/, термины — в глоссарии. English: NextGoal (EN).
Что предсказывает NextGoal? Чья сторона забьёт следующей, когда примерно (mean/медиана/IQR) и будет ли вообще гол.
Почему mean, а не медиана? Mean точнее: MAE 13,3 против 14,3 у медианы на тех же матчах.
Учитываются ли красные карточки? Да: большинство x1.10, меньшинство x0.41.