Финты справедливости
Очередной футбольной сезон заканчивается. Самое время вернуться к вопросам справедливости. Давайте попробуем её измерить? Ну хотя бы в футболе.
Какова роль случая в спорте? Действительно ли плей-офф - это лотерея? Портит ли нам впечатление от игры новая схема розыгрыша лиги чемпионов?
Давайте построим много-много графиков и закроем уже этот гештальт.
С чего начать?
Начнём с таких простых тезисов.
В футболе высок фактор случайности. То есть результат любого матча имеет вероятностный характер.
Считаем, что случайные факторы (погода, настроение, перепады формы, отскоки мяча) распределены симметрично относительно команд, т.е. не бывает хронически “везучих” и “невечучих” команд на долгой дистанции. Я знаю, что со мной поспорят болельщики любой команды. И я буду рад реальным контрпримерам.
В футболе высок и фактор навыка (умения, мастерства, класса).
Этот фактор можно обобщить каким-то числом, которое показывает, насколько одна команда сильнее другой.
Это число означает наиболее вероятный вариант развития событий (максимум распределения вероятности). Но возможны и вероятны и другие.
Кроме фактора разницы в классе на развитие матча влияет дисперсия (и связанная с ней волатильность). Это мера того, насколько широк разброс случайности результатов возможен. Она не зависит от класса команд (но может зависеть от их игрового стиля). А ещё она зависит от внешних условий (погода, качество поля, характер судейства, наличие VAR или дополнительных арбитров)
Чем лучше условия, тем величина дисперсии ниже. Если дворовой команде из Омска нужно играть против мадридского “Реала”, то на разбитом газоне в снег ночью у них шансов на положительный результат немного больше, чем на “Бернабеу” в солнечный день при соблюдении всех лигачемпионских стандартов
Разность в классе определяет разницу забитых и пропущенных мячей в матче (+1 или -4), а не общий счёт. Например, разница в 200 пунктов означает +2, но какой именно счёт 2-0, 3-1 или 6-4 - зависит не от класса команд, а других качеств (возможно, игрового стиля).
Все эти тезисы можно собрать в функцию, которая может симулировать футбольные матчи с учётом относительной силы команд и фактора случайности.
Справедливость на дистанции
Если с одним матчем понятно, то теперь давайте возьмём набор команд и представим на секунду, что их настоящая сила а) нам известна, б) не меняется.
И пусть они сыграют турниры по разных схемам, а мы посмотрим, что из этого выйдет.
Кто у нас будет подопытными кроликами?
Начнём вот с таких:
Случайный турнир
Начнём со случайного турнира.
Как это? Очень просто: выбираем случайную пару команд и они играют. Потом ещё одну. И ещё. Всё сводим в турнирную таблицу. Ключевой показатель: среднее количество очков за матч.
Это ужасный формат. Кто-то может сыграть больше игр, кто-то - меньше. Кому-то попадутся соперники слабее, кому-то сильнее. Как мы помним, в таком турнире вероятность сенсации самая большая.
Сколько игр поставить? Ну, допустим, по аналогии с игрой на вылет, по 3 игры на команду, т.е. 24 матча всего.
Итак, что же мы получим?
Дикий разброс числа игр, большая разница в числе набранных очков. И, тем не менее, сильные вверху, слабые - внизу.
Реал сыграл лучше Сити (хотя у нас он чуть-чуть слабее)
Галатасараю не повезло с календарём (две игры против Сити и одна - против Реала),
Порту - наоборот, повезло, сыграл с обоими аутсайдерами.
Но на этом всё.
Вроде и случайный турнир, а не такая уж и лотерея, не находите?
Игра на вылет
Это более классический формат, в него играют и часто. Игру на вылет часто критикуют за высокий фактор случайности. Посмотрим, что выйдет у нас.
У этого формата существует параметр: посев - кто с кем на каком этапе играет. Я реализовал два варианта: в каждом раунде случайные противники и классический посев (в нашем случае, это первая команда играет против пятой, вторая - против шестой и так далее).
А ещё есть фактор ничьих. После них нужно играть дополнительное время и бить серию пенальти. В этой модели мы примем, что вероятность пройти серию пенальти не зависит от сил команды и всегда равно 50%. Лотерея так лотерея. Я понимаю, что это не так, но для нашей модели так заложить вполне логично и достаточно.
Начнём со случайного посева.
И у нас две лучшие команды встретились в финале!
Только одна ничья, лидер (Порту) не смог справиться с более слабой командой (Галатасарай) и проиграл по пенальти.
При "спортивном" посеве почти та же картина, но более показательна.
На каждом этапе есть явный лидер, который справился с андердогом без проблем. В финале те же лица. И даже результат тот же.
Круговой турнир
Пришло время сыграть "всем со всеми". Формат, который считается эталоном справедливости. Проблема в нём только в том, что он долгий. И именно поэтому я список матчей прикладывать не буду, только итоговую турнирную таблицу.
Неожиданностей действительно мало. Но вот Галатасарай смог подняться аж на третье место (по посеву он пятый). Ну и фан-клубу Месси явно не повезло. Они слабее конкурента, но не так, чтобы не забить ни одного гола за 14 матчей.
Общая картина похожа на то, что мы можем видеть в реальных чемпионатах.
Швейцарская система
Это то, что хотели сделать с Лигой Чемпионов, но не смогли.
Формат сложный, общий принцип: "по возможности, ты играешь с соседом по турнирной таблице". Выиграл - получил противника сильнее, проиграл - слабее. Но много раз играть с одним и тем же противником нельзя.
Считается, что эта система более справедлива, чем плей-офф, но играется значительно быстрее, чем "круговик".
Высокая наука говорит, что для 8 команд достаточно трёх туров.
Давайте их сыграем.
И вот у нас первая сенсация! Порту обошёл Сити и опередил Реал по доп показателям! Фан-клуб Роналдо тоже невероятно высоко.
Результат выглядит более случайным, чем у случайного турнира. Как думаете, почему?
Комбинированная система
Это та система, по которой проводилась раньше лига чемпионов и до сих пор проводятся чемпионаты мира и Европы: сначала круговой турнир, но в малых группах, потом игра на вылет.
На всякий случай, сделал и формат "швейцарка + плей-офф". Так мало где играют, но вообще может быть весело.
Все перепетии смотреть не будем, посмотрим, кто дошёл до полуфиналов.
3 и 4 места посева не вышли из группы. В финале наши частые гости.
Никаких сенсаций: лучшие 4 вышли из группы. Две лучшие в финале.
Порту не вышел из группы. Две лучшие в финале.
Индекс справедливости
А как же так, аналитика, big data? Как можно какие-то выводы делать по одному турниру? Тем более ладно бы живые люди, им играть много сложно. Но симуляцию чего б не запустить на много-много матчей и турниров.
Сейчас мы так и будем делать. Для этого надо было глазами посмотреть на то, что код для симуляции различных форматов работает так, как мы этого ждём. А вот теперь начнём настоящие танцы.
Во-первых, 8 команд - это не серьёзно. Теперь у нас будет 32 команды. Полюбившаяся нам восьмёрка останется, дальше добавятся какие-то более-менее случайные команды из ЭЛО-рейтинга.
Что мы делаем дальше? Заставляем виртуальных футболистов играть друг с другом в разных форматах 10 тысяч раз. Кажется, статистика должна накопиться.
Но дальше самое интересное. Ну вот сыграли они, как мы будем оценивать полученный результат?
Во-первых, мы его нарисуем. Сделаем таблицу в стиле opta, в которой у нас будут команды и ожидаемые места. И покажем, как часто та или иная команда занимала определённое место.
Как это читать? Интер в 30% турниров занял третье место. В 2% ему катастрофически не повезло, занял восьмое, в 3% случаев, наоборот, повезло, стал чемпионом.
Хорошо видно, что мы подобрали команды парами. Но и разброс результатов тоже хорошо виден.
А теперь самое главное. Мы сейчас эту таблицу одним числом опишем!
Команды у нас в турнире связаны. Если Реал занял первое место, то Сити его уже не занимает. Везение одного означает невезение другого. Это значит, что на справедливость влияют только вероятности команд занять своё место по посеву, т.е. только диагональ этой таблицы.
Вместо 1024 чисел у нас есть 32, сильно лучше. А как одно получить? Можно просто усреднить. Я "взвешенно" усреднил, посчитал, что предсказание первого место всё-таки чуть-чуть важнее точного предсказания последнего.
И вуаля, у нас есть одно число, которое является индексом спортивной справедливости турнира. Если индекс равен 100%, то это скукота, никаких шансов на сенсации. Если индекс равен 0%, то это значит, что сила команд никак не влияет результат. У рассматриваемой нами таблички индекс равен 42%: точность прогноза мест варьируется от 57% до 9%.
Сравнение систем
Теперь, когда у нас есть индекс справедливости, мы можем делать много-много симуляций и сравнивать турнирные системы между собой.
Абсолютно случайное распределения для 8 команд индекс оценит в 12,5% (вероятность занять любое место одинаковая, 1/8=0,125). Когда в турнире играет больше команд, шансы каждой логично уменьшаются. Если команд 32, то для случайно перемешанных команд индекс покажет число, близкое к 3%. Именно это число возьмём за основу. Форматы наших турниров должны показать индекс выше 3%.
Как думаете, как будут распределены индексы у разных форматов?
Кроме индекса справедливости вывел ещё и чуть более интепретируемую метрику - шансы фаворита занять первое место.
Моделирование подтвердило наши интуитивные представления.
Есть хороший формат (круговик), который более чем в два раза более справедлив, чем другие.
Другие форматы больше чем в два раза лучше, чем просто случайный набор матчей. А вот разница форматов между собой не такая уж и большая. Например, добавление группового этапа улучшает меру справедливости по сравнению с обычной игрой на вылет всего на 24%.
У вас ещё остались вопросы, почему у Манчестер Сити с момента прихода шейхов только одна победа в Лиге Чемпионов, зато 8 побед в чемпионате Англии?
А как же баланс
Целый ряд сильных игроков, в том числе Родриго Касканте попросили меня обсудить ещё один аспект.
Да, мы смогли оцифровать справедливость. Да, мы поняли, что не так уж и важно упарываться по формату. Но всё-таки, хочется иметь хороший турнир и не играть бесконечное количество матчей, как в круговике.
Можно ли найти какой-то формат, оптимальный как по справедливости, так и по числу игр?
Самое простое - это разделить наш "индекс справедливости" на число игр в турнире. Типа, да, признаём, "круговик" у нас в 2,9 раз более справедлив, чем случайный турнир, но игр пришлось сыграть в 3,2 раза больше. Получается, не так уж и круто.
По этому показателю, ожидаемо, с отрывом будет лидировать игра на вылет. Очень мало игр, зато все - самый сок.
И, на самом деле, особо опций не так много. Единственный формат, в котором можно попробовать найти оптимум - это швейцарская система. Там можно менять число туров произвольно. Возможно, где-то баланс сойдётся.
Оказалось, теоретики не дураки. Та самая формула, по которой нужно считать число матчей - она как раз про баланс справедливости и числа матчей.
При увеличении числа туров индекс справедливости швейцарки не растёт, а при очень большом - может и упасть. Внимательное чтение логов помогает объяснить почему. При большом числе туров лидеры уже сыграли друг с другом, начинаются поиски оптимального соперника, который находится всё ниже и ниже. И это перестаёт быть той "швейцаркой", что мы знаем (играешь против тех, кто играет примерно как ты) и начинается быть больше похожим на случайный турнир. А вес первого и последнего тура одинаковый. Вот индекс и падает.
Так что никакой волшебной таблетки. Кто сказал МакМагон?
Другие материалы по теме из Котелка:
Как зануды предсказывают результаты футбольных матчей. Рассказ про попытку построить прогнозы в футболе по историческим данным