Блоги

Как смотреть на статистику личных встреч? Математический ликбез

44

Введение

Мой прошлый пост вызвал некоторый ажиотаж. Было достаточно много комментариев. Некоторые адекватные, некоторые — нет. Часто люди упоминали странный расчет вероятности победы одной команды над другой.

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

Я хочу поговорить только об одном параметре — личные встречи двух команд. Если хотите, это можно назвать Low Data. Благо математика в этой сфере хорошо проработана и изучается в хороших вузах. Этот пост будет, наверное, слишком задротским, но в конце я снова оценю шансы различных команд на победу в воображаемом турнире.

Математическая база

Итак, рассмотрим матч двух команд — А и Б. Предположим, что мы знаем вероятность победы команды А, которая равна (пусть для примера будет 0,6=60%). Какова вероятность, что из N матчей команда А выиграет ровно K? Ответ на этот вопрос известен и называется он биномиальным распределением.

Рассмотрим для начала два матча и две победы. Тут все очевидно — это значит, что команда А должна победить в первом матче (с вероятностью p) и во втором (тоже p). То есть, Bin(N=2,K=2;p=0,6)=p^2=36% (Bin соответствует БИНомиальному распределению). Пусть теперь K=1. Тогда команда А должна выиграть один матч (p), а команда Б — выиграть другой (1-p). То есть, p*(1-p). Но ведь нам пофигу, какой конкретно матч выиграла команда А, то есть у нас есть два варианта — первый или второй. Получаем Bin(N=2,K=1;p=0.36)=2*p^1*(1-p)^(2-1)=48%. Если расширить эту логику на любое число матчей, получится формула:

где N!=1*2*...*N — факториал.
Само распределение выглядит так:

Окей, с этим разобрались. Теперь рассмотрим обратную задачу: мы знаем, что команда А выиграла K матчей из N в матчах с командой Б. Какова вероятность того, что команда А выиграет следующий матч против Б? Казалось бы, очевидный ответ p=K/N. Но нет! На самом деле, мы можем лишь сказать, что эта вероятность с определенной точностью находится в некоторых пределах или найти среднюю вероятность такого события. То есть у нас пошел уже второй уровень вероятностей — мы можем сказать только вероятность вероятности нашего события.

Рассмотрим биномиальное распределение немного в другом контексте. Ранее числа N и K были переменными, а число p — параметром. Теперь все будет наоборот — N и K будут нашими заданными параметрами, а p — переменной. Поскольку в первом члене нет зависимости от нашей переменной p, то опустим этот член и получим:

Здесь Norm — это нормировочный множитель, и он равен:

Поверьте, он нужен. Казалось бы, какая разница, но она есть. До этого N и K были дискретными переменными, а теперь переменная p — непрерывная. То есть функции Bin и f определены на разных множествах — первое только для натуральных чисел, второе — на множестве всех действительных чисел от 0 до 1.

Посмотрим на полученные распределения вероятностей:

Здесь на всех трех графиках команда А выиграла половину игр, но в первом случае (синяя линия) — это 1 из 2, во втором (оранжевая) — 5 из 10, в третьем (серая) — 25 из 50. Во всех трех случаях средняя вероятность победы 50%, но отличаются погрешности. В первом это 22%, во втором — 14%, а в третьем — 7%. Чем больше игр в выборке, тем меньше наша погрешность. Погрешность измерения 10% начинается только после примерно 20 личных встреч. Значит, комментаторы могут спокойно говорить «не статистика», если в выборке меньше 20 матчей (то есть почти всегда).

Моделирование турнира

Для моделирования турнира использовался метод Монте-Карло, который описан ранее. Здесь я опишу лишь принципиальные отличия. Теперь вероятность победы одной команды над другой — не какое-то определенное число, а случайная величина, распределенная согласно известному распределению.

Рассмотрим на примере VP против Liquid. Эти команды сыграли 18 карт друг с другом после TI7. 8 раз выиграли VP, 10 — Liquid. Построим плотность распределения нашей случайной величины для этой пары:

Это означает, что если VP и Liquid сыграют друг с другом 100 матчей, то в 24 случаях вероятность победы VP будет 40%, в 32 матчах — 50%, в 23 — 60% и т.д.

Допилив такой случайный алгоритм в свой модуль, я провел 10 000 турниров среди команд топ-8 по DPC. Сетка турнира, как и раньше, была double-elimination, жеребьевка была случайной. Вот результаты:

На этот раз фаворитами являются Team Liquid. По итогам двух постов можно сделать следующие выводы:

  1. Основные три фаворита надвигающегося The International — это Virtus.pro, Team Liquid и PSG.LGD. Шансы остальных команд существенно ниже.
  2. VP более стабильны и лучше выступают против команд ниже рангом, чем их непосредственные конкуренты. Liquid и LGD лучше настраиваются в матчах против сильных противников, но чаще «закидывают» карты против менее сильных коллективов.
  3. Многое зависит от жеребьевки. Чтобы максимизировать свои шансы на победу, VP должны всеми силами оказаться максимально далеко (по сетке) от Liquid и LGD. А вот европейцам и китайцам в принципе пофиг.
  4. Если команды сыграли друг с другом меньше 20 матчей (на самом деле, это число немного варьируется в зависимости от K — числа побед одной из команд), то погрешность в вероятности победы больше 10%, что много.

Какие-то еще выводы как минимум спорны.

P.S.: Если кто-нибудь сделает работу, описанную во введении, это будет дико круто.

P.P.S.: Не думаю, что будут еще посты — на мой взгляд, тема мною «облизана» достаточно подробно, и желания делать что-то еще по подобному моделированию у меня нет.

P.P.P.S.: Моделировалось все в НЕВЕРОЯТНОЙ программе Microsoft Excel с использованием VBA.

P.P.P.P.S.: Как и обещал в начале, пост очень задротский. Если кто-то узнал что-то новое из области математики, то я рад.

Спасибо, что дочитали!

С уважением,

Костя

Комментарии