Прогнозирование результатов футбола с помощью статистического моделирования

Прогнозирование результатов футбола с помощью статистического моделирования

05.27.2021

Этот пост, объединяющий самый популярный в мире вид спорта с любимым всеми дискретным распределением вероятностей, предсказывает футбольные матчи с использованием распределения Пуассона.

Дэвид Шихан

Специалист по данным, интересующийся спортом, политикой и ссылками на Симпсоны

Футбол (или футбол для моих американских читателей) полон клише: «Это игра из двух таймов», «играть по одной игре за раз» и «Ливерпуль не смог выиграть Премьер-лигу». Вы с меньшей вероятностью услышите: «Если рассматривать количество голов, забитых каждой командой, как независимые процессы Пуассона, статистическое моделирование предполагает, что сегодня у домашней команды есть 60% шансов на победу». Но на самом деле это тоже немного клише (это обсуждалось здесь, здесь, здесь и здесь). Как мы обнаружим, простая модель Пуассона слишком упрощена. Но это хорошая отправная точка и хороший интуитивно понятный способ узнать о статистическом моделировании. Итак, если вы приехали сюда, чтобы заработать деньги, я слышал, что этот парень зарабатывает 5000 фунтов стерлингов в месяц, не выходя из дома.

Распределение Пуассона

Модель основана на количестве голов, забитых / пропущенных каждой командой. Команды, которые в прошлом забивали больше, имеют больше шансов забить голы в будущем. Мы импортируем все результаты матчей недавно завершившегося сезона Премьер-лиги (2016/17). Существуют различные источники этих данных (kaggle, football-data.co.uk, github, API). Поскольку я создавал оболочку R для этого API, по чисто эгоистическим (помимо: я изначально неправильно написал это как эгоистический, который я неправильно интерпретировал как эгостатистический 1win как ставить бонусы. К сожалению, взят egostatistical.com) причин, мы импортируем данные с помощью фантастического пакета footballR. .

Я опущу большую часть кода, который создает графики в этом посте. Не волнуйтесь, вы можете найти этот код на моей странице на github. Я просто представил его здесь, чтобы дать вам представление о том, как я отформатировал данные (в основном dplyr). Хотя этот код может показаться сложным, в основном он включает в себя изменение названий команд, чтобы они были совместимы с API Betfair (подробнее об этом позже). Наша задача - смоделировать финальный раунд светильников в сезоне, поэтому мы должны удалить последние 10 строк (каждая игровая неделя состоит из 10 матчей).

Вы заметите, что в среднем команда хозяев забивает больше голов, чем команда гостей. Это так называемое «домашнее (поле) преимущество» (обсуждается здесь) и не относится к футболу. Сейчас удобное время для введения распределения Пуассона. Это дискретное распределение вероятностей, которое описывает вероятность количества событий в течение определенного периода времени (например, 90 минут) с известной средней частотой возникновения. Ключевое предположение состоит в том, что количество событий не зависит от времени. В нашем контексте это означает, что голы не становятся более / менее вероятными в зависимости от количества голов, уже забитых в матче. Вместо этого количество голов выражается исключительно как функция средней скорости забитых голов. Если это было неясно, возможно, эта математическая формулировка прояснит:

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

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

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

Обратите внимание, что мы считаем количество голов, забитых каждой командой, независимыми событиями (т.е. P (A n B) = P (A) P (B)). Разница между двумя распределениями Пуассона на самом деле называется распределением Скеллама. Таким образом, мы можем рассчитать вероятность ничьей, введя в это распределение средние значения целей.

Итак, надеюсь, вы увидите, как мы можем адаптировать этот подход к конкретным моделям совпадений. Нам просто нужно знать среднее количество голов, забитых каждой командой, и ввести эти данные в модель Пуассона. Давайте посмотрим на распределение голов, забитых «Челси» и «Сандерленд» (команды, финишировавшие 1-м и последним соответственно).

Построение модели

Теперь вы должны убедиться, что количество голов, забитых каждой командой, может быть приблизительно определено распределением Пуассона. Из-за относительного размера выборки (каждая команда играет не более 19 домашних / выездных игр) точность этого приближения может значительно различаться (особенно в начале сезона, когда команды сыграли меньше игр). Как и раньше, теперь мы можем рассчитать вероятность различных событий в этом матче «Челси Сандерленд». Но вместо того, чтобы рассматривать каждое совпадение отдельно, мы построим более общую модель регрессии Пуассона (что это такое?).

