Xg предсказывает результаты матчей

Время на прочтение

Для начала определим для кого эта статья? Моя цель заинтересовать не только обыкновенных зрителей, но и тех, кто уже занимается футбольной аналитикой. В статье я постараюсь показать интересные исследования об Xg.

Многие из тех, кто смотрит футбол и читает новости когда-нибудь видел метрику xg. Что она вообще означает? Простыми словами Xg это количество ожидаемых голов. Т.е. каждый нанесённый удар по воротам имеет вероятность конвертироваться в забитый мяч, но с каждой позиции эта вероятность разная (если углубляться, то станет очевидным, что xg зависит от нескольких параметров, а не от одной позиции). К примеру, самая высокая вероятность забить мяч при исполнении пенальти. Чаще всего с пенальти дают 0.79 xg. Необходимо учитывать, что единой формулы расчёта xg нет, каждый провайдер рассчитывает её по-своему. Так например, для написания этой статьи я использовал данные с сайта https://understat.com/, но, если мы посмотрим другие источники, цифры будут отличаться.

Моя задача узнать, насколько точно Xg предсказывает количество голов в матче. Исследование будем проводить для АПЛ сезона 2022/2023. В данном исследовании мы ограничимся простыми методами анализа. Я составил таблицу из 380 матчей АПЛ. Пример таблицы с первыми 10 матчами АПЛ.

Таблица матчей АПЛ

| Order | Week | Team1    | Xg1 | Goal1 | Goal2 | Xg2 | Team2 |
|-------|------|----------|-----|-------|-------|-----|-------|
| 1     | 1    | Arsenal  | 2.3 | 1     | 0     | 0.9 | Chelsea  |
| 2     | 1    | Liverpool| 2.5 | 2     | 1     | 1.2 | Man City |
| 3     | 2    | Man Utd  | 1.8 | 1     | 0     | 0.7 | Spurs    |
|       |      |          |     |       |       |     |         |
|       |      |          |     |       |       |     |         |
  • Order – отвечает в таблице за количество матчей от 1 до 380
  • Week – в каком туре был сыгран матч, в Англии туры называют неделями.
  • Team1 – команда хозяин
  • Xg1 – показатель xg домашней команды
  • Goal1 – сколько голов забила домашняя команда
  • Goal2 – сколько голов забила гостевая команда
  • Xg2 – показатель xg гостевой команды
  • Team2 – команда гость

Изначальная таблица построена, далее будем считать разницу между забитыми мячами и xg у каждой из команд (diff1 и diff2), а потом напишем yes если разница меньше или равна 0.5, и, если разница строго больше 0.5 пишем no (Res1 и Res2).

Таблица разницы между забитыми голами и Xg

| Order | Week | Team1    | Xg1 | Goal1 | Goal2 | Xg2 | Team2 | diff1 | diff2 | Res1 | Res2 |
|-------|------|----------|-----|-------|-------|-----|-------|-------|-------|------|------|
| 1     | 1    | Arsenal  | 2.3 | 1     | 0     | 0.9 | Chelsea  | 1.3  | 0.9   | yes  | no   |
| 2     | 1    | Liverpool| 2.5 | 2     | 1     | 1.2 | Man City | 0.5  | 0.8   | yes  | no   |
| 3     | 2    | Man Utd  | 1.8 | 1     | 0     | 0.7 | Spurs    | 0.8  | 0.7   | no   | no   |
|       |      |          |     |       |       |     |         |       |       |      |      |
|       |      |          |     |       |       |     |         |       |       |      |      |

Далее проведём два анализа строгий и нестрогий. В строгом анализе будем выводить yes если в Res1 и Res2 указано yes, в нестрогом анализе если хотя бы в одном из столбцов имеется значение yes.

Строгий анализ

| Order | Week | Team1    | Team2 | Prediction |
|-------|------|----------|-------|------------|
| 1     | 1    | Arsenal  | Chelsea | no      |
| 2     | 1    | Liverpool| Man City | no     |
| 3     | 2    | Man Utd  | Spurs    | no      |

Всего успешно предсказанных матчей получается 65, неуспешных соответственно 315.

Нестрогий анализ

| Order | Week | Team1    | Team2 | Prediction |
|-------|------|----------|-------|------------|
| 1     | 1    | Arsenal  | Chelsea | yes     |
| 2     | 1    | Liverpool| Man City | yes    |
| 3     | 2    | Man Utd  | Spurs    | no      |

Теперь рассмотрим нестрогий анализ.

Анализ точности прогнозов Xg в футбольных матчах

Введение

Проведен анализ успешно и неуспешно предсказанных матчей, в сумме 241 успешный и 139 неуспешных.

