对于线性关系,我们可以进行简单的线性回归。对于其他关系,我们可以尝试拟合一条曲线。

曲线拟合是构建一条曲线或数学函数的过程,它对一系列数据点具有最佳的拟合效果。

 

使用示例数据集

  1.  #我们将使Y成为因变量,X成为预测变量
  2.  #因变量通常在Y轴上
  3.  plot(x,y,pch=19)

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合

 

看起来我们可以拟合一条曲线。

  1.  #拟合一次多项式方程。
  2.   
  3.  fit <- lm(y~x)
  4.   
  5.  #二次
  6.   
  7.  fit2 <- lm(y~poly(x,2)
  8.   
  9.  #三次
  10.   
  11.  ......
  12.   
  13.  #生成50个数字的范围,从30开始到160结束
  14.   
  15.  xx <- seq(30,160, length=50)
  16.   
  17.  lines(xx, predict(fit, xx)
  18.   

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_02

 

我们可以看到每条曲线的拟合程度。
我们可以使用summary()函数对拟合结果进行更详细的统计。

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_03

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_04

 

 

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_05

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_06

使用不同多项式R平方的总结。

  1.  1st: 0.5759
  2.  2nd: 0.9474
  3.  3rd: 0.9924
  4.  4th: 0.9943

我们可以用 "方差分析 "来比较不同的模型。

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_r语言_07

 

Pr(>F)值是拒绝无效假设的概率,即一个模型不比另一个模型更适合。我们有非常显著的P值,所以我们可以拒绝无效假设,即fit2比fit提供了更好的拟合。

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_r语言_08

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_拟合_09

我们还可以创建一个反映多项式方程的函数。

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_多项式_10

 

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_r语言_11

从三次多项式推算出来的数值与原始数值有很好的拟合,我们可以从R-squared值中得知。

结论

对于非线性曲线拟合,我们可以使用lm()和poly()函数,这也为多项式函数对数据集的拟合程度提供了有用的统计数据。我们还可以使用方差分析测试来评估不同模型之间的对比程度。从模型中可以定义一个反映多项式函数的函数,它可以用来推算因变量。

  1.  yy<-third(xx,fit)
  2.   
  3.  plot(xx,yy)

拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_r语言_12


拓端数据tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合_多项式_13