原文链接:http://tecdat.cn/?p=2686


如果数据比简单的直线更为复杂,我们也可以用线性模型来你和非线性数据。一个简单的方法就是将每一个特征的幂次方添加为一个新的特征,然后在这个拓展的特征集上进行线性拟合,这种方法成为多项式回归。

回归分析的目标是根据自变量(或自变量向量)x 的值来模拟因变量 y 的期望值。在简单的线性回归中,使用模型

R语言机器学习实战之多项式回归_编程开发

其中ε是未观察到的随机误差,其以标量 x 为条件,均值为零。在该模型中,对于 x 值的每个单位增加,y 的条件期望增加 β1β1个单位。

在许多情况下,这种线性关系可能不成立。例如,如果我们根据合成发生的温度对化学合成的产率进行建模,我们可以发现通过增加每单位温度增加的量来提高产率。在这种情况下,我们可能会提出如下所示的二次模型:

R语言机器学习实战之多项式回归_R语言_02

通常,我们可以将 y 的期望值建模为 n 次多项式,得到一般多项式回归模型:

R语言机器学习实战之多项式回归_R语言_03

为了方便,这些模型从估计的角度来看都是线性的,因为回归函数就未知参数β0β0、β1β1等而言是线性的。因此,对于最小二乘分析,多项式回归的计算和推理问题可以使用多元回归技术完全解决,这是通过将 xx、x2x2 等视为多元回归模型中的独特自变量来完成的。

 拟合R语言中的多项式回归

让我们看一个经济学的例子:假设你想购买一定数量q的特定产品。如果单价是p,那么你会支付总金额y。这是一个线性关系的典型例子。总价格和数量成正比。 

 

 

如下所示:

R语言机器学习实战之多项式回归_R语言_04

但购买和出售,我们可能要考虑一些其他相关信息,就像当:购买显著数量很可能是我们可以要求并获得折扣,或购买更多更重要的是我们可能会推高价格。

这可能导致像这样的情况,其中总成本不再是数量的线性函数:

R语言机器学习实战之多项式回归_编程开发_05

 

通过多项式回归,我们可以将n阶模型拟合到数据上,并尝试对非线性关系进行建模。

如何拟合多项式回归

这是我们模拟观测数据的图。模拟的数据点是蓝色的点,而红色的线是信号(信号是一个技术术语,通常用于表示我们感兴趣检测的总体趋势)。

 

R语言机器学习实战之多项式回归_编程开发_06

让我们用R来拟合。当拟合多项式时,您可以使用

 lm(noisy.y〜poly(q,3))

通过使用该confint()函数,我们可以获得我们模型参数的置信区间。

模型参数的置信区间:

confint(model,level = 0.95)

拟合vs残差图

R语言机器学习实战之多项式回归_编程开发_07

总的来说,这个模型似乎很适合,因为R的平方为0.8。正如我们所预期的那样,一阶和三阶项的系数在统计上显着。

预测值和置信区间 

将线添加到现有图中:

R语言机器学习实战之多项式回归_编程开发_08

我们可以看到,我们的模型在拟合数据方面做得不错。


参考文献

R语言机器学习实战之多项式回归_编程开发_09

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度检验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

8.python用线性回归预测股票价格

9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标