Если вам интересно узнать о части glm (.), Вы можете найти дополнительную информацию здесь. Меня больше интересуют значения, представленные в столбце «Оценка» сводной таблицы модели. Это значение аналогично наклону в линейной регрессии. Подобно логистической регрессии, мы берем показатель степени значений параметров. Положительное значение означает больше целей (), а значения, близкие к нулю, представляют более нейтральные эффекты (). Первое, что вы замечаете, это то, что дом имеет оценку 0,29693. Это отражает тот факт, что домашние команды обычно забивают больше голов, чем гости (в частности, = в 1,35 раза более вероятно). Но не все команды созданы равными. «Челси» имеет оценку 0,07890, в то время как соответствующее значение для «Сандерленда» составляет -0,96194 (как бы говоря, «Челси» (Сандерленд) набирает больше (намного хуже!), Чем в среднем). Ну наконец то,оппонент * оценивает наказание / вознаграждение команды в зависимости от качества их противостояния. Это имитирует оборонительную мощь каждой команды (Челси: -0,30364; Сандерленд: 0,37067). Другими словами, у вас меньше шансов забить «Челси». Надеюсь, все это имеет как статистический, так и интуитивный смысл.

Начнем делать прогнозы на предстоящий матч. Мы просто передаем наши команды в poisson_model, и он возвращает ожидаемое среднее количество голов для вашей команды (нам нужно запустить его дважды - мы рассчитываем ожидаемое среднее количество голов для каждой команды отдельно). Итак, давайте посмотрим, сколько голов мы ожидаем забить «Челси» и «Сандерленд».

Как и раньше, у нас есть два распределения Пуассона. Исходя из этого, мы можем рассчитать вероятность различных событий. Я заключу это в функцию simulate_match.

Эта матрица просто показывает вероятность того, что «Челси» (строки матрицы) и «Сандерленд» (столбцы матрицы) забьют определенное количество голов. Например, по диагонали обе команды забивают одинаковое количество голов (например, P (0-0) = 0,031). Итак, вы можете рассчитать шансы на ничью, сложив все диагональные записи. Все, что ниже диагонали, означает победу «Челси» (например, P (3-0) = 0,149). Если вы предпочитаете рынки «Больше / Меньше», вы можете оценить P (меньше 2,5 целей), суммируя записи, в которых сумма номера столбца и номера строки (оба начинаются с нуля) меньше 3 (т. Е. 6 значений, которые образуют верхний левый треугольник). К счастью, мы можем использовать базовые функции обработки матрицы для выполнения этих вычислений.

Хм, наша модель дает «Сандерленду» шанс на победу 2,7%. Но так ли это? Чтобы оценить точность прогнозов, мы сравним вероятности, возвращаемые нашей моделью, с шансами, предлагаемыми биржей Betfair.

Ставки на спорт / торговля

В отличие от традиционных букмекерских контор, на биржах ставок (и Betfair не единственная - она ​​просто самая крупная) вы делаете ставки против других людей (Betfair берет комиссию с выигрыша). Он действует как своего рода фондовая биржа для спортивных мероприятий. И, как и на фондовом рынке, из-за гипотезы эффективного рынка цены, доступные на Betfair, отражают истинную цену / вероятность тех событий (во всяком случае теоретически). Ниже я опубликовал снимок экрана биржи Betfair в воскресенье, 21 мая (за несколько часов до начала этих матчей).

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

Слот Pharaohs Gold 3 Mobile

Мобильный египетский слот Pharaohs Gold 3 приглашает вас на поиски сокровищ в древних пирамидах. В нем 5 барабанов с 9 линиями выплат, количество которых может регулироваться игроком. Каждое вращение может принести вам выигрыш с коэффициентами до 9000, и это не считая бесплатных вращений, во время которых выигрыши еще больше.

Слот Бэтмен и женщина-кошка Cash

Игровой автомат Batman And Catwoman Cash - игра, которая знакомит с новыми приключениями одного из самых популярных супергероев. Это слот от компании Playtech, который предлагает интересные функции, такие как бесплатные вращения, специальные многоуровневые иконки и тематические бонусы.

Слот Gem Heat

Gem Heat приготовила увлекательное путешествие в мир классики азартных игр. Устройство с 5 барабанами позволяет собирать комбинации традиционных символов, таких как семерки, драгоценные камни и подковы, на 10 фиксированных линиях. За каждый спин есть шанс получить суммы с коэффициентами до 2500.

Слот Reel King

Reel King - популярный игровой автомат от австрийской корпорации Novomatic. Он предназначен для карточек и позволяет выиграть фиксированный джекпот, который включает сумму с коэффициентами до 10 000 за одно вращение. Выигрыши можно получать гораздо чаще благодаря наличию дикого символа. Если спин принес небольшую сумму, ее можно увеличить в риск-игре.

Дата публикации: 05.27.2021
Рейтинг автора:
3.2/5