帮我拟合这个无视之前所有努力的非线性多元回归

机器算法验证 r multiple-regression data-transformation nonlinear-regression generalized-additive-model
2022-03-09 19:40:16

编辑:自从发表这篇文章以来,我在这里又发了一篇文章。

下面的文字摘要:我正在研究一个模型,并尝试过线性回归、Box Cox 变换和 GAM,但没有取得太大进展

使用R,我目前正在研究一个模型来预测小联盟棒球运动员在大联盟 (MLB) 级别的成功。因变量,进攻性生涯胜过替补(oWAR),是 MLB 级别成功的代表,衡量为球员在其职业生涯中参与的每场比赛的进攻贡献总和(详情请点击此处 - http ://www.fangraphs.com/library/misc/war/)。自变量是用于统计数据的 z 得分小联盟进攻变量,这些统计数据被认为是大联盟级别成功的重要预测指标,包括年龄(在年轻时取得更多成功的球员往往有更好的前景),三振出局率 [SOPct ]、步行速度 [BBrate] 和调整后的产量(进攻性产量的全球衡量标准)。此外,由于小联盟有多个级别,因此我为小联盟级别的比赛(双 A、高 A、低 A、新秀和短赛季与三 A [大联盟之前的最高级别]作为参考变量])。注意:我已将 WAR 重新缩放为从 0 到 1 的变量。

变量散点图如下:

散点图

作为参考,因变量 oWAR 具有以下图:

因变量图

我从线性回归开始oWAR = B1zAge + B2zSOPct + B3zBBPct + B4zAdjProd + B5DoubleA + B6HighA + B7LowA + B8Rookie + B9ShortSeason并获得了以下诊断图:

线性回归诊断

残差缺乏无偏性和随机变化存在明显的问题。此外,残差不正常。回归结果如下所示:

线性回归结果

按照上一个帖子中的建议,我尝试了 Box-Cox 转换,但没有成功。接下来,我尝试了一个带有日志链接的 GAM,并收到了这些图:

样条

原来的 诊断检查GAM

新诊断图 GAMDiag

It looks like the splines helped fit the data but the diagnostic plots still show a poor fit. EDIT: I thought I was looking at the residuals vs fitted values originally but I was incorrect. The plot that was originally shown is marked as Original (above) and the plot I uploaded afterwards is marked as New Diagnostic Plot (also above)

GAM结果

The R2 of the model has increased

but the results produced by the command gam.check(myregression, k.rep = 1000) are not that promising.

GAM结果2

Can anyone suggest a next step for this model? I am happy to provide any other information that you think might be useful to understand the progress I've made thus far. Thanks for any help you can provide.

2个回答

非常好的工作。我认为这种情况是比例优势半参数序数逻辑模型的候选者。lrmR 包中的函数rms将适合模型。现在,您可能希望将舍入为只有 100-200 个级别。很快将发布一个新版本,其中包含一个新功能,该功能有效地允许模型中的数千个截距,即允许完全连续[更新:这出现在 2014 年]。比例赔率模型的变换方式是不变的。这意味着分位数也是不变的。当您需要预测均值时,假定YrmsormYβYY

我认为重新处理因变量和模型在这里会很有成效。从 中查看您的残差lm(),似乎主要问题在于职业 WAR 较高的玩家(您将其定义为所有 WAR 的总和)。请注意,您的最高预测(缩放)WAR 是最大值 1 中的 0.15!我认为这个因变量有两件事加剧了这个问题:

  • 只是玩更长时间的玩家有更多时间收集战争
  • 优秀的玩家往往会被逗留更长时间,因此将有机会有更长的时间来收集 WAR

然而,在预测的背景下,包括明确作为控制的时间(以任何方式,无论是作为权重,还是作为计算平均职业 WAR 的分母)会适得其反(我也怀疑它的影响也是非线性的)。lme4因此,我建议在使用或的混合模型中不太明确地建模时间nlme

您的因变量将是季节性 WAR,并且每个玩家会有所不同该模型将玩家作为随机效应,并且将遵循以下原则:j=mii

sWARij=α+σi2+<other stuff>+εij

lme4这看起来像
lmer(sWAR ~ <other stuff> + (1|Player), data=mydata)

您可能仍然需要在上进行转换,但我认为这将有助于该反馈循环。sWAR