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

Прежде чем волноваться и углубляться в мельчайшие детали биномиальных переменных и геометрических рядов, давайте начнем с самого начала. Почему? Какое нам дело до того, как написать уравнение для продолжительности игры в теннис?

Когда дело доходит до возможности написать «уравнение в закрытой форме» для продолжительности игры в теннис, ответ, вероятно, заключается в том, что нам все равно (кроме того, что мы просто хотим стряхнуть пыль с математической паутины). . В век компьютеров и симуляций возможность решить эту задачу без численной помощи бесполезна. Но идея связать продолжительность игры в теннис с чем-то вроде вероятности p того, что сервер выиграет любое заданное очко, полезна.

Теннис в настоящее время это:

  • По-видимому, небольшой кризис, когда матчи становятся все длиннее, а случаи очень длинных матчей становятся все более частыми.
  • Возвещая о появлении нового поколения еще более высоких игроков, более высокие игроки выполняют более свирепые подачи и дают еще больше доминирования подающему игроку в любой игре.

Размышляя над двумя вышеупомянутыми вещами, я в свободное время обдумывал эту идею. Ниже приведено пошаговое руководство с использованием «моделирования на основе очков» о том, как вывести формулу для ожидаемого количества очков в данной игре в теннис, а затем последовало небольшое моделирование на Python, чтобы убедиться, что я не ошибся. -шагнул куда-то со всеми p и n, летающими вокруг.

Основы точечного моделирования

Учитывая вероятность p того, что сервер выиграет очко (и, таким образом, (1-p) того, что игрок, возвращающий игрок, выиграет), мы можем написать, что вероятность того, что сервер выиграет x очков, если мы сыграем n очков, как:

Это просто утверждение о том, что вероятность следует биномиальному распределению, поскольку каждая точка считается бинарным результатом (или случайной величиной Бернулли, если вам так хочется). Игру в теннис можно рассматривать как просто различные наборы очков с некоторыми критериями вокруг них, например:

  • как только один игрок набирает 4 очка, он выигрывает игру
  • если у обоих игроков по 3, то вам нужно убрать 2 очка (двойка)

Мы можем наметить структуру игры в теннис следующим образом:

Давайте рассмотрим несколько примеров, чтобы объяснить схему. Если сервер выигрывает все очки, то идем по верхней диагонали — играем 4 очка и с вероятностью p сервер выигрывает каждое. Чтобы записать это в указанном выше формате:

…где я ввел вышеприведенное обозначение p(4,0) для вероятности того, что игра закончится, когда подающий выиграет 4, а возвращающий игрок выиграет 0 очков.

Точно так же, если подающий выигрывает 4, а возвращающий выигрывает 1, то мы идем по диагонали вверх, но в какой-то момент опускаемся вниз, поскольку возвращающий выигрывает одно очко. Важно отметить, что это падение не может произойти в самом конце, т. е. сервер выигрывает 4 очка, а затем возвращает свое очко, потому что в этом случае игра уже закончилась бы. Из-за этого нам нужно убрать сценарий, в котором это происходит — когда сервер выигрывает 4 очка подряд.

Это применение принципа включения-исключения, и оно будет важно повсюду — при условии, что мы не получим двойку, как только один игрок наберет 4 очка, игра окончена. Опять же, если вы хотите пофантазировать, то можете сказать, что мы моделируем цепь Маркова, в которой мы достигли поглощающего состояния, то есть один игрок набирает 4 очка, и мы больше не переходим в другие состояния, потому что игра окончена. .

Используя приведенные выше обозначения, мы получаем:

…где вычитание (4, 4) должно удалить 1 состояние, когда сервер выигрывает свои 4 очка подряд, а затем возвращающий выигрывает свои.

Превращение вероятности выигрыша в продолжительность игры

Выше мы до сих пор сосредоточились на вероятностях, но здесь нас интересует длительность игры. На самом деле нас интересует ожидаемая продолжительность игры, когда у нас есть заданная вероятность p того, что сервер выиграет очко. Чтобы вычислить это, нам действительно нужно суммировать:

  • вероятность того, что игра закончится после x очков
  • раз x - количество сыгранных очков

для каждого значения x. Мы можем записать это как следующее уравнение:

где у нас есть:

  • Вероятность «победы в любви» (подающего или возвращающего) умножается на 4 балла.
  • Вероятность «выигрыша до 15» (как сервер, так и возвращающий) умножается на 5 баллов.
  • И т.д. и т.п.
  • Какой-то универсальный термин для двойки, который сложнее, потому что включает в себя некоторый потенциал вперед и назад (о нем позже).

