EDIT: Seit diesem Beitrag machen, ich habe mit einem zusätzlichen Beitrag verfolgt hier .
Zusammenfassung des folgenden Textes: Ich arbeite an einem Modell und habe lineare Regression, Box Cox-Transformationen und GAM ausprobiert, aber keine großen Fortschritte erzielt
Mit R
arbeite ich derzeit an einem Modell, um den Erfolg von Baseballspielern der Minor League auf der Ebene der Major League (MLB) vorherzusagen. Die abhängige Variable "Offensivkarriere gewinnt über Ersatz" (oWAR) ist ein Proxy für den Erfolg auf MLB-Ebene und wird als Summe der Offensivbeiträge für jedes Spiel gemessen, an dem der Spieler im Laufe seiner Karriere beteiligt ist (Details hier - http : //www.fangraphs.com/library/misc/war/). Die unabhängigen Variablen sind Z-Score-Offensivvariablen für kleinere Ligen für Statistiken, die als wichtige Prädiktoren für den Erfolg auf der Ebene der Hauptliga gelten, einschließlich des Alters (Spieler mit mehr Erfolg in einem jüngeren Alter sind tendenziell bessere Aussichten), Streikrate [SOPct ], Gehrate [BBrate] und angepasste Produktion (ein globales Maß für offensive Produktion). Da es mehrere Ebenen der kleinen Ligen gibt, habe ich außerdem Dummy-Variablen für die Ebene der kleinen Ligen aufgenommen (Double A, High A, Low A, Rookie und Short Season mit Triple A [die höchste Ebene vor den großen Ligen]). als Referenzvariable]). Hinweis: Ich habe WAR neu skaliert, um eine Variable zu sein, die von 0 auf 1 geht.
Das variable Streudiagramm ist wie folgt:
Als Referenz hat die abhängige Variable oWAR das folgende Diagramm:
Ich begann mit einer linearen Regression oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeason
und erhielt die folgenden Diagnosediagramme:
Es gibt klare Probleme mit einem Mangel an Unparteilichkeit der Residuen und einem Mangel an zufälliger Variation. Außerdem sind die Residuen nicht normal. Die Ergebnisse der Regression sind nachstehend aufgeführt:
Nach den Ratschlägen in einem früheren Thread habe ich eine Box-Cox-Transformation ohne Erfolg versucht. Als nächstes habe ich ein GAM mit einem Protokolllink ausprobiert und diese Diagramme erhalten:
Original
Neues Diagnosediagramm
Es sieht so aus, als hätten die Splines dazu beigetragen, die Daten anzupassen, aber die Diagnosediagramme zeigen immer noch eine schlechte Anpassung. EDIT: Ich dachte, ich würde die Residuen gegen angepasste Werte ursprünglich betrachten, aber ich war falsch. Das ursprünglich gezeigte Diagramm ist als Original (oben) markiert, und das Diagramm, das ich anschließend hochgeladen habe, ist als neues Diagnosediagramm (ebenfalls oben) markiert.
Der des Modells hat zugenommen
Aber die Ergebnisse des Befehls gam.check(myregression, k.rep = 1000)
sind nicht so vielversprechend.
Kann jemand einen nächsten Schritt für dieses Modell vorschlagen? Gerne stelle ich Ihnen weitere Informationen zur Verfügung, die Ihrer Meinung nach hilfreich sein könnten, um die bisherigen Fortschritte zu verstehen. Vielen Dank für jede Hilfe, die Sie leisten können.
Antworten:
Sehr gute Arbeit. Ich denke, diese Situation ist ein Kandidat für das semiparametrische ordinale logistische Modell mit proportionalen Gewinnchancen. DieY. Y. β Y Y
lrm
Funktion im R-rms
Paket passt zum Modell. Im Moment möchten Sie vielleicht runden , um nur 100-200 Level zu haben. In Kürze wird eine neue Version von mit einer neuen Funktion veröffentlicht , die Tausende von Abschnitten im Modell effizient ermöglicht, dh vollständig ununterbrochen ermöglicht [Update: dies erschien 2014]. Das Proportional-Odds-Modell s ist unveränderlich für die Transformation vonDas heißt, Quantile sind auch invariant. Wenn Sie einen vorhergesagten Mittelwert wünschen, wird angenommen, dass auf der richtigen Intervallskala liegt.Y β Y Y.rms
orm
quelle
require(Hmisc); cut2(y, g=100, levels.mean=TRUE)
rms
dass bald eine neue Version von veröffentlicht wird, haben Sie eine Idee, wann dies sein könnte?Ich denke, dass die Überarbeitung der abhängigen Variablen und des Modells hier fruchtbar sein kann. Wenn Sie sich Ihre Residuen aus dem
lm()
ansehen, scheint es, dass das Hauptproblem bei den Spielern mit einem hohen Karriere-WAR liegt (den Sie als Summe aller WAR definiert haben). Beachten Sie, dass Ihr höchster vorhergesagter (skalierter) WAR 0,15 von maximal 1 ist! Ich denke, es gibt zwei Dinge bei dieser abhängigen Variablen, die dieses Problem verschärfen:Im Zusammenhang mit der Vorhersage ist es jedoch kontraproduktiv, die Zeit explizit als Kontrolle zu spielen (in irgendeiner Weise, ob als Gewicht oder als Nenner bei der Berechnung des durchschnittlichen Karriere-WAR) (auch ich vermute, dass ihre Wirkung auch nicht linear wäre). Daher schlage ich vor, die Modellierungszeit in einem gemischten Modell mit
lme4
oder etwas weniger explizit zu verwendennlme
.Ihre abhängige Variable wäre saisonale WAR, und Sie hätten eine andere Anzahl von Jahreszeiten pro Spieler . Das Modell hätte einen Spieler als zufälligen Effekt und wäre wie folgt: ij=mi i
Mit
lme4
würde das ungefähr so aussehenlmer(sWAR ~ <other stuff> + (1|Player), data=mydata)
Möglicherweise müssen Sie noch auf transformieren , aber ich denke, dies wird in dieser Rückkopplungsschleife hilfreich sein.sWAR
quelle