您可以将多项式项添加到多元线性回归吗?

机器算法验证 回归 多重回归 多项式
2022-03-26 09:26:53

我对何时应该或不应该将多项式项添加到多元线性回归模型感到有些困惑。我知道多项式用于捕获数据中的曲率,但它似乎总是采用以下形式:

y=x1+x2+x12+x22+x1x2+c

如果你知道两者之间存在线性关系怎么办?yx1, 但之间存在非线性关系yx2? 您可以使用以下形式的模型:

y=x1+x2+x22+c

我想我的问题是,放弃x12术语和x1x2术语,还是您必须遵循多项式回归模型的通用形式?

4个回答

除了@mkt 的出色回答,我想我会提供一个具体的例子供您查看,以便您培养一些直觉。

生成示例数据

对于此示例,我使用 R 生成了一些数据,如下所示:

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

从上面可以看出,数据来自模型y=β0+β1x1+β2x2+β3x22+ϵ, 在哪里ϵ是具有均值的正态分布随机误差项0和未知的方差σ2. 此外,β0=1,β1=10,β2=0.4β3=0.8, 尽管σ=1.

通过 Coplots 可视化生成的数据

给定结果变量 y 和预测变量 x1 和 x2 的模拟数据,我们可以使用coplots可视化这些数据:

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

生成的 coplots 如下所示。

当 x2 属于四个不同的观察值范围(重叠)时,第一个 coplot 显示 y 与 x1 的散点图,并通过平滑的、可能是非线性的拟合来增强这些散点图中的每一个,其形状是根据数据估计的。

在此处输入图像描述

当 x1 属于四个不同的观测值范围(重叠)时,第二个 coplot 显示了 y 与 x2 的散点图,并通过平滑拟合增强了这些散点图中的每一个。

在此处输入图像描述

第一个 coplot 表明,在控制 x2 时假设 x1 对 y 具有线性影响并且这种影响不依赖于 x2 是合理的。

第二个 coplot 表明,在控制 x1 时假设 x2 对 y 具有二次效应是合理的,并且这种效应不依赖于 x1。

拟合正确指定的模型

coplots 建议将以下模型拟合到数据中,这允许 x1 的线性效应和 x2 的二次效应:

m <- lm(y ~ x1 + x2 + I(x2^2))  

为正确指定的模型构建分量加残差图

一旦将正确指定的模型拟合到数据中,我们就可以检查模型中包含的每个预测变量的分量加残差图:

library(car)

crPlots(m)

这些分量加残差图如下所示,表明模型是正确指定的,因为它们没有显示非线性等证据。事实上,在这些图中的每一个中,蓝色虚线之间没有明显的差异,暗示线性效应相应的预测变量,以及表示该预测变量在模型中的非线性效应的洋红色实线。

在此处输入图像描述

拟合错误指定的模型

让我们扮演魔鬼的拥护者,说我们的 lm() 模型实际上被错误地指定(即错误指定),因为它省略了二次项 I(x2^2):

m.mis <-  lm(y ~ x1 + x2)

为错误指定的模型构建分量加残差图

如果我们要为错误指定的模型构建分量加残差图,我们会立即看到 x2 在错误指定的模型中的影响的非线性建议:

crPlots(m.mis)

换句话说,如下所示,错误指定的模型未能捕捉到 x2 的二次效应,并且这种效应显示在与错误指定模型中的预测变量 x2 对应的分量加残差图中。

在此处输入图像描述

当针对每个预测变量 x1 和 x2 检查与该模型相关的残差图时,模型 m.mis 中 x2 影响的错误指定也很明显:

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

如下所示,与 m.mis 与 x2 相关的残差图显示出明显的二次模式,表明模型 m.mis 未能捕捉到这种系统模式。

在此处输入图像描述

增强错误指定的模型

要正确指定模型 m.mis,我们需要对其进行扩充,使其还包含项 I(x2^2):

m <- lm(y ~ x1 + x2 + I(x2^2)) 

以下是此正确指定模型的残差与 x1 和 x2 的关系图:

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

请注意,对于错误指定的模型 m.mis,之前在残差与 x2 的图中看到的二次模式现在已经从正确指定的模型 m 的残差与 x2 的图中消失了。

请注意,此处显示的所有残差与 x1 和 x2 的图的垂直轴应标记为“残差”。出于某种原因,R Studio 取消了该标签。

在此处输入图像描述

是的,你的建议很好。在模型中将一个预测变量的响应视为线性而将另一个预测变量视为多项式是完全有效的。假设预测变量之间没有交互也是完全可以的。

如果要添加多项式项,则应注意使用正交多项式。

为什么?没有它们,您将遇到类似共线性的问题。在某些地区,x2看起来很相似x,而抛物线可以很好地拟合直线。

观察:

在此处输入图像描述

这些是多项式x,x2,x3.

在 0 和 1.5 之间,所有三个曲线都单调增加,虽然它们的曲线彼此不同,但当 x 与 y 正相关时,它们将给出相似的质量拟合。通过在代码中使用所有三个

y ~ x + x^2 + x^3

您实际上是在使用冗余形状来适应您的数据。

正交多项式本质上在拟合时为您提供了更多的摆动空间,并且每个多项式基本上独立于其他多项式。

在此处输入图像描述

由 R 中的 poly() 函数生成的三个 1,2 和 3 次多项式。

也许不是明确地将它们视为多项式,而是将它们视为“趋势成分”或其他东西:

x表示“越多越好”(如果系数为负则更糟)。如果您要对音乐质量与牛铃进行回归,则需要此组件。

x2代表一种金发姑娘区。如果您要对食物的味道与盐的量进行回归分析,则该组件将是显着的。

x3本身可能不太可能成为主要组成部分(我能想到的唯一例子是人们知道多少与他们认为他们知道多少),但它的存在会影响形状和对称性xx2条款。

正交多项式涉及很多困难的数学,但幸运的是你只需要知道两件事:

  1. 正交多项式仅在某个区域上正交。我给出的示例涉及仅在 0 和 1.5 之间正交的多项式。
  2. 如果您使用 R,请使用 poly() 函数生成多项式。poly(x,n) 其中 n 是最高多项式的次数。它将使它们在您的数据域中为您正交x.

没有规则说您必须使用所有变量。如果您尝试预测收入,并且您的特征变量是 SSN、受教育年限和年龄,并且您希望删除 SSN,因为您预计它与收入之间的任何相关性都是虚假的,那么您需要做出判断。模型不是无效的,仅仅因为理论上您可以包含其他变量,但没有。决定要包含哪些多项式项只是有关特征选择的众多决定之一。

虽然多项式模型通常从包含所有项开始,但这只是为了评估它们在模型中添加了多少。如果某个特定术语看起来只是过度拟合,则可以在模型的后续迭代中删除它。正则化,例如套索回归,可以自动丢弃不太有用的变量。通常,最好从具有太多变量的模型开始,然后将其缩减到最有用的变量,而不是仅从您认为模型应该依赖的变量开始,并且可能会错过您的关系没想到。