Суммарные данные

  • Суммарный Xg: 1136.54
  • Суммарное количество забитых голов: 1084
  • Разница: 52.54

Оценка средних значений

Общие данные

  • Средний Xg: 1,48
  • Среднее количество голов: 1,43

Для команд хозяев

  • Средний Xg: 1,67
  • Среднее количество голов: 1,63

Для команд гостей

  • Средний Xg: 1,3
  • Среднее количество голов: 1,2

Оценка точности показателей Xg

Проведена оценка точности показателей Xg в зависимости от количества забитых мячей:

  • Матчей с 4 забитыми мячами: 28, Xg ≥ 3,5 – 4 матча, точность ~ 14,3%
  • Матчей с 3 забитыми мячами: 43, Xg ≥ 2,5 – 19 матчей, точность ~ 44,2%
  • Матчей с 2 забитыми мячами: 90, Xg ≥ 1,5 – 53 матча, точность ~ 58,9%
  • Матчей с 1 забитым мячом: 124, Xg ≥ 0,5 – 112 матчей, точность ~ 90,3%

Заключение

Проведен анализ точности прогнозов Xg в футбольных матчах. Интересные данные, полученные в результате анализа, позволяют сделать вывод о более чем удовлетворительной точности данной метрики.

График

Анализ XG в матчах по числу забитых мячей

Гости

  • Матчей с 4 забитыми мячами – 15, xg ≥ 3,5 – 2 матча, точность ~ 13,3%
  • Матчей с 3 забитыми мячами – 35, xg ≥ 2,5 – 7 матчей, точность ~ 20%
  • Матчей с 2 забитыми мячами – 76, xg ≥ 1,5 – 44 матча, точность ~ 57,9%
  • Матчей с 1 забитым мячом – 125, xg ≥ 0,5 – 112 матчей, точность ~ 89,6%
library(ggplot2)

plot(Table_XG$week, Table_XG$Goal1, type = o, pch = 16,
     main = Xg in match,
     xlab = week,
     ylab = xg and goal,
     col = green3,
     lwd = 2)

xlines = seq(min(Table_XG$week), max(Table_XG$week), 1)
ylines = seq(min(Table_XG$Goal1), max(Table_XG$Goal1), 1)

abline(h = ylines, v = xlines, col = lightgray)

lines(Table_XG$week, Table_XG$Xg1, type = o, pch = 19, col = red, lwd = 2)

legend(topleft,
       legend = c(Goals, Xg),
       col = c(green3, red),
       lty = 7,
       pch = 19)

Xg предсказывает результаты матчей

Хозяева

library(ggplot2)

plot(Table_XG$week, Table_XG$Goal2, type = o, pch = 16,
     main = Xg in match,
     xlab = week,
     ylab = xg and goal,
     col = green3,
     lwd = 2)

xlines = seq(min(Table_XG$week), max(Table_XG$week), 1)
ylines = seq(min(Table_XG$Goal2), max(Table_XG$Goal2), 1)

abline(h = ylines, v = xlines, col = lightgray)

lines(Table_XG$week, Table_XG$Xg2, type = o, pch = 19, col = red, lwd = 2)

legend(topleft,
       legend = c(Goals, Xg),
       col = c(green3, red),
       lty = 7,
       pch = 19)

Xg предсказывает результаты матчей

Анализ точности xG в прогнозировании результатов матчей

Исходя из проведённого анализа можно сделать вывод, что xG показывает высокую точность предсказания результатов матчей на дистанции, а не в одном отдельном взятом матче.

При строгом анализе предсказано около 17,1% матчей, а при нестрогом – около 63,4% матчей. Хотя это хороший показатель, его можно считать недостаточным, учитывая, что матч считается успешным, если хотя бы у одной из команд предсказано значение.

Также стоит отметить недостаток xG – потерю точности при забитых мячах больше 2. В целом, xG является хорошей и полезной метрикой, но не является единственной главной.

Значение для аналитиков и зрителей

Для опытных аналитиков статья может представлять интересную информацию, а для обычных зрителей это может стать мотивацией для изучения футбольной статистики более глубоко.

Редкая ситуация в топ-3 РПЛ без московских команд

Статистика после 9-го тура

После 9 туров РПЛ сложилась интересная ситуация – в топ-3 отсутствует ни одна московская команда! Спартак, Динамо, Локомотив и ЦСКА вынуждены смотреть на соперников из Краснодара, Самары и Санкт-Петербурга.

Архивные данные

