Macht die Option `weight =` in lmer () das, was ich will?

7

Ich möchte die Leistung von PGA-Golfspielern vorhersagen. Ich frage mich, ob ich neueren Ergebnissen mit der weights=Option in der Funktion lmer () mehr Gewicht gebe.

Ich habe Daten von 2012-2014 so angelegt:

library("lme4")
library("dplyr")

head(rdDat)
Source: local data frame [6 x 5]
Groups: plrF, trnF

  plrF trnF rdF wt rdScr rdPar
1    5  996  R1  1    71    71
2    5  996  R2  1    69    71
3    5  996  R3  1    70    71
4    5  996  R4  1    69    71
5    5  998  R1  3    72    72
6    5  999  R1  4    73    70
  • plrF - Spieler ID
  • trnF - Trounament ID
  • rdF - Turnierrunde (jedes Turnier hat 4 Runden)
  • Gewicht - Gewicht. Grundsätzlich Anzahl der Wochen seit dem 1. Januar 2012.
  • rdScr - beobachtete Punktzahl für einen Golfer
  • rdPar - Par für diese Runde.

Ich möchte lmer () verwenden, um Spielerwerte basierend auf einem zufälligen Spielereffekt und einem festen Par-Effekt zu modellieren. Teilen wir die Daten in einen Trainingssatz und einen Testsatz auf.

oRdDat <- rdDat %>% filter(wt <= 120)
newdat <- rdDat %>% filter(wt > 120)

Passen Sie ein Modell an die beobachteten Daten an:

lmr1 <- lmer(rdScr ~ rdPar + (1 | plrF), data= oRdDat)

Verwenden Sie die Ergebnisse, um die neuen Daten vorherzusagen und den absoluten Fehler unserer Vorhersage zu berechnen:

pred0 <- cbind(newdat, prScr = predict(lmr1, newdat, allow.new.levels = TRUE)) %>% 
  mutate(diff = abs(prScr - rdScr))

und verwenden Sie diese diffVariable, um den mittleren absoluten Fehler unserer Projektion zu überprüfen:

summary(pred0$diff)[4]
 Mean 
2.481  

Ich halte es jedoch für sehr vernünftig anzunehmen, dass neuere Ergebnisse (z. B. Ende 2014) einen größeren Einfluss auf unsere Prognose haben sollten als Ergebnisse ab Anfang 2012. Daher passe ich dazu:

wlmr1 <- lmer(rdScr ~ rdPar + (1 | plrF), weights = wt, data= oRdDat)

Vorhersage wie zuvor und überprüfen Sie die MAE:

summary(pred1$diff)[4]
 Mean 
2.474 

Schrittweise Verbesserung! :-D

Lassen wir die Frage beiseite, wie das optimale Gewichtungsschema aussehen würde und ob sich die hier gezeigte kleine Verbesserung tatsächlich lohnt. Meine Frage ist: weights=wtTut diese Option das, was ich möchte? Bieten Sie beispielsweise neueren Ergebnissen mehr Gewicht, um zukünftige Ergebnisse zu projizieren?

Vielen Dank!

hossibley
quelle

Antworten:

7

Die Log-Wahrscheinlichkeit ist definiert als: wobei die Modellparameter sind, das Gewicht für die Beobachtung , die Antwort für die Beobachtung ist und der Vektor der Kovariaten für die Beobachtung . Ja, ich denke, die Option macht genau das, was Sie wollen - die neueren Beobachtungen haben einen größeren Beitrag zur Log-Wahrscheinlichkeit.

log(L(θ))=i=1nwilog(P(yi|xi,θ))
θwiiyiixiiweights

Ich weiß, dass Sie in Ihrer Frage ausdrücklich nicht um Kommentare gebeten haben, aber Dixon und Coles haben erwogen, solche Gewichte zu verwenden, um die Vorhersageleistung ihres Fußballmodells zu verbessern. Daher ist es möglicherweise einen Blick wert, eine ähnliche Gewichtungsfunktion zu verwenden ( wenn Sie damit noch nicht vertraut sind).

Jeff
quelle