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

9

РЕДАКТИРОВАТЬ: С момента создания этого поста, я добавил еще один пост здесь .

Краткое содержание текста ниже: я работаю над моделью и пробовал линейную регрессию, преобразования Бокса-Кокса и GAM, но не добился большого прогресса

Используя R, я в настоящее время работаю над моделью, чтобы предсказать успех игроков бейсбола низшей лиги на уровне высшей лиги (MLB). Зависимая переменная, наступательная карьера выигрывает выше замены (oWAR), является показателем успеха на уровне MLB и измеряется как сумма наступательных вкладов за каждую игру, в которой игрок участвует в течение своей карьеры (подробности здесь - http : //www.fangraphs.com/library/misc/war/). Независимые переменные - это оскорбительные переменные низшей лиги с z-баллом для статистики, которая считается важным предиктором успеха на уровне высшей лиги, включая возраст (игроки с большим успехом в более молодом возрасте, как правило, имеют лучшие перспективы), коэффициент забастовки [SOPct ], скорость ходьбы [BBrate] и скорректированное производство (глобальная мера наступательного производства). Кроме того, поскольку существует несколько уровней младшей лиги, я включил фиктивные переменные для уровня игры в малой лиге (Double A, High A, Low A, Rookie и Short Season с Triple A [самый высокий уровень до высшей лиги] в качестве ссылочной переменной]). Примечание: я изменил масштаб WAR, чтобы он стал переменной с 0 до 1.

Переменная scatterplot выглядит следующим образом:

рассеивания

Для справки, зависимая переменная oWAR имеет следующий график:

dependentvariableplot

Я начал с линейной регрессии oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeasonи получил следующие диагностические данные:

linearRegressionDiagnostics

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

linearRegressionResults

Следуя советам в предыдущей теме , я безуспешно пытался преобразовать Бокс-Кокса. Затем я попробовал GAM со ссылкой на журнал и получил эти графики:

шлицы

оригинал diagnosticChecksGAM

Новый Диагностический Участок GAMDiag

Похоже, сплайны помогли вписаться в данные, но диагностические графики все еще показывают плохое соответствие. РЕДАКТИРОВАТЬ: Я думал, что я смотрел на остатки против установленных значений первоначально, но я был не прав. Первоначально показанный график помечен как Оригинальный (выше), а загруженный впоследствии график помечен как Новый Диагностический график (также выше).

GAMResults

R2

но результаты, полученные командой gam.check(myregression, k.rep = 1000), не столь многообещающие.

GAMResults2

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

zgall1
источник
2
Я нашел код в этом отличном учебнике по GAM в R - www3.nd.edu/~mclark19/learn/GAMS.pdf Код: library (car) scatterplotMatrix (mydata [, c (1,1: 8)], pch = 19, cex = .5, reg.line = F, lwd.smooth = 1,25, спред = F, эллипс = T, col = c ('gray60', '# 2957FF', '# FF8000'), col.axis = 'gray50')
zgall1
1
Можете ли вы поделиться своим набором данных? Кроме того, +1 для этой матрицы рассеяния. Это отлично.
Зак
1
Это очень плохо, похоже на интересный набор данных. Мое предложение было бы попробовать некоторые другие алгоритмы машинного обучения, например, случайный лес.
Зак
2
Случайные леса основаны на деревьях решений. Проверьте пакет randomForest в R и страницу Википедии о случайных лесах: en.wikipedia.org/wiki/Random_forest
Зак
2
«Зависимая переменная ... измеряется как сумма наступательных вкладов за каждую игру, в которую вовлечен игрок в течение своей карьеры». Это выскакивает для меня. Серьезным препятствием здесь является то, как долго игрок играет, так как [a] более длительное время игры означает больше времени для «сбора» более хороших игроков, вероятно, будут играть в течение более длительных периодов времени.
Affine

Ответы:

6

lrmrmsYrmsormYβYY

Фрэнк Харрелл
источник
1
Под уровнями вы подразумеваете объединение переменной Y в 100-200 сегментов? Если да, есть ли какой-либо предпочтительный метод выбора размера корзины? Должны ли они быть одинакового размера?
zgall1
1
Просто делайте биннинг временно, если у нас нет постоянного решения. Вы можете сгруппировать в 100 процентилей, напримерrequire(Hmisc); cut2(y, g=100, levels.mean=TRUE)
Фрэнк Харрелл
Когда вы говорите, что rmsскоро будет выпущена новая версия , у вас есть идеи, когда это может произойти?
zgall1
Если вы используете Linux, я могу дать вам его сейчас, в противном случае ожидайте 2 недели.
Фрэнк Харрелл
Я не пользуюсь Linux, так что, думаю, мне придется подождать. Пожалуйста, дайте мне знать, когда он будет доступен.
zgall1
1

Я думаю, что переработка зависимой переменной и модели может быть здесь полезна. Глядя на ваши остатки от lm(), кажется, что основная проблема связана с игроками с высокой карьерной WAR (которую вы определили как сумму всех WAR). Обратите внимание, что ваша самая прогнозируемая (масштабированная) WAR составляет 0,15 от максимум 1! Я думаю, что есть две вещи с этой зависимой переменной, которая усугубляет эту проблему:

  • Игроки, которые просто играют дольше, имеют больше времени для сбора WAR
  • Хороших игроков, как правило, будут держать дольше, и, таким образом, у них будет больше времени для сбора WAR.

Однако в контексте прогнозирования, в том числе время, играемое явно как элемент управления (каким-либо образом, будь то вес или знаменатель при расчете средней WAR за карьеру), контрпродуктивно (также я подозреваю, что его эффект также будет нелинейным). Таким образом, я предлагаю моделирование времени несколько менее явно в смешанной модели с использованием lme4или nlme.

j=mii

sWARij=α+σi2+<other stuff>+εij

С lme4, это будет выглядеть примерно так
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

sWAR

аффинных
источник
Я не уверен, что полностью понимаю. Если зависимой переменной является сезонная WAR, каковы независимые переменные? Идентичную линию статистики низшей лиги для каждого игрока? По сути, мы говорим о том, что строчка А в низшей лиге может привести к высшей лиге ВАР B, C, D и E?
zgall1
Кроме того, после публикации этой модели я добавил
zgall1