Logistische Regression und Datensatzstruktur

17

Ich hoffe, dass ich diese Frage richtig stellen kann. Ich habe Zugriff auf Play-by-Play-Daten, daher ist es eher ein Problem mit der besten Vorgehensweise und der korrekten Erstellung der Daten.

Was ich tun möchte, ist zu berechnen, wie wahrscheinlich es ist, ein NHL-Spiel zu gewinnen, wenn das Ergebnis und die verbleibende Zeit in der Regulierung berücksichtigt werden. Ich glaube, ich könnte eine logistische Regression verwenden, bin mir aber nicht sicher, wie der Datensatz aussehen soll. Hätte ich mehrere Beobachtungen pro Spiel und für jeden Zeitraum, an dem ich interessiert bin? Hätte ich eine Beobachtung pro Spiel und würde ich pro Zeitscheibe verschiedene Modelle einsetzen? Ist logistische Regression überhaupt der richtige Weg?

Jede mögliche Hilfe, die Sie zur Verfügung stellen können, wird sehr geschätzt!

Freundliche Grüße.

Btibert3
quelle
Schwierige Frage! Meine Vermutung ist , dass es helfen würde , mehr zu wissen , als ich über Zählprozesse tun (und mehr als Wikipedia tut: en.wikipedia.org/wiki/Counting_process )
onestop
Haben Sie Zugriff auf das ASA-Journal Chance? Mir scheint, im letzten Jahr ist ein relevanter Artikel erschienen, egal ob über Hockey oder eine andere Sportart.
Rolando2
Ich versuche, das Problem neu zu formulieren (um die Diskussion anzuregen?): Nehmen wir an, wir haben eine Reihe von diskreten Zuständen in einem Spiel (z. B. in Tic-Tac-Toe). Jetzt ist es sinnvoll, ein Modell pro Status zu erstellen (möglicherweise mithilfe der logistischen Regression), um das Ergebnis vorherzusagen. Jetzt HIER haben wir auch ein Spiel, aber mit kontinuierlichen Zuständen (dh Spielzeit). Die Frage des OP ist nun: Wie a) diskretisiert man die Zeit in endliche Mengenzustände oder b) wie baut man ein Modell, dessen Parameter je nach (!) Aktueller Spielzeit variieren. Es muss jemanden geben, der dieses "allgemeine" Problem bereits gelöst hat.
Steffen

Antworten:

9

Führen Sie eine logistische Regression mit den Kovariaten "Spielzeit" und "Tore (Heimmannschaft) - Tore (Auswärtsteam)" durch. Sie benötigen einen Interaktionseffekt dieser Begriffe, da ein Vorsprung von 2 Toren zur Halbzeit einen viel geringeren Effekt hat als ein Vorsprung von 2 Toren, wenn nur noch 1 Minute verbleibt. Ihre Antwort ist "Sieg (Heimmannschaft)".

Nicht nur Linearität für diese übernehmen, passt eine gleichmäßig variierende Koeffizienten Modell für die Wirkung von „Ziele (Heimmannschaft) - Ziele (Mannschaft)“, zB in R Sie nutzen könnten mgcv‚s gamwie Funktion mit einer Modellformel win_home ~ s(time_remaining, by=lead_home). Machen Sie lead_homeeinen Faktor, so dass Sie time_remainingfür jeden Wert von einen anderen Effekt von bekommen lead_home.

Ich würde mehrere Beobachtungen pro Spiel erstellen, eine für jeden Zeitraum, an dem Sie interessiert sind.

Fabians
quelle
Groß! Danke für die Hilfe. Ich wollte R verwenden und die Daten so einrichten, wie Sie es vorgeschlagen haben, Interaktionseffekte und so weiter. Ich bin froh zu sehen, dass ich auf dem richtigen Weg war und ich weiß Ihre Zeit wirklich zu schätzen.
Btibert3
1
Seien Sie vorsichtig mit der Nichtunabhängigkeit, die durch die Einbeziehung mehrerer Zeitscheiben entsteht. Ein Modell mit zufälligen Effekten (auf mehreren Ebenen) könnte Abhilfe schaffen.
Eduardo Leoni
1
@ Eduardo: Ich stimme zu, dass die Abhängigkeit nicht modelliert ist und dass dies etwas problematisch ist, danke für den Hinweis. Ich bin mir nicht sicher, wie zufällige Effekte helfen würden - da das binäre Ergebnis win_homeauf der Ebene der Gruppierung konstant ist (dh für alle Zeitscheiben für eine bestimmte Übereinstimmung ist es entweder 0 oder 1), einschließlich z. B. eines zufälligen Abschnitts für die Übereinstimmungen wird in diesem Zusammenhang nur zu großen Problemen mit der Trennung führen.
Fabians
Möglicherweise möchten Sie auch einen Parameter für die Gesamtzahl der erzielten Tore berücksichtigen, da Leads in Spielen mit hoher Punktzahl in der Regel leichter vergeben werden.
James
6

Ich würde anfangen, die Daten von einem Spielzeugmodell zu simulieren. Etwas wie:

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)
}

Jetzt haben wir etwas zu spielen. Sie könnten auch die Rohdaten verwenden, aber ich finde es sehr hilfreich, die Daten zu simulieren, um die Dinge durchzudenken.

Als nächstes plotte ich nur die Daten, dh die Plotzeit des Spiels im Vergleich zum Blei nach Hause, wobei die Farbskala der beobachteten Gewinnwahrscheinlichkeit entspricht.

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() 

Dies hilft Ihnen, die Unterstützung Ihrer Daten zu finden und gibt Ihnen eine ungefähre Vorstellung davon, wie die Wahrscheinlichkeiten aussehen.

Handlung

Eduardo Leoni
quelle
1

Schauen Sie sich die Statistiken Nerds bei Football Outsiders sowie das Buch Mathletics für einige Inspiration.

Die Jungs von Football Outsiders machen Spielvorhersagen basierend auf jedem Spiel in einem Fußballspiel.

Winston in Mathletics verwendet auch einige Techniken wie die dynamische Programmierung.

Sie können auch andere Algorithmen wie SVM berücksichtigen.

Neil McGuigan
quelle