Котелок
Финты справедливости
  • Данные и аналитика
Рассуждения о том как измерить справедливость в футболе
Очередной футбольной сезон заканчивается. Самое время вернуться к вопросам справедливости. Давайте попробуем её измерить? Ну хотя бы в футболе.
Какова роль случая в спорте? Действительно ли плей-офф - это лотерея? Портит ли нам впечатление от игры новая схема розыгрыша лиги чемпионов?
Давайте построим много-много графиков и закроем уже этот гештальт.
Очередной футбольной сезон заканчивается. Самое время вернуться к вопросам справедливости. Давайте попробуем её измерить? Ну хотя бы в футболе.
Какова роль случая в спорте? Действительно ли плей-офф - это лотерея? Портит ли нам впечатление от игры новая схема розыгрыша лиги чемпионов?
Давайте построим много-много графиков и закроем уже этот гештальт.
Пример работы функции. Встреча команд с разбросом в силе примерно равным командам Манчестер Сити и Брентфорд. В среднем, конечно, одна сильнее другой. Правая часть графика - больше повезло фаворитам, левая - андердогам.
И прямое следствие прошлого графика. Если вы не фаворит, то вам надо пытаться максимально бустить дисперсию
Справедливость на дистанции
Если с одним матчем понятно, то теперь давайте возьмём набор команд и представим на секунду, что их настоящая сила а) нам известна, б) не меняется.
И пусть они сыграют турниры по разных схемам, а мы посмотрим, что из этого выйдет.
Кто у нас будет подопытными кроликами?
Начнём вот с таких:
Случайный турнир
Начнём со случайного турнира.
Как это? Очень просто: выбираем случайную пару команд и они играют. Потом ещё одну. И ещё. Всё сводим в турнирную таблицу. Ключевой показатель: среднее количество очков за матч.
Это ужасный формат. Кто-то может сыграть больше игр, кто-то - меньше. Кому-то попадутся соперники слабее, кому-то сильнее. Как мы помним, в таком турнире вероятность сенсации самая большая.
Сколько игр поставить? Ну, допустим, по аналогии с игрой на вылет, по 3 игры на команду, т.е. 24 матча всего.
Итак, что же мы получим?
  • Дикий разброс числа игр, большая разница в числе набранных очков. И, тем не менее, сильные вверху, слабые - внизу.
  • Реал сыграл лучше Сити (хотя у нас он чуть-чуть слабее)
  • Галатасараю не повезло с календарём (две игры против Сити и одна - против Реала),
  • Порту - наоборот, повезло, сыграл с обоими аутсайдерами.
Но на этом всё.
Вроде и случайный турнир, а не такая уж и лотерея, не находите?

Игра на вылет
Это более классический формат, в него играют и часто. Игру на вылет часто критикуют за высокий фактор случайности. Посмотрим, что выйдет у нас.
У этого формата существует параметр: посев - кто с кем на каком этапе играет. Я реализовал два варианта: в каждом раунде случайные противники и классический посев (в нашем случае, это первая команда играет против пятой, вторая - против шестой и так далее).
А ещё есть фактор ничьих. После них нужно играть дополнительное время и бить серию пенальти. В этой модели мы примем, что вероятность пройти серию пенальти не зависит от сил команды и всегда равно 50%. Лотерея так лотерея. Я понимаю, что это не так, но для нашей модели так заложить вполне логично и достаточно.
Начнём со случайного посева.
И у нас две лучшие команды встретились в финале!
Только одна ничья, лидер (Порту) не смог справиться с более слабой командой (Галатасарай) и проиграл по пенальти.
При "спортивном" посеве почти та же картина, но более показательна.
На каждом этапе есть явный лидер, который справился с андердогом без проблем. В финале те же лица. И даже результат тот же.

Круговой турнир
Пришло время сыграть "всем со всеми". Формат, который считается эталоном справедливости. Проблема в нём только в том, что он долгий. И именно поэтому я список матчей прикладывать не буду, только итоговую турнирную таблицу
Неожиданностей действительно мало. Но вот Галатасарай смог подняться аж на третье место (по посеву он пятый). Ну и фан-клубу Месси явно не повезло. Они слабее конкурента, но не так, чтобы не забить ни одного гола за 14 матчей.
Общая картина похожа на то, что мы можем видеть в реальных чемпионатах.

Швейцарская система
Это то, что хотели сделать с Лигой Чемпионов, но не смогли.
Формат сложный, общий принцип: "по возможности, ты играешь с соседом по турнирной таблице". Выиграл - получил противника сильнее, проиграл - слабее. Но много раз играть с одним и тем же противником нельзя.
Считается, что эта система более справедлива, чем плей-офф, но играется значительно быстрее, чем "круговик".
Высокая наука говорит, что для 8 команд достаточно трёх туров.

Давайте их сыграем.
И вот у нас первая сенсация! Порту обошёл Сити и опередил Реал по доп показателям! Фан-клуб Роналдо тоже невероятно высоко.
Результат выглядит более случайным, чем у случайного турнира. Как думаете, почему?

Комбинированная система
Это та система, по которой проводилась раньше лига чемпионов и до сих пор проводятся чемпионаты мира и Европы: сначала круговой турнир, но в малых группах, потом игра на вылет.
На всякий случай, сделал и формат "швейцарка + плей-офф". Так мало где играют, но вообще может быть весело.
Все перепетии смотреть не будем, посмотрим, кто дошёл до полуфиналов.
Комбинированная система. Классика: 2 группы + на вылет. Участники полуфиналов и финалов/
3 и 4 места посева не вышли из группы. В финале наши частые гости.
Комбинированная система. Упоротый: одна группа на 8 команд, 4 лучшие выходят в полуфинал.
Никаких сенсаций: лучшие 4 вышли из группы. Две лучшие в финале.
Комбинированная система. Лига Чемпионов здорового человека: швейцарка + на вылет.
Порту не вышел из группы. Две лучшие в финале.