В 2019/2020 году аналогичная ситуация уже наблюдалась. Шедший к своему второму золоту Зенит находился в топ-3 после старта с 3 побед и ничьей с Краснодаром. Петербургская команда имела 20 очков и наименьшее количество пропущенных мячей в этот период.

Xg предсказывает результаты матчей

Тем не менее «Зенит» не был лидером! Как и сейчас, на первое место залез «Краснодар». Тогда команда успешно стартовала под руководством Мурада Мусаева. Правда, в 1-м туре «быки» уступили «Ахмату» (0:1), но потом выдали серию успешных результатов: победы над «Уфой» (3:2) и «Сочи» (3:0), ничья с «Зенитом» (1:1) в Санкт-Петербурге. Вслед за этим «Краснодар» выдал новую удачную серию в матчах с «Рубином» (1:0), «Тамбовом» (2:0), «Уралом» (4:2) и «Крыльями Советов» (4:2), а разбавила её ничья с «Локомотивом» (1:1). Южане также набрали 20 очков, однако опережали сине-бело-голубых по дополнительным показателям. Команда Мусаева лидировала в РПЛ по количеству забитых мячей.

Xg предсказывает результаты матчей

Разница заключалась только в том, что вместо «Крыльев Советов» в тройку сильнейших залез «Ростов». На старте чемпионата команда Валерия Карпина чередовала победы с ничьими – 2:1 с «Оренбургом», 2:2 со «Спартаком», 3:2 с «Арсеналом», 2:2 с «Уралом». Затем ростовчане выиграли у «Крыльев Советов» (2:1) и проиграли на выезде «Уфе» (0:2). Но после этого одержали три подряд победы с одинаковым счётом 2:1 над «Рубином», «Локомотивом» и «Ахматом». «Ростов» по набранным очкам делил первое место с «Краснодаром» и «Зенитом».

В общем, было бы неправильно утверждать, что только в нынешнем сезоне есть настоящая интрига в РПЛ после фактически трети дистанции. Таблица сезона-2019/2020 доказывает: карусель борьбы и тогда завертелась как надо.

Топ-6 команд после 9-го тура сезона-2019/2020:

ЦСКА и «Локомотив» в том сезоне держались рядом с лидерами. Армейцы в первых девяти турах потерпели два поражения — от «Крыльев Советов» (0:2) и «Спартака» (1:2) в дерби – отставали всего на одно очко. Сейчас же ЦСКА имеет «-4» даже от идущего третьим «Зенита», а «Краснодар» улетел от команды Владимира Федотова уже на восемь баллов.

Железнодорожники тоже проиграли в сезоне-2019/2020 дважды в девяти турах – ЦСКА (0:1) и «Ростову» (1:2). Три очка отставания от лидеров не казались форой, которую невозможно отыграть. «Локомотив» четырёхлетней давности набрал больше сегодняшнего.

А вот у «Спартака» было три поражения при четырёх победах. Причём два из них в 8-9-м турах. В первых семи матчах красно-белые уступили только «Тамбову» (0:2), а потом были биты «Зенитом» (0:1) и «Уралом» (1:2). «Спартак» отпустил конкурентов на шесть очков. В нынешнем сезоне ситуация получше.

Как команда Абаскаля победила «Динамо» в 9-м туре РПЛ:

На фоне неудач «Спартака» СМИ, как обычно, поднимали тему увольнения тренера красно-белых. Тогда им был Олег Кононов. Он продержался ещё два тура, а в тот момент не собирался подавать в отставку.

«Что отвечу людям, требующим отставки тренера? Каждый проигрыш в «Спартаке» – это одно и то же. Мой ответ будет победами, вот и всё».

«Динамо» же и вовсе находилось за пределами восьмёрки, набрав лишь девять очков. К тому моменту бело-голубые потерпели поражения от «Рубина» (0:1), «Зенита» (0:2) и «Локомотива» (0:1). У Марцела Лички старт гораздо успешнее.

Впрочем, ещё никогда такого не было, чтобы в тройку призёров по итогам чемпионата не попадал хотя бы один московский клуб. Вот и до конца сезона-2019/2020 тройка не сохранилась в этом виде. Когда участники РПЛ уходили на зимний перерыв, «Зенит» уже лидировал с большим отрывом, а «Краснодар» с «Ростовом» ещё цеплялись за второе-третье места. Ближе к концу чемпионата южные команды стали уступать свои позиции «Локомотиву» и ЦСКА. Тем не менее «Краснодар» дотянулся до бронзы, отстав на 20 очков от «Зенита» и на пять — от «Локомотива». Ростовчане же финишировали пятыми.

Сезон-2019/2020 напоминает нам о том, что в таблице всё ещё может много раз поменяться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *