选择要包含在多元线性回归模型中的变量


35

我目前正在使用多元线性回归建立模型。在摆弄我的模型之后,我不确定如何最好地确定要保留哪些变量以及要除去哪些变量。

我的模型从DV的10个预测变量开始。当使用所有10个预测变量时,有4个被认为是重要的。如果仅删除一些明显不正确的预测变量,那么一些最初不重要的预测变量将变得很重要。这使我想到了一个问题:如何确定要在模型中包括哪些预测变量?在我看来,您应该对所有预测变量运行一次模型,删除不重要的预测变量,然后重新运行。但是,如果只删除其中一些预测变量会使其他预测变量变得重要,那么我想知道我是否对所有这些方法都采用了错误的方法。

我认为主题与我的问题类似,但是我不确定我是否正确解释了讨论内容。也许这更多是一个实验性设计主题,但也许有人可以分享一些经验。


答案很大程度上取决于您的目标和要求:您是在寻找简单的关联,还是在进行预测?您对可解释性的评价如何?您是否有其他出版物可能影响过程的变量信息;变量的交互或转换版本如何:您可以包括这些变量吗?等等。您需要指定有关要执行的操作的更多详细信息,以获得良好的答案。
Nick Sabbe 2012年

根据您的要求,这将用于预测。对其他变量的影响只是提供了可能的关联。它们之间没有交互。仅一个值需要转换,并且已经完成。
cryptic_star 2012年

1
有没有理论说您应该包括哪些预测变量?如果您测量了很多变量,并且没有理论依据,那么我建议您提供一组观察值,以便可以在未用于创建模型的数据上测试模型。在相同数据上测试和验证模型是不正确的。
米歇尔(Michelle)

交叉验证(如Nick Sabbe讨论的),惩罚方法(Dikran Marsupial)或基于先验理论选择变量(Michelle)都是选择。但是请注意,变量选择本质上是一项非常困难的任务。要了解为什么它如此潜在的困扰,它可能有助于在这里阅读我的答案:algorithm-for-automatic-model-selection。最后,值得认识到问题是此活动的逻辑结构,而不是计算机是自动为您完成还是手动为您完成。
gung-恢复莫妮卡

还检查了答案,这个帖子:stats.stackexchange.com/questions/34769/...
jokel

Answers:


19

根据您对我的评论的反应:

您正在寻找预测。因此,您不应该真正依赖系数的意义。你会更好

  • 选择一个最能描述您的预测需求的标准(例如,错误分类率,ROC的AUC,带有权重的某种形式的...)
  • 对于每个感兴趣的模型,请评估此标准。例如,可以通过提供验证集(如果您很幸运或有钱),交叉验证(通常是十倍)或您的感兴趣的标准允许的其他任何选项来实现。如果可能,还可以找到每个模型的标准SE的估计值(例如,通过使用交叉验证中不同折数的值)
  • 现在,您可以选择具有最佳准则值的模型,尽管通常建议您选择最佳值一个SE内的最简约模型(最小变量)。

WRT 感兴趣的每个模型:这里存在相当多的陷阱。有10个潜在预测变量,这就是潜在模型的重担。如果您有足够的时间或时间来进行处理(或者您的数据足够小以至于模型可以拟合并足够快地进行评估):请准备一个球。如果不是这样,您可以通过有根据的猜测,正向或反向建模(但使用标准而不是重要性)或更好的方法来解决此问题:使用某种算法来选择一组合理的模型。做到这一点的一种算法是惩罚回归,特别是套索回归。如果您使用的是R,只需插入软件包glmnet,即可开始使用。


+1,但是您能解释一下为什么您会“选择最佳值一个SE内的最简约模型(最小变量)”吗?
rolando2 2012年

在大多数情况下,简约性是一个想要的属性:它提高了可解释性,并减少了使用新模型需要进行的测量次数。故事的另一面是,您获得的标准只是一个估计值,带有匹配的SE:我已经看到很多图显示了针对某些调整参数的标准估计值,其中“最佳”值只是一个例外峰。因此,1 SE规则(这是任意的,但被接受的惯例)可以提供更多的简约性,从而为您提供了保护,从而避免了这种情况。
Nick Sabbe 2012年

13

没有简单的答案。当您删除一些非重要的解释变量时,与那些相关的其他变量可能会变得重要。这没有错,但是它使得模型选择至少部分是艺术而不是科学。这就是为什么实验旨在保持解释变量彼此正交以避免该问题的原因。

传统上,分析人员每次一次逐步向模型添加或减去变量(类似于您所做的事情),然后分别或以t或F检验对变量进行单独或成组的测试。问题是,您可能会错过变量的某些组合以进行求和(或添加),其中变量的组合效果(或非效果)被共线性隐藏。

