Разве не было бы здорово узнать результат игры еще до того, как в нее сыграли? Безусловно, сделать ставки на спорт намного проще! Вот почему я решил построить прогностическую модель, которая оценила бы разброс очков в любой игре в НБА (Национальной баскетбольной ассоциации). Если вы не знаете, что такое разброс по очкам, это нормально, если вы не имеете ни малейшего представления о баскетболе, это тоже нормально. Попробую объяснить по ходу дела.

Баскетбол 101

Для начала немного основной информации. Баскетбол - это командный вид спорта, в котором 5 игроков из двух разных команд будут пытаться «забросить» мяч среднего размера в корзину соперника. Командам начисляются очки, если им удастся забросить мяч в корзину. Игра длится 4 четверти по 12 минут, и побеждает команда, набравшая наибольшее количество очков по окончании игры. В этом анализе я пытаюсь предсказать разницу в очках между командой A и командой B в конце игры. Это может показаться достаточно простым, но есть несколько приемов (не баскетбольный термин). Например, если игроку удастся забрать мяч в корзину с расстояния не более 23 футов, то команде начисляется 3 очка. Если на игроке фол (незаконно остановлен), он получает шанс на «свободный бросок», который стоит всего 1 очко. Для интереса времени, вот таблица, объясняющая наиболее распространенную терминологию баскетбола и их аббревиатуры:

Во время всех игр НБА обо всех этих «инцидентах» сообщается и публикуется как внутриигровая статистика команд. Эти статистические данные публикуются на разных веб-сайтах, но все данные, используемые для этой модели и анализа, были собраны с ESPN.com.

Сбор данных и реструктуризация

Во-первых, мне пришлось собрать эти результаты из Интернета и преобразовать их в формат данных, с которым я мог бы работать. Использование метода сбора данных, называемого извлечением данных, сделало этот процесс относительно безболезненным. Если вы не знаете, что такое очистка данных, ничего страшного. Думайте об этом как о копировании информации с веб-сайта в файл Excel. Но вместо того, чтобы делать это один раз, мне приходилось делать это более 2000 раз для каждой игры регулярного сезона, сыгранной в период с 2018 по 1 февраля 2020 года. Поскольку на это уйдут недели, я использовал технику сбора данных, которая автоматизирует этот процесс. сокращение времени и усилий на сбор необходимых мне данных.

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

Все еще не совсем понимаете, что происходит? Вот краткое объяснение. Колонка 2 называется «T-FG», что означает «Команда - Филд-гол». Столбец 3 называется «O-FG», что означает «Соперник - Цель поля», а затем идет «Разница - FG», которая представляет собой вычисленную разницу, найденную путем вычитания столбца 3 из столбца 2 (Team-FG - Opponent-FG = Разница-ФГ). Этот расчет выполняется для всех пар статистических данных и будет переменными, используемыми в модели.

Разработка модели

Теперь, когда у нас есть разница между игровой статистикой двух команд, мы можем приступить к разработке модели. Модель обучена на 1346 случайно выбранных играх регулярного сезона в сезоне 2018–2019 и 2019–2020 годов и протестирована на 845 «других» играх. Это означает, что если для построения модели используется игра, она не будет использоваться для проверки точности модели, это было бы мошенничеством! Я использовал пошаговую методику отбора с уровнем значимости 0,15. Модель точечного разброса была разработана с использованием линейной регрессии, обычной модели наименьших квадратов. Однако для этой модели срок перехвата будет равен нулю, поскольку не имеет значения, какая команда выбрана в качестве команды и соперника. Я знаю, что это может показаться сложным, поэтому не думайте об этом слишком много, на самом деле это не имеет значения. Все, что вам нужно знать, это то, что если вся внутриигровая статистика одинакова, разброс очков равен нулю, что вполне логично!

Разброс точек = 0 + β₁x₁ + β₂x₂ + β3x3 +… + βnxn + ε

Используя пошаговый отбор, чтобы определить, какие переменные были значимыми, у меня осталось 9 переменных из исходного списка 21. Все значимые переменные для прогнозирования разброса очков в любом баскетбольном матче НБА. Девять переменных также показаны в таблице ниже с коэффициентами для каждой переменной и их соответствующими p-значениями.