Индекс справедливости
А как же так, аналитика, big data? Как можно какие-то выводы делать по одному турниру? Тем более ладно бы живые люди, им играть много сложно. Но симуляцию чего б не запустить на много-много матчей и турниров.
Сейчас мы так и будем делать. Для этого надо было глазами посмотреть на то, что код для симуляции различных форматов работает так, как мы этого ждём. А вот теперь начнём настоящие танцы.
Во-первых, 8 команд - это не серьёзно. Теперь у нас будет 32 команды. Полюбившаяся нам восьмёрка останется, дальше добавятся какие-то более-менее случайные команды из ЭЛО-рейтинга.
Что мы делаем дальше? Заставляем виртуальных футболистов играть друг с другом в разных форматах 10 тысяч раз. Кажется, статистика должна накопиться.
Но дальше самое интересное. Ну вот сыграли они, как мы будем оценивать полученный результат?
Во-первых, мы его нарисуем. Сделаем таблицу в стиле opta, в которой у нас будут команды и ожидаемые места. И покажем, как часто та или иная команда занимала определённое место.
Тепловая карта, которая показывает вероятность команды занять то или иное место. Пример для кругового турнира. Выборка на 100 симуляциях

Как это читать? Интер в 30% турниров занял третье место. В 2% ему катастрофически не повезло, занял восьмое, в 3% случаев, наоборот, повезло, стал чемпионом.
Хорошо видно, что мы подобрали команды парами. Но и разброс результатов тоже хорошо виден.

А теперь самое главное. Мы сейчас эту таблицу одним числом опишем!

Команды у нас в турнире связаны. Если Реал занял первое место, то Сити его уже не занимает. Везение одного означает невезение другого. Это значит, что на справедливость влияют только вероятности команд занять своё место по посеву, т.е. только диагональ этой таблицы.
Вместо 1024 чисел у нас есть 32, сильно лучше. А как одно получить? Можно просто усреднить. Я "взвешенно" усреднил, посчитал, что предсказание первого место всё-таки чуть-чуть важнее точного предсказания последнего.
И вуаля, у нас есть одно число, которое является индексом спортивной справедливости турнира. Если индекс равен 100%, то это скукота, никаких шансов на сенсации. Если индекс равен 0%, то это значит, что сила команд никак не влияет результат. У рассматриваемой нами таблички индекс равен 42%: точность прогноза мест варьируется от 57% до 9%.

Сравнение систем
Теперь, когда у нас есть индекс справедливости, мы можем делать много-много симуляций и сравнивать турнирные системы между собой.
Абсолютно случайное распределения для 8 команд индекс оценит в 12,5% (вероятность занять любое место одинаковая, 1/8=0,125). Когда в турнире играет больше команд, шансы каждой логично уменьшаются. Если команд 32, то для случайно перемешанных команд индекс покажет число, близкое к 3%. Именно это число возьмём за основу. Форматы наших турниров должны показать индекс выше 3%.
Как думаете, как будут распределены индексы у разных форматов?
Кроме индекса справедливости вывел ещё и чуть более интепретируемую метрику - шансы фаворита занять первое место.
Сравнение турнирных систем для 32 команд после проведения 100 000 симуляций для каждой.

Моделирование подтвердило наши интуитивные представления.
Есть хороший формат (круговик), который более чем в два раза более справедлив, чем другие.
Другие форматы больше чем в два раза лучше, чем просто случайный набор матчей. А вот разница форматов между собой не такая уж и большая. Например, добавление группового этапа улучшает меру справедливости по сравнению с обычной игрой на вылет всего на 24%.
У вас ещё остались вопросы, почему у Манчестер Сити с момента прихода шейхов только одна победа в Лиге Чемпионов, зато 8 побед в чемпионате Англии?

А как же баланс
Целый ряд сильных игроков, в том числе Родриго Касканте попросили меня обсудить ещё один аспект.
Да, мы смогли оцифровать справедливость. Да, мы поняли, что не так уж и важно упарываться по формату. Но всё-таки, хочется иметь хороший турнир и не играть бесконечное количество матчей, как в круговике.
Можно ли найти какой-то формат, оптимальный как по справедливости, так и по числу игр?
Самое простое - это разделить наш "индекс справедливости" на число игр в турнире. Типа, да, признаём, "круговик" у нас в 2,9 раз более справедлив, чем случайный турнир, но игр пришлось сыграть в 3,2 раза больше. Получается, не так уж и круто.
По этому показателю, ожидаемо, с отрывом будет лидировать игра на вылет. Очень мало игр, зато все - самый сок.
И, на самом деле, особо опций не так много. Единственный формат, в котором можно попробовать найти оптимум - это швейцарская система. Там можно менять число туров произвольно. Возможно, где-то баланс сойдётся.
Оказалось, теоретики не дураки. Та самая формула, по которой нужно считать число матчей - она как раз про баланс справедливости и числа матчей.
При увеличении числа туров индекс справедливости швейцарки не растёт, а при очень большом - может и упасть. Внимательное чтение логов помогает объяснить почему. При большом числе туров лидеры уже сыграли друг с другом, начинаются поиски оптимального соперника, который находится всё ниже и ниже. И это перестаёт быть той "швейцаркой", что мы знаем (играешь против тех, кто играет примерно как ты) и начинается быть больше похожим на случайный турнир. А вес первого и последнего тура одинаковый. Вот индекс и падает.

Так что никакой волшебной таблетки.

Кто сказал МакМагон?
(c) 2022. Kotelok, Roman Tsaregorodtsev