Кто выиграет чемпионат мира по регби?

Кто выиграет чемпионат мира по регби?

Автор: Виктория Лазарева
Дата публикации: 05.27.2021
Рейтинг автора: 4.5/5

Чемпионат мира по регби среди мужчин только начинается1, поэтому я подумал, что было бы интересно сделать некоторые прогнозы до того, как турнир начнется. План состоит в том, чтобы построить статистическую модель, используя результаты предыдущих матчей, а затем использовать ее для оценки вероятности победы каждой из команд. (Весь код, который я использовал для получения данных и получения результатов в этом посте, находится здесь.) Исторические данные Я моделировал футбольные данные раньше и обнаружил, что их очень легко получить. С другой стороны, данные по регби получить немного сложнее. Я не смог найти веб-сайт, на котором я мог бы просто загрузить файл с историческими результатами, поэтому мне пришлось прибегнуть к очистке ESPN. Я давно этим не занимался, поэтому мне потребовалось некоторое время, чтобы проверить html и выяснить, как извлечь данные. В конце концов,Я загрузил все результаты мужского международного союза регби с сегодняшнего дня по 1 января 2013 года, чтобы использовать их в качестве тренировочного набора для моей модели. Комбинация стандартной библиотеки python и Beautiful Soup в итоге дала мне результат! Модель I будет моделировать количество очков, набранных каждой из команд в матче, используя независимую отрицательную биномиальную модель2: [\ mathrm {points_ {ij}} \ sim \ mathrm {NegBinom2} (\ alpha_i \ beta_j, \ phi). ] \ (\ mathrm {points} _ {ij} ) обозначает количество очков, набранных командой \ (i ) против команды \ (j ). Каждой команде назначается способность атаковать \ (\ alpha_i ) и способность защиты \ (\ beta_i ) 1win 5000 рублей. Ожидаемое количество очков, набранных командой \ (i ) против команды \ (j ), тогда равно произведению атакующей способности команды \ (i ) на способность команды \ (j ) к защите. Это довольно интуитивно понятно:чем лучше команда \ (i ) атакует (больше \ (\ alpha_i )), тем больше очков они наберут. Чем лучше защитные способности команды \ (j ) (меньше \ (\ beta_j )), тем меньше очков наберет команда \ (i ). Такая модель очень часто используется в контексте футбольных матчей (посмотрите классическую статью Диксона и Коулза) .3 В этом случае обычно используется вероятность Пуассона, но я обнаружил, что отрицательный бином лучше воспроизводит распределение оценок. в матчах по регби. Я также использую иерархический априор для способностей к атаке и защите, например: [\ log \ alpha_i \ sim \ mathcal {N} (\ mu_ \ alpha, \ sigma_ \ alpha).] Это должно лучше упорядочить модель. Вот код Стэна для модели: data {int nteam; int nmatch; int home_team [nmatch]; int away_team [nmatch]; int home_points [nmatch]; int away_points [nmatch];} параметры {vector [nteam] log_a_tilde; вектор [команда] log_b_tilde; реальный sigma_a; реальный sigma_b; настоящий mu_b; реальный фи; } преобразованные параметры {vector [nteam] a = exp (sigma_a * log_a_tilde); вектор [nteam] b = exp (mu_b + sigma_b * log_b_tilde); вектор [nmatch] home_rate = a [home_team]. * b [away_team]; вектор [nmatch] away_rate = a [away_team]. * b [home_team]; } модель {phi ~ normal (0, 5); sigma_a ~ нормальный (0, 1); sigma_b ~ нормальный (0, 1); mu_b ~ нормальный (0, 5); log_a_tilde ~ нормальный (0, 1); log_b_tilde ~ нормальный (0, 1); home_points ~ neg_binomial_2 (home_rate, фи); away_points ~ neg_binomial_2 (away_rate, фи); } генерируемые количества {int home_points_rep [nmatch]; int away_points_rep [nmatch]; для (i в 1: nmatch) {home_points_rep [i] = neg_binomial_2_rng (home_rate [i], phi);away_points_rep [i] = neg_binomial_2_rng (away_rate [i], фи); }} Если реализация выглядит немного забавно, это потому, что я использовал нецентрированную версию модели, чтобы сэмплер Стэна работал лучше. Проверки моделей В интересах краткости я не буду тратить на это много времени. Но было бы очень плохой практикой не тратить некоторое время на демонстрацию того, что модель дает разумные смоделированные данные! В приведенном выше коде Стэна вы можете видеть, что для этой цели я генерирую смоделированные данные. В итоге я получаю столько же смоделированных наборов данных, сколько шагов в моей цепочке MCMC. Один из хороших способов визуальной проверки - построить распределение данных по тем же осям, что и распределение одного смоделированного набора данных. Поскольку у нас много смоделированных наборов данных, мы можем строить этот график несколько раз.Это дает нам представление о том, являются ли реальные данные «типичными» для модели. Вот такой рисунок, на котором я рисую распределение общего количества очков, набранных в матче: и другой, где я рисую распределение разницы в баллах между двумя командами: Модель, кажется, последовательно дает несколько матчей с очень высоким общим количеством очков. относительно данных, но в остальном, похоже, выполняет разумную работу. Моделирование чемпионата мира Теперь, когда у меня есть апостериорные образцы модели, я могу моделировать чемпионат мира много раз и использовать результаты для оценки вероятности победы каждой из команд. Для этого мне нужно знать правила чемпионата мира по футболу. На групповых этапах командам присваивается 4 очка за победу, 2 очка за ничью и 0 очков за поражение. Кроме того, команды получают бонусные баллы, если они сделают 4 или более попыток.или если они проиграют 7 или меньше очков. Поскольку моя модель дает общее количество очков, но не предсказывает явно количество попыток, которые команда наберет, я просто назначаю бонусный балл, если они набирают более 25 баллов. Мой рецепт будет следующим: Выберите набор параметров модели \ (\ theta = (\ {\ alpha_i }, \ {\ beta_i }, \ phi) ) из одной итерации MCMC. Используйте параметры, чтобы смоделировать отдельную реализацию каждого из групповых матчей, и используйте правила турнира, чтобы выяснить, какие команды выйдут в плей-офф. Смоделируйте каждый из матчей стадии плей-офф, в конечном итоге заканчивая победителем. Сохраните результаты и повторяйте (1) - (3) для каждой итерации MCMC. После того, как эти расчеты сделаны, у меня есть тысячи смоделированных кубков мира. Чтобы вычислить апостериорную прогнозируемую вероятность победы данной команды,все, что мне нужно сделать, это подсчитать долю раз, когда команда выиграла в моих симуляциях - просто! Мне очень нравится эта сторона использования MCMC, становится просто вычислить приблизительное апостериорное прогнозирующее распределение нетривиальных функций. Результаты Хорошо - так кто же победит? Вот вероятности, присвоенные каждой из команд моделью (я показываю вероятности только для команд, для которых вероятность составляет 0,01 или больше): Вероятность победы команды на чемпионате мира Новая Зеландия 0,50 Англия 0,15 Южная Африка 0,13 Ирландия 0,08 Уэльс 0,06 Австралия 0,05 Франция 0,01 Шотландия 0,01 Новая Зеландия - огромные фавориты, с Англией, Южной Африкой и Ирландией все колеблются с шансом на победу около 0,1. Я, возможно, удивлен тем, что Уэльсу приписывают заметно меньшую вероятность, чем у Англии,но, возможно, это связано с тем, что вероятный путь, по которому им придется пройти к финалу, более сложен, чем у Англии. Кроме того, несколько лет назад Уэльс пережил ужасные времена, и простая модель, которую я использовал, не учитывает изменение формы, поэтому она может несколько недооценить Уэльс. Как болельщику Англии, мне также любопытно узнать, насколько вероятно, что Англия попадет на разные этапы турнира. Модель дает Англии вероятность выхода из группы 0,94 - так что есть очень хороший шанс, что они выступят лучше, чем на последнем чемпионате мира, и мы должны увидеть их в четвертьфинале. Вероятность выхода в полуфинал - 0,65, в финал - 0,30. Так что фанаты должны быть разочарованы, если они не увидят, что Англия выиграет хотя бы один матч на выбывание! Пока я на нем,вот результаты модели для каждой из групп (снова я не учитываю команды с вероятностью

Чемпионат мира по регби среди мужчин только начинается 1, поэтому я подумал, что было бы интересно сделать некоторые прогнозы до того, как турнир начнется. План состоит в том, чтобы построить статистическую модель, используя результаты предыдущих матчей, а затем использовать ее для оценки вероятности победы каждой из команд. (Весь код, который я использовал для получения данных и получения результатов в этом посте, находится здесь.)

Исторические данные

Раньше я моделировал футбольные данные, и их очень легко получить. С другой стороны, данные по регби получить немного сложнее. Я не смог найти веб-сайт, на котором я мог бы просто загрузить файл с историческими результатами, поэтому мне пришлось прибегнуть к очистке ESPN. Я давно этим не занимался, поэтому мне потребовалось некоторое время, чтобы проверить html и выяснить, как извлечь данные. В конце концов, я загрузил все результаты международных мужских союзов регби за период с сегодняшнего дня по 1 января 2013 года, чтобы использовать их в качестве тренировочного набора для моей модели. Комбинация стандартной библиотеки python и Beautiful Soup в итоге дала мне результат!

Модель

Я смоделирую количество очков, набранных каждой из команд в матче, используя независимую отрицательную биномиальную модель 2:

\ (\ mathrm _ \) относится к количеству очков, набранных командой \ (i \) против команды \ (j \). Каждой команде назначается способность атаковать \ (\ alpha_i \) и способность защиты \ (\ beta_i \). Ожидаемое количество очков, набранных командой \ (i \) против команды \ (j \), тогда равно произведению атакующей способности команды \ (i \) на способность команды \ (j \) к защите. Это довольно интуитивно понятно: чем лучше команда \ (i \) атакует (больше \ (\ alpha_i \)), тем больше очков они наберут. Чем лучше защитные способности команды \ (j \) (меньше \ (\ beta_j \)), тем меньше очков наберет команда \ (i \).

Такая модель очень часто используется в контексте футбольных матчей (посмотрите классическую статью Dixon & Coles). 3 В этом случае обычно используется вероятность Пуассона, но я обнаружил, что отрицательный бином лучше воспроизводит распределение оценок в матчах по регби.

Я также использую иерархический априор для атакующих и защитных способностей, например:

\ [\ журнал \ alpha_i \ sim \ mathcal (\ mu_ \ alpha, \ sigma_ \ alpha). \]

Это должно лучше упорядочить модель. Вот код Стэна для модели:

Если реализация выглядит немного забавно, это потому, что я использовал нецентрированную версию модели, чтобы сэмплер Стэна работал лучше.

Проверки модели

В интересах краткости я не буду тратить на это много времени. Но было бы очень плохой практикой не тратить некоторое время на демонстрацию того, что модель дает разумные смоделированные данные! В приведенном выше коде Стэна вы можете видеть, что для этой цели я генерирую смоделированные данные. Я получаю столько же смоделированных наборов данных, сколько шагов в моей цепочке MCMC.

Один из хороших способов визуальной проверки - это построить распределение данных по тем же осям, что и распределение одного смоделированного набора данных. Поскольку у нас много смоделированных наборов данных, мы можем строить этот график несколько раз. Это дает нам представление о том, являются ли реальные данные «типичными» для модели. Вот такой рисунок, на котором я рисую распределение общего количества очков, набранных в матче:

и еще один, где я рисую распределение разницы в очках между двумя командами:

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

Имитация чемпионата мира по футболу

Теперь, когда у меня есть апостериорные образцы модели, я могу многократно моделировать чемпионат мира и использовать результаты для оценки вероятности победы каждой из команд. Для этого мне нужно знать правила чемпионата мира по футболу. На групповых этапах командам присваивается 4 очка за победу, 2 очка за ничью и 0 очков за поражение. Кроме того, командам начисляется бонусное очко, если они набирают 4 или более попыток или проигрывают 7 или менее очков. Поскольку моя модель дает общее количество очков, но не предсказывает явно количество попыток, которые команда наберет, я просто назначаю бонусный балл, если они набирают более 25 баллов.

Мой рецепт будет таким:

  1. Выберите набор параметров модели \ (\ theta = (\ , \ , \ phi) \) из одной итерации MCMC.
  2. Используйте параметры, чтобы смоделировать отдельную реализацию каждого из групповых матчей, и используйте правила турнира, чтобы выяснить, какие команды выйдут в плей-офф.
  3. Смоделируйте каждый из матчей стадии плей-офф, в конечном итоге заканчивая победителем.
  4. Сохраните результаты и повторяйте (1) - (3) для каждой итерации MCMC.

После того, как эти расчеты сделаны, у меня есть тысячи смоделированных кубков мира. Чтобы рассчитать апостериорную прогнозируемую вероятность победы данной команды, все, что мне нужно сделать, это вычислить долю раз, которую команда выиграла в моих симуляциях - просто! Мне очень нравится эта сторона использования MCMC, становится просто вычислить приблизительное апостериорное прогнозирующее распределение нетривиальных функций.

Полученные результаты

Хорошо - так кто же победит? Вот вероятности, присвоенные каждой из команд моделью (я показываю вероятности только для команд, для которых вероятность составляет 0,01 или больше):

Команда Вероятность победы на чемпионате мира
Новая Зеландия 0,50
Англия 0,15
Южная Африка 0,13
Ирландия 0,08
Уэльс 0,06
Австралия 0,05
Франция 0,01
Шотландия 0,01

Новая Зеландия - огромные фавориты: у Англии, Южной Африки и Ирландии шанс на победу составляет около 0,1. Возможно, я удивлен тем, что Уэльсу присвоена заметно более низкая вероятность, чем у Англии, но, возможно, это связано с тем, что вероятный путь, по которому им придется идти в финал, более сложен, чем у Англии. Кроме того, несколько лет назад Уэльс пережил ужасные времена, и простая модель, которую я использовал, не учитывает изменение формы, поэтому она может несколько недооценить Уэльс.

Как болельщику Англии, мне также любопытно узнать, насколько вероятно, что Англия попадет на разные этапы турнира. Модель дает Англии вероятность выхода из группы 0,94 - так что есть очень хороший шанс, что они выступят лучше, чем на последнем чемпионате мира, и мы должны увидеть их в четвертьфинале. Вероятность выхода в полуфинал - 0,65, в финал - 0,30. Так что фанаты должны быть разочарованы, если они не увидят, что Англия выиграет хотя бы один матч на выбывание!

Пока я занимаюсь этим, вот результаты модели для каждой из групп (опять же, я опускаю команды с вероятностью

Популярные слоты