使用现代计算能力,可以拟合所有2 ^ 10 = 1024个解释变量的可能组合,并通过许多可能的标准(例如AIC,BIC或预测能力)(例如,预测值的能力)中的一种来选择最佳模型已与用于拟合模型的数据集分离的数据的测试子集)。但是,如果要(隐式或显式)测试1024个模型,则需要从经典方法中重新考虑您的p值-请谨慎对待...


感谢双方的优缺点。它证实了我的很多怀疑。
cryptic_star 2012年

11

如果您仅对预测性能感兴趣,那么最好使用所有功能并使用岭回归来避免过度拟合训练样本。这本质上是Millar的专着《回归中的子集选择》附录中给出的建议,因此它带有合理的血统!

原因是,如果您根据基于固定数据样本(例如AIC,BIC,交叉验证等)的性能估算来选择子集,则选择标准将具有有限的方差,因此可以过度适合选择标准本身。换句话说,从最小化选择标准开始,泛化性能将有所提高,但是会有一个减少点越多,泛化效果越差。如果您不走运,则可以轻松得出一个性能比开始时差的回归模型(即具有所有属性的模型)。

当数据集很小(因此选择标准具有较高的方差)且模型的选择可能很多时(例如选择特征组合),这种情况尤其可能发生。正则化似乎不太容易过度拟合,因为它是一个需要调整的标量参数,因此对模型的复杂性给出了更为严格的看法,即,过低的有效自由度可用于过度拟合选择标准。


0

使用跳转库。绘制变量时,y轴显示已调整R ^ 2。您查看框在最高R ^ 2处的黑色位置。这将显示您应该用于多元线性回归的变量。

下面的葡萄酒示例:

library(leaps)
regsubsets.out <-
  regsubsets(Price ~ Year + WinterRain + AGST + HarvestRain + Age + FrancePop,
         data = wine,
         nbest = 1,       # 1 best model for each number of predictors
         nvmax = NULL,    # NULL for no limit on number of variables
         force.in = NULL, force.out = NULL,
         method = "exhaustive")
regsubsets.out

#----When you plot wherever R^2 is the highest with black boxes,
#so in our case AGST + HarvestRain + WinterRain + Age and the dependent var.is Price----#
summary.out <- summary(regsubsets.out)
as.data.frame(summary.out$outmat)
plot(regsubsets.out, scale = "adjr2", main = "Adjusted R^2")

这与已知问题的所谓“最佳子集”选择听起来并不完全不同。
gung-恢复莫妮卡

leaps 显式计算“最佳子集”,尽管它不建议您如何选择不同大小的子集。(这是您和您的统计神职人员之间的问题。)
steveo'america 2015年

有趣的是,leaps它基于“艾伦·米勒的FORTRAN77代码,在他的书“回归中的子集选择”中有更详细的描述,这是狄克伦在对这个问题的另一个回答中提到的书:-)
jorijnsmit


-2

为什么不先进行相关分析,然后才仅对那些与Dv相关的分析进行回归分析?


2
通常,这是选择要选择的变量的一种较差的方法,请参见例如,使用相关矩阵选择回归的预测变量是否正确?相关分析与多元回归完全不同,因为在后一种情况下,我们需要考虑“偏出”(一旦考虑其他变量,回归斜率就会显示出这种关系),但是相关矩阵并未对此进行说明。
银鱼

这不能为问题提供答案。一旦您拥有足够的声誉,您就可以在任何帖子中发表评论;相反,请提供不需要问询者澄清的答案。- 来自评论
恢复莫妮卡

1
@GeneralAbrial我惊讶这对这个问题的答案,尽管只是一个简短的回答。这不是解决问题的好方法,但这就是解决问题的方法。(我认为“为什么不”是一个反问,而不是要求作者澄清。)
Silverfish

-4

我的顾问提供了另一种可能的解决方法。运行所有变量一次,然后删除那些未达到某个阈值的变量(我们将阈值设置为p <.25)。继续以这种方式进行迭代,直到所有变量都降至该.25值以下,然后报告那些有意义的值。


1
嗨,盟友,这就是@Peter Ellis在回答第二段中提到的内容。他的第二句话涵盖了该技术引入的问题。您是否有理论在告诉您要在模型中加入哪些预测变量?
米歇尔

是的,@ Michelle正确强调了此方法的责任。它可以产生非常任意的结果。
rolando2 2012年

是的,这背后有一个理论,我们希望对此进行扩展。特别是,我们正在研究某些社交线索(例如语音)如何相互作用。我们知道哪些人已经或没有影响力。但是,我们正在尝试提供更细粒度的版本。所以,演讲可以被分解成问题,意见,评估等
cryptic_star

2
好的,您正在做探索性分析。:)您可以尝试不同的组合,但是您需要在新数据上测试最终的模型。根据定义,您正在执行的操作将为您的数据提供“最佳”模型,但是如果您收集另一组数据,则该模型可能无法正常工作。
米歇尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.