Учитывая, что в каждой игре должно быть минимум 4 очка, мы можем переписать это как:

…где p(n) обозначает вероятность того, что игра закончится после n очков. В приведенном выше примере мы только что перераспределили вещи таким образом, что вместо «вероятность, умноженная на очки», у нас есть «вероятность, умноженная на дополнительные очки» — где дополнительные очки сверх базового минимума в 4 очка за игру. Теперь мы можем взять эти термины по очереди.

Сыграно 5 очков (сыграно 1 дополнительное очко)

Как мы видели выше, у нас есть формула для вероятности того, что игра будет «выиграна до 15». Все, что нужно сейчас, — это просуммировать вероятности того, что подающий выиграет, до 15, а возвращающий выигрыш — до 15. Здесь мы можем использовать тот факт, что биномиальное распределение является симметричным s.t.:

Тогда мы имеем для вероятности того, что игра закончится после 5 очков:

где мы воспользовались здесь фактом симметрии, чтобы свернуть биномиальные коэффициенты, т.е. (5,1) = (5,4) и (4,4) = (4,0)

Сыграно 6 очков (сыграно 2 дополнительных очка)

Очень похоже на приведенное выше, мы можем вычислить вероятность того, что мы сыграем 6 очков и игра закончится, которую мы затем умножим на 2, поскольку мы играем на 2 дополнительных очка сверх минимальных 4 очков в игре в теннис:

Двойка

С двойкой у нас есть 2 компонента для вычисления, в отличие от предыдущего примера, где нам нужно вычислить только 1 — вероятность окончания в этом состоянии. 2 компонента:

  • Вероятность оказаться в этом состоянии после того, как будет сыграно n очков (как и раньше).
  • Количество сыгранных очков

Мы можем взять их последовательно.

Вероятность получить двойку

Этот бит относительно прост, так как вероятность получить двойку — это просто вероятность разыграть 6 очков, когда каждый игрок выиграет по 3 — прямо из биномиального распределения:

Очки, сыгранные в двойку

Это сложный момент. Как только мы набираем двойку, мы знаем, что минимум, который мы будем играть, составляет 4 очка сверх и сверх минимума 4 очков в игре. Другими словами, минимум, который мы можем сыграть, составляет 8 очков — 6, чтобы получить двойку, 2, если двойка «решится» сразу. Однако мы можем сыграть больше, если будем немного ходить туда-сюда (идя в преимущество, а затем возвращаясь к двойке и т. д.). Как и раньше, нам нужно будет разделить вещи на концовку игры:

  • Если сервер победит.
  • Если возвращающийся выиграет.

Дополнительные очки в случае победы сервера

Мы можем указать ожидаемые дополнительные очки, сыгранные, если сервер выиграет двойку, как:

Что это говорит?

  • p(n+2,n) — это вероятность того, что если у возвращающего есть n баллов, то у сервера есть еще 2 балла. Начиная с двойки, на этом этапе игра окончена, потому что от двойки, выигравшей еще 2 очка, достаточно для победы в игре.
  • [4 + 2n] - это дополнительное количество очков, например. если мы сразу «решаем» двойку, то есть n=0, то у нас есть 4 дополнительных очка.
  • Затем мы суммируем все возможные n, т. е. n=0 — если двойка разрешается сразу, n=1 — если мы делаем туда и обратно один раз, n=2 — если мы туда и обратно дважды и т. д. и т. д.

Сначала нам нужно попасть в p(n+2, n) — мы можем записать это так:

Чтобы решить эту проблему, мы можем выбросить все, что не зависит от j, и использовать формулу суммы биномиальных коэффициентов:

Это оставляет нам следующее уравнение:

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

…где мы подставили результат сверху, а также разделили скобку [4+2n] и переместили p^2 за пределы суммирования, поскольку оно не зависит от n. Это означает, что теперь у нас есть 2 термина:

  • 4 (минимум дополнительных выстрелов, сыгранных, если мы получим двойку), умноженный на вероятность того, что сервер выиграет двойку.
  • 2n (дополнительные очки за перестановки), умноженные на вероятность того, что двойка закончится после n раундов перестановок.

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

…где в конце я сделал замену, соответствующую нашей ситуации: r=2p(1-p). Вторая серия имеет вид:

Сначала мы можем решить это, заметив, что если мы продифференцируем предыдущий «стандартный» геометрический ряд, мы получим:

