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

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

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 мая (за несколько часов до начала этих матчей).

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

Династия Мин

Игровой автомат Dynasty of Ming приглашает вас узнать больше об истории Китая. Играя в слот, вы получите не только новые знания, но и щедрые выигрыши. Одно вращение может принести вам до 9000 кредитов. У игроков есть не менее 15 бесплатных вращений, во время которых все выигрыши утраиваются. Выплаты за обычный спин можно увеличить вдвое во время риск-игры.

Золотые игры

Слот Golden Games предназначен для спортсменов и любителей спорта. Приглашает принять участие в азартном аналоге Олимпийских игр. В состав слота входят пять барабанов с 25 настраиваемыми линиями выплат. Каждый раунд в основном режиме игры может принести вам достаточные выплаты с коэффициентами до 10000. В слоте Golden Games игроки могут рассчитывать на дикий символ и скаттер, чтобы сделать свои выплаты еще более щедрыми и частыми. Бонусный раунд предоставит вам доступ к бесплатным спинам, и если вы обнаружите, что ваша последняя выплата несколько разочаровывает, вы всегда можете исправить это, сыграв в риск-игру.

Баккара от Playtech

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

Аттила Мобайл

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

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