Этот пост представляет собой краткое руководство по построению моделей линейной регрессии для прогнозирования зарплат игроков НБА. Моя цель — изучить, как можно использовать различные статистические данные НБА для прогнозирования зарплаты игрока НБА с 1990 по 2020 год, а цели этого проекта — выяснить, какие статистические данные лучше всего предсказывают зарплату игрока НБА, а а также выполнить прогноз зарплаты игрока.

Методология

  1. Источник данных

Набор данных о зарплатах игроков: информация об имени/зарплате игрока взята с веб-сайта Hoops Hype. Полученные характеристики включают имя игрока, год и зарплату.

Набор данных статистики игрока: имя игрока/статистика игрока взято с веб-сайта NBA. Полученные характеристики включают имя игрока, сезон, команду, возраст, GP и т. д.

Оба вышеуказанных набора данных были очищены с помощью Beautifulsoup и Selenium и сохранены в виде файлов .pkl в моей локальной папке.

2. Очистка данных

Очистите мои функции и выполните некоторую предварительную обработку данных перед переходом в EDA.

Имя игрока: измените формат имен игроков, полученных с веб-сайта НБА, т.е. удалите запятую в середине и поменяйте порядок имени и фамилии, чтобы они совпадали с полученными именами. с сайта Hoops Hype.

Зарплата: удалите запятую в этой функции и приведите ее к целочисленному типу.

Сезон: удалите дефис в названии сезона, чтобы оно совпадало с указанием года, полученным на веб-сайте Hoops Hype.

Объедините данные о зарплате и статистике: объедините таблицу зарплаты и таблицу статистики по имени игрока и году.

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

3.ЭДА

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

Мы могли бы посмотреть на парный график наших данных, чтобы увидеть, как выглядит распределение каждой функции, и есть ли у некоторых функций сильный перекос влево/вправо.

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

4. Выбор функций и моделирование

Выбор признаков выполняется с использованием корреляции признаков и значения p после подгонки данных к обычной модели наименьших квадратов в статистических моделях.

После выбора функций окончательная модель имеет 9 функций, включая возраст, BLK, 3PM, BLK, REB, FTP, GP, GS, STL и MIN.

Процесс моделирования включает в себя три различные модели линейной регрессии: OLS, Lasso и LinearRegression соответственно. Все три модели дают мне оценку r-квадрата около 0,64. Тем не менее, Lasso дает мне немного более низкую MSE, поэтому я использую его для дальнейшего анализа.

Результаты

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

Чем выше коэффициент бета, тем важнее функция. Самый сильный предиктор, положительно влияющий на зарплату игроков, — это free_throwp (процент штрафных бросков или FT), второй по силе предиктор — GP (сыгранные игры), а третий — three_pmade (забито 3 очка с игры или 3 часа дня). Модель имеет перехват 13,8, поэтому, когда процент штрафных бросков увеличивается на 1 процент, зарплата увеличится на 1,4 миллиона. Принимая во внимание, что когда сыгранные игры или забитые 3 очка с игры увеличиваются на 1, зарплата увеличивается на 1,3 миллиона.

Мы также можем посмотреть остаточные графики, чтобы увидеть, как работает модель. Ниже приведены графики для y-остатков и y-прогнозирования.

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

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

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

Вывод

Моя модель рекомендует начинающим игрокам НБА сосредоточиться на повышении статистики в таких областях, как процент штрафных бросков, сыгранные игры и заброшенные 3 очка с игры, поскольку они являются наиболее сильными характеристиками, влияющими на размер заработной платы.

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

Для получения дополнительной информации, пожалуйста, не стесняйтесь связаться со мной! Вы также можете просмотреть исходный код и колоду этого проекта на Github.