Мы также можем дифференцировать решение этой серии, чтобы получить:

Наконец, мы можем умножить на r, чтобы получить интересующее нас количество:

Подставляя в нашу ситуацию r=2p(1-p), мы получаем:

Теперь у нас есть строительные блоки, которые мы можем собрать воедино, чтобы получить ожидаемые дополнительные очки:

  • Как только мы вошли в двойку
  • Если сервер победит

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

Дополнительные баллы, если возвращающийся выигрывает

Мы сделали всю тяжелую работу, описанную выше, для случая с сервером, возврат почти идентичен, за исключением того, что мы поменяли местами несколько p на (1-p). Выражение для дополнительных баллов, начисляемых возвратившемуся игроку, выглядит следующим образом:

Собираем все вместе

Теперь мы рассчитали все наши компоненты, пришло время собрать их вместе. Чтобы напомнить себе после всех этих производных и замещений, которые мы имеем:

  • 4 базовые точки
  • вероятность того, что игра закончится после того, как будет набрано 5 очков, умноженная на 1 дополнительное очко
  • вероятность того, что игра закончится после того, как будет набрано 6 очков, умноженная на эти 2 дополнительных очка
  • вероятность того, что мы введем двойку, и сервер выиграет, умноженная на дополнительные очки, связанные с этим
  • вероятность того, что мы введем двойку, и возвращающий игрок выиграет, умноженный на дополнительные очки, связанные с этим

Теперь о неприятном:

Как наша функция выглядит графически?

Теперь у нас есть наше уравнение, давайте:

  • Напиши это на питоне
  • Сравните выходные данные с продолжительностью смоделированной игры.
  • Попробуйте получить интересные результаты

Ниже приведена реализация приведенной выше формулы в python:

Итак, как это выглядит — давайте построим вывод game_length для различных значений p. Немного интуиции из приведенной выше формулы говорит о том, что:

  • с p=0 или p=1 мы ожидаем, что game_length выведет 4 - игра может быть выиграна или проиграна только любовью
  • с p между промежутками ожидаемая продолжительность игры увеличивается, так как есть больше возможностей для розыгрыша дополнительных очков

Итак, мы видим, что:

  • Как и ожидалось, в крайних случаях мы получаем максимум 4 сыгранных очка.
  • По мере того, как игра становится более сбалансированной (p ближе к 50%), ожидаемая продолжительность игры увеличивается до пикового значения 6,75.
  • Это увеличение ожидаемой продолжительности игры связано с увеличением вероятности того, что игра будет «выиграна до 30», но особенно с выпадением двойки, которая в целом доминирует в дополнительной продолжительности игры.

Из этого можно сделать неплохой вывод. Если людей действительно беспокоит общая продолжительность теннисных матчей, то есть одно простое предложение — убрать двойку и заменить ее точкой внезапной смерти. Это на самом деле то, что было опробовано на Next Gen ATP Finals в течение последних 4 лет.

Использование python для проверки

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

Приведенные выше графики показывают для различных значений p, как выглядит распределение длин игр при запуске симуляций. Конкретно для верхнего левого графика у нас есть:

  • Смоделировали 100 игр и записали их среднюю продолжительность.
  • Повторил это 1000 раз
  • Нанес эти значения в виде распределения и отметил значение нашего производного уравнения вертикальной красной линией.

Учитывая, что красная линия, кажется, находится прямо посередине каждого распределения, мы можем сказать, что все выглядит довольно хорошо.

Заключение

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

  • Как мало кода требуется для «грубой силы» и моделирования миллионов теннисных игр
  • Моделирование 100 000 игр занимает ‹ 1 секунды (используя %timeit на моем Mac)

Тем не менее, иногда интересно посмотреть, можно ли это сделать, а также дать некоторые полезные сведения о том, почему игра длиннее, когда она более сбалансирована.

Как показано на одной из приведенных выше диаграмм, настоящим движущим фактором более долгого ожидания игр является попадание в двойку. Дополнительные 4 выстрела, которые добавляет двойка, по сравнению с минимальной продолжительностью 4, а также возможность еще больше, если вы будете двигаться туда-сюда, — вот что действительно повышает ожидания. Если действительно есть опасения по поводу продолжительности теннисных матчей, то, возможно, отмена двойки — это один из способов сохранить другие аспекты, влияющие на продолжительность матча (тай-брейки, существующая структура сетов), при одновременном сокращении игры — и, следовательно, матча.