% разницы-поля,% разницы-три очка,% бросков без разницы, разность-подборов, разница-наступательные подборы, разница-голевые передачи, разница-общая текучесть, попытки разницы-FT, Разница-3P попытки

Модель имеет значение R-квадрат 0,9645 и скорректированный R-квадрат 0,9643, что означает, что модель объясняет около 96% вариации разброса точек. Что действительно хорошо! Теперь, когда у нас есть все оценки параметров, мы можем построить обычную модель наименьших квадратов для оценки разброса очков, тем самым предсказывая, какая команда выиграет игру.

Разброс очков = 0 + 1,454 (% разницы в полях) + 0,275 (% разницы в трех очках) + 0.200 (% бросков без разницы) + 0,286 (подборы в разнице) + 0,478 (подборы в разнице в атаке) + 0,068 (разница -Помощи) + (-0,999) (Разница-Суммарные обороты) + 0,265 (Попытки Различия-FT) + 0,352 (Попытки Различия-3P)

Результат

Вот и все! Модель на миллион долларов для прогнозирования разброса очков в любой игре НБА. Если вы не гений математики или вам нужна дополнительная помощь в интерпретации этих коэффициентов, продолжайте читать, и я постараюсь объяснить. Если у Команды процент забитых мячей на 1% выше, чем у соперника, по оценке модели, команда наберет на 1,454 очка больше. Также обратите внимание, потому что «Difference-FG» имеет самый большой коэффициент. Разница в этой переменной имеет наибольшее влияние на прогноз разброса точки. Имеет смысл, правда? Чем выше процент попаданий (из 2-х очковой), тем больше очков будет у команды в конце игры. Еще одна переменная, на которую следует обратить внимание, - это разница в общем обороте. Как вы можете видеть, коэффициент отрицательный, что означает, что если у Команды на один оборот больше, чем у Оппонента, модель предсказывает, что Команда наберет на 0,999 очков меньше, чем Оппонент. Если это будет немного сложно, не волнуйтесь. Большинство коэффициентов положительные, поэтому команда с наибольшим значением переменной наберет больше очков, чем другая команда.

Давайте посмотрим на пример, чтобы увидеть, насколько хороша модель в прогнозировании. Игра, в которой мы попытаемся предсказать разброс очков, будет проходить 1 февраля 2020 года между Minnesota Timberwolves и Los Angeles Clippers.

Разброс точек = 0 + 1,454 (-5,4) + 0,275 (-17,4) + 0,200 (-5,1) + 0,286 (-1) + 0,478 (-6) + 0,068 (4) + (-0,999) (4) + 0,265 ( 19) + 0,352 (5) = -13,7

Модель предсказывает отрицательный разброс очков, что означает, что противник выиграет игру с 13,7 очками. К настоящему моменту мы знаем результат игры, и с довольно неплохим отрывом «Лос-Анджелес Клипер» выиграл с разницей в 12 очков. Хотя модель не совсем предсказывала точный разброс очков, она правильно предсказывала, что противник выиграет игру. Неплохо!

Чтобы убедиться, что это не просто удача, мы посмотрим на еще одну игру между Golden State Warriors и Cleveland Cavaliers. В прошлом сезоне «Голден Стэйт Уорриорз» были явным фаворитом, но с двумя травмами в стартовом составе они не так хороши в этом году. Давайте посмотрим, в какую игру они сыграли 1 февраля 2020 года.

Разброс точек = 0 + 1,454 (10,1) + 0,275 (15) + 0.200 (-10,5) + 0,286 (-6) + 0,478 (-3) + 0,068 (13) + (-0,999) (- 5) + 0,265 (5 ) + 0,352 (-9) = 17,6

Прогнозируемый разброс очков положительный, что означает, что команда, в данном случае, по прогнозам, выиграет игру. Фактический результат игры - 131–112! Удивительно, но модель предсказала правильную команду-победительницу и не сразу предсказала разброс очков.

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

Посмотрите мое портфолио, чтобы узнать больше: https://github.com/markus-proesch