Логистическая регрессия и структура набора данных

17

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

Я рассчитываю рассчитать вероятность выигрыша в игре в НХЛ, учитывая количество очков и оставшееся время в регламенте. Я полагаю, что мог бы использовать логистическую регрессию, но я не уверен, как должен выглядеть набор данных. Буду ли я иметь несколько наблюдений за игру и за каждый интересующий меня отрезок времени? Буду ли я иметь одно наблюдение за игру и подгонять отдельные модели за отрезок времени? Логистическая регрессия - даже правильный путь?

Буду очень признателен за любую помощь, которую вы можете оказать!

С наилучшими пожеланиями.

Btibert3
источник
Сложный вопрос! Я предполагаю, что это помогло бы узнать больше, чем я, о подсчете процессов (и больше, чем в Википедии: en.wikipedia.org/wiki/Counting_process )
2011 г., 9
У вас есть доступ к журналу ASA Chance? Мне кажется, в прошлом году или около того появилась соответствующая статья о хоккее или о другом виде спорта.
rolando2
Я пытаюсь переформулировать проблему (чтобы стимулировать обсуждение?): Скажем, у нас есть набор дискретных состояний в игре (например, в крестики-нолики). Теперь разумно создать одну модель для каждого состояния (возможно, с использованием логистической регрессии), чтобы предсказать результат. Теперь ЗДЕСЬ у нас тоже есть игра, но с непрерывными состояниями (т.е. игровое время). Теперь возникает вопрос о том, как: а) разделить время на конечное множество состояний или б) как построить модель, параметры которой варьируются в зависимости (!) От текущего игрового времени. Должен быть кто-то, кто уже решил эту «общую» проблему.
Штеффен

Ответы:

9

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

Не только предположить , линейность для этого подходят плавно изменяющуюся модель коэффициента для эффекта «целей (хозяев поля) - цели (расстояние команды)», например , в R можно использовать mgcv«s gamфункцию с модельной формулой типа win_home ~ s(time_remaining, by=lead_home). Сделать lead_homeфактор, так что вы получите различный эффект time_remainingдля каждого значения lead_home.

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

фабианцы
источник
Большой! Спасибо за помощь. Я собирался использовать R и собирался настроить данные, аналогичные тем, которые вы предлагали, эффекты взаимодействия и все такое. Рад видеть, что я был на правильном пути, и я действительно ценю ваше время.
Btibert3
1
Будьте осторожны с независимостью, генерируемой включением нескольких временных интервалов. Модель случайных эффектов (многоуровневая) может помочь.
Эдуардо Леони
1
@ Эдуардо: Я согласен, что зависимость не моделируется и что это несколько проблематично, спасибо за указание на это. Я не уверен, как могли бы помочь случайные эффекты - поскольку двоичный результат win_homeявляется постоянным на уровне группировки (то есть для всех временных интервалов для любого данного совпадения это либо 0, либо 1), включая, например, случайный перехват для совпадений просто приведет к огромным проблемам с разделением в этом контексте.
Фабианцы
Возможно, вы также захотите включить параметр для общего количества забитых голов, так как в играх с высокими показателями лидирует чаще всего.
Джеймс
6

Я бы начал моделировать данные из игрушечной модели. Что-то вроде:

n.games <- 1000
n.slices <- 90

score.away <- score.home <- matrix(0, ncol=n.slices, nrow=n.games)

for (j in 2:n.slices) {
  score.home[ ,j] <- score.home[ , j-1] + (runif(n.games)>.97)
  score.away[ ,j] <- score.away[ , j-1] + (runif(n.games)>.98)
}

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

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

score.dif <- score.home-score.away

windf <- data.frame(game=1:n.games, win=score.home[ , n.slices] > score.away[, n.slices])

library(reshape)
library(ggplot2)

dnow <- melt(score.dif)
names(dnow) <- c('game', 'time', 'dif')
dnow <- merge(dnow, windf)

res <- ddply(dnow, c('time', 'dif'), function(x) c(pwin=sum(x$win)/nrow(x)))

qplot(time, dif, fill=pwin, data=res, geom='tile') + scale_color_gradient2() 

Это поможет вам найти поддержку ваших данных и даст вам общее представление о том, как выглядят вероятности.

участок

Эдуардо Леони
источник
1

Посмотрите статистику ботаников на Football Outsiders, а также книгу Mathletics для вдохновения.

Ребята из Football Outsiders делают прогнозы на основе каждой игры в футбольном матче.

Уинстон в математике также использует некоторые методы, такие как динамическое программирование.

Вы также можете рассмотреть другие алгоритмы, такие как SVM.

Нил Макгиган
источник