我想预测 PGA 高尔夫球手的表现。我想知道我是否通过使用weights=
lmer() 函数中的选项正确地赋予了最近的结果更多的权重。
我有 2012-2014 年的数据,如下所示:
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 - 玩家 ID
- trnF - 锦标赛 ID
- rdF - 一轮比赛(每场比赛有 4 轮)
- 重量 - 重量。基本上是自 2012 年 1 月 1 日以来的周数。
- rdScr - 观察到的高尔夫球手得分
- rdPar - 该轮的标准杆。
我想使用 lmer() 根据随机玩家效果和固定标准杆效果来模拟玩家得分。让我们将数据拆分为训练集和测试集。
oRdDat <- rdDat %>% filter(wt <= 120)
newdat <- rdDat %>% filter(wt > 120)
在观察到的数据上拟合模型:
lmr1 <- lmer(rdScr ~ rdPar + (1 | plrF), data= oRdDat)
使用结果来预测新数据,并计算我们预测的绝对误差:
pred0 <- cbind(newdat, prScr = predict(lmr1, newdat, allow.new.levels = TRUE)) %>%
mutate(diff = abs(prScr - rdScr))
并使用该diff
变量来检查我们投影的平均绝对误差:
summary(pred0$diff)[4]
Mean
2.481
但是,我认为假设最近的结果(例如 2014 年末)应该比 2012 年初的结果对我们的预测产生更大的影响是非常合理的。所以我符合这个:
wlmr1 <- lmer(rdScr ~ rdPar + (1 | plrF), weights = wt, data= oRdDat)
像以前一样预测并检查 MAE:
summary(pred1$diff)[4]
Mean
2.474
渐进式改善!:-D
让我们抛开最佳加权方案是什么以及这里看到的小改进是否真的“值得”的问题。我的问题是:该weights=wt
选项是否符合我的要求?例如,在预测未来分数方面为最近的结果提供更多的权重?
谢谢!