我一直在研究棒球模型,以使用小联盟统计数据预测大联盟级别的成功。在此站点(1、2、3)上发布多个线程并收到有价值的反馈后,我决定采用零膨胀负二项式模型作为最适合我的数据的模型。
对于那些不想回到旧线程的人,我将在这里回顾一些故事。此外,对于那些阅读过旧线程的人来说,关于我使用的变量的一些细节已经改变。
在我的模型中,因变量,进攻生涯胜过替补(oWAR),代表了美国职业棒球大联盟级别的成功,并被衡量为球员在其职业生涯中参与的每场比赛的进攻贡献的总和(详情在这里 - http://www.fangraphs.com/library/misc/war/)。自变量是用于统计数据的 z 得分小联盟进攻变量,这些统计数据被认为是大联盟级别成功的重要预测指标,包括年龄(在年轻时取得更多成功的球员往往有更好的前景),三振出局率 [SOPct ]、步行率 [BBPct] 和调整后的产量(衡量进攻性产量的全球指标)。此外,由于位置是一个球员能否进入大联盟的重要决定因素(那些在较容易位置上打球的人将被要求在更高的进攻水平上表现,以便与处于更困难位置的球员具有相同的价值),我已经包含了虚拟变量来解释位置。
编辑:我添加了以下段落以回应以下答案中的以下评论:
“我看到你在 Logit 和负二项式过程中没有包含相同的协变量——为什么不呢?通常,每个相关的预测变量都会影响这两个过程。”
我认为如果我解释数据生成过程会有所帮助。一名球员在小联盟踢球。在某个时候,当他们在小联盟级别表现出足够的技能(这是统计上的成功和观察到的特征的组合,球探认为这将使他们在大联盟级别取得成功),一名球员被提升到大联盟. 此时,他们有机会积累 oWAR。至此,第一个数据生成过程(由 logit 模型捕获)结束。现在,一个不同的数据生成过程接管了,玩家根据他们在大联盟级别的比赛方式积累 oWAR。一些球员表现不佳,累积零oWAR,就像没有进入大满贯赛的球员一样。这也是我认为这个模型合适的原因之一。将一个累积为零的球员与一个进入大联盟但没有在那个水平上取得成功(并且仍然以零 oWAR 结束他的职业生涯)的球员区分开来并不一定容易。我没有在模型的计数部分包括位置假人,因为 oWAR 测量值已经针对球员所扮演的位置进行了调整,而小联盟统计数据则没有。当我尝试在模型中测试它们时,毫不奇怪,它们并不重要。我从模型的 logit 部分省略了 BB Pct 统计量,因为它不显着(p = 0.22)我没有在模型的计数部分包括位置假人,因为 oWAR 测量值已经针对球员所扮演的位置进行了调整,而小联盟统计数据则没有。当我尝试在模型中测试它们时,毫不奇怪,它们并不重要。我从模型的 logit 部分省略了 BB Pct 统计量,因为它不显着(p = 0.22)我没有在模型的计数部分包括位置假人,因为 oWAR 测量值已经针对球员所扮演的位置进行了调整,而小联盟统计数据则没有。当我尝试在模型中测试它们时,毫不奇怪,它们并不重要。我从模型的 logit 部分省略了 BB Pct 统计量,因为它不显着(p = 0.22)
“由于您的数据似乎是一个面板(您反复观察球员/球队),您可以考虑更复杂的东西,例如固定或随机效应。”
就数据的采样方式而言,一名球员可以在数据集中出现一次(如果他们只在小联盟的水平上度过了一年),如果他们需要多年的时间才能晋级,则可以多次进入数据集。在阅读了固定与随机效应模型之后,我看不出如何使用固定模型来预测样本外的玩家。但是,我确信存在固定效果(由玩家确定的效果未在因变量中捕获),因此我不完全了解如何处理该问题。
结束编辑
在尝试了一个线性的、Box-Cox 变换的基本 GLM 模型,但结果通常很差,我被引导到模型的零膨胀负二项分布集。在尝试了不同的变量组合并按照 R 中计数数据回归模型的出色分步指南中的步骤进行操作后,我选择了以下模型(如下所示)。
模型

此外,当我使用三明治标准误差重新估计标准误差时,模型似乎仍然具有适当的自变量。
三明治标准错误

在这一点上,考虑到我拥有的数据集,我认为我不会找到更好的模型类型。但是,我仍然存在一些问题。第一个问题可能是我正在使用的数据集的函数。在我看到的大多数讨论零膨胀数据的示例中,零显然比其他值多(因此得名)。然而,零的数量似乎仍然少于总因变量的 50%,通常甚至没有那么高。在我的数据集中,大约 87% 的因变量为零,即很难在美国职业棒球大联盟中取得成功。我猜该模型在技术上应该能够解释这种情况(尽管预测值低于具有更多非零值的模型),但我不确定如何检查是否是这种情况。当我创建一个拟合值和皮尔逊残差图时,
拟合与皮尔逊残差

拟合残差与原始残差

由于不知道这些图在良好拟合回归中的具体情况,我决定采用此处描述的样本数据并在一个我知道拟合被认为良好的示例中检查这些图。
拟合与皮尔逊残差 - 样本问题

拟合残差与原始残差 - 样本问题

显然,这些情节看起来与我的不太相似。我不确定与 a) 模型错误指定有多大关系 b) 我的因变量有 87% 的零的事实和 c) 这是一个简单的示例问题,旨在完美地拟合这个模型,而我的数据很混乱,真实世界的数据。对此问题的任何想法将不胜感激。
我的第二个问题,我不确定是否应该在第一个问题之后或同时处理,与功能形式规范有关。我不知道我的自变量的形式是否正确。一位朋友向我建议,我可以尝试 a) 带循环的多个分数多项式或 b) 非正式地添加协变量、交互等多项式。我目前的问题是我不知道如何实现R 中的 a 点,除了随机选择一些之外,我不确定要尝试哪种形式来尝试 b 点。再次,非常感谢您对这个单独的(但相关的?)问题的帮助。
如果有人有任何问题,我会尽力回答。在我的第一篇文章 ( 1 ) 中,我提到我无法提供数据集,但如果有人想看,我已获准这样做。