测量本垒打中均值的回归

机器算法验证 r 回归 造型
2022-03-03 08:11:53

任何关注棒球的人都可能听说过多伦多的何塞·包蒂斯塔的 MVP 式表现。在之前的四年里,他每个赛季大约打出 15 个本垒打。去年他打出了 54 分,在棒球历史上只有 12 名球员超过了这个数字。

2010 年他拿到了 240 万,他要求球队在 2011 年拿到 1050 万。他们出价 760 万。如果他能在 2011 年重复这一点,那么他很容易就值这两个数字。但他重蹈覆辙的几率有多大?我们能指望他回归到平均水平有多难?我们可以期待他的表现有多少是偶然的?我们可以期待他回归到均值调整后的 2010 年总数是多少?我该如何解决?

我一直在使用 Lahman 棒球数据库并挤出一个查询,该查询返回前五个赛季中每个赛季至少有 50 次击球次数的所有球员的本垒打总数。

表格看起来像这样(注意第 10 行的 Jose Bautista)

     first     last hr_2006 hr_2007 hr_2008 hr_2009 hr_2010
1    Bobby    Abreu      15      16      20      15      20
2   Garret Anderson      17      16      15      13       2
3  Bronson   Arroyo       2       1       1       0       1
4  Garrett   Atkins      29      25      21       9       1
5     Brad   Ausmus       2       3       3       1       0
6     Jeff    Baker       5       4      12       4       4
7      Rod  Barajas      11       4      11      19      17
8     Josh     Bard       9       5       1       6       3
9    Jason Bartlett       2       5       1      14       4
10    Jose Bautista      16      15      15      13      54

完整结果(232 行)可在此处获得。

我真的不知道从哪里开始。谁能指出我正确的方向?一些相关的理论和 R 命令会特别有用。

谢谢

汤米

注意:这个例子有点做作。本垒打绝对不是球员价值的最佳指标,并且本垒打总数不考虑每个赛季击球手有机会击出本垒打的机会的不同数量(板出场)。它也没有反映出一些球员在更有利的体育场打球,以及联盟平均本垒打逐年变化。等等。如果我能掌握解释均值回归背后的理论,我可以将其用于比 HR 更合适的度量。

4个回答

我认为肯定有贝叶斯收缩或先前的修正可以帮助预测,但你可能还想考虑另一种策略......

查找历史上的球员,而不仅仅是过去几年,他们在大满贯赛中经历了几个突破赛季(可能大幅增加了 2 倍),看看他们在接下来的一年里表现如何。有可能保持性能的概率是正确的预测器。

有多种方法可以解决这个问题,但正如 mpiktas 所说,您将需要更多数据。如果你只想处理最近的数据,那么你将不得不查看整个联盟的统计数据,他所面对的投手,这是一个复杂的问题。

然后只是考虑包蒂斯塔自己的数据。是的,那是他最好的一年,但这也是自 2007 年以来他第一次拥有超过 350 个 AB(569)。您可能需要考虑转换性能增加的百分比。

可以仅将模型拟合到这些数据,并通过使用混合(多级)模型获得对均值回归进行解释的预测。来自这些模型的预测解释了对均值的回归。即使对棒球几乎一无所知,我也没有发现我得到的结果非常可信,因为正如你所说,该模型确实需要考虑其他因素,例如板的外观。

我认为泊松混合效应模型比线性混合模型更合适,因为本垒打的数量是一个计数。查看您提供的数据,直方图hr显示它非常偏斜,这表明线性混合模型不能很好地工作,并且包含相当多的零,无论是否先对数转换 hr。

这是使用lme4包中的lmer函数的一些代码。创建了一个 ID 变量来识别每个玩家并将数据重新调整为“长”格式,如 mpiktas 在他的回答中指出的那样,(我在 Stata 中这样做了,因为我不擅长 R 中的数据管理,但你可以在电子表格包):

Year.c <- Year - 2008   # centering y eases computation and interpretation
(M1 <- lmer(HR ~ Year.c + (Year.c|ID), data=baseball.long, family=poisson(log), nAGQ=5))

这适合带有日志链接的模型,该模型给出了命中率对年份的指数依赖性,允许在玩家之间变化。其他链接功能是可能的,尽管身份链接由于负拟合值而出错。sqrt 链接工作正常,并且 BIC 和 AIC 比具有日志链接的模型低,因此它可能更适合。2011 年命中率的预测对所选择的链接函数很敏感,特别是对于像包蒂斯塔这样的球员,他们的命中率最近发生了很大变化。

恐怕我还没有设法真正摆脱这样的预测lme4我更熟悉 Stata,这使得很容易获得结果缺失值的观察结果的预测,尽管xtmelogit似乎没有提供除 log 之外的任何链接函数选择,它给出了 Bautista 的 50 的预测2011 年的本垒打。正如我所说,我觉得这不太可信。我很感激有人可以展示如何从上述lmer模型生成 2011 年的预测。

诸如 AR(1) 之类的玩家级错误自回归模型也可能很有趣,但我不知道如何将这种结构与泊松混合模型结合起来。

在您拥有本垒打数据的时间跨度内,您需要有关球员及其特征的更多数据。第一步添加一些随时间变化的特征,例如玩家年龄或经验。然后您可以使用 HLM 或面板数据模型。您需要准备以下表格中的数据:

    First Last  Year HR Experience Age
1.  Bobby Abreu 2005 15     6      26

最简单的模型将是(函数lme来自包nlme

lme(HR~Experience,random=~Experience|Year,data=your_data)

该模型将严重依赖于假设每个球员的本垒打数仅依赖于允许一些可变性的经验。它可能不会很准确,但你至少会感觉到 Jose Bautista 的数据与普通球员相比是多么的不可能。该模型可以通过添加其他玩家的特征来进一步改进。

您可能想查看The Book Blog。

Tom Tango 和“The Book: Playing the Percentages in Baseball”的其他作者可能是最好的 sabermetrics 来源。特别是,他们喜欢回归均值。他们提出了一个预测系统,旨在成为最基本的可接受系统(Marcel),它几乎完全依赖于均值回归。

在我的脑海中,我想一种方法是使用这样的预测来估计真正的人才,然后围绕这个平均人才找到一个合适的分布。一旦你有了它,每个板块的外观都会像伯努利试验一样,所以二项分布可以带你走完剩下的路。