前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言多项式回归拟合非线性关系

R语言多项式回归拟合非线性关系

作者头像
拓端
发布2021-05-11 15:02:01
3.6K0
发布2021-05-11 15:02:01
举报
文章被收录于专栏:拓端tecdat拓端tecdat

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

多项式回归是x自变量和y因变量之间的非线性关系。

当我们分析有一些弯曲的波动数据时,拟合这种类型的回归是很关键的。 在这篇文章中,我们将学习如何在R中拟合和绘制多项式回归数据。我们在这个回归模型中使用了lm()函数。虽然它是一个线性回归模型函数,但通过改变目标公式类型,lm()对多项式模型也适用。本教程包括

  1. 准备数据
  2. 拟合模型
  3. 寻找最佳拟合
  4. 源代码

准备数据

我们首先要准备测试数据,如下所示。

代码语言:javascript
复制
function(x) x^3+2*x^2+5

 
df = data.frame(x = x, y = y)
head(df)

我们可以将'df'数据可视化,在图中进行直观的检查。我们的任务是用最佳曲线拟合这个数据。

代码语言:javascript
复制
plot(df$x, df$y

拟合模型

我们用lm()函数建立一个带有公式的模型。 I(x^2)在一个公式中代表x2。我们也可以使用poly(x,2)函数,它与I(x^2)的表达方式相同。

接下来,我们将用训练好的模型来预测数据。

代码语言:javascript
复制
pred = predict(model,data=df)

寻找最佳拟合

找到最佳拟合的曲线很重要。我们用各种可能的函数检查模型。在这里,我们应用四种类型的函数进行拟合,并检查其性能。 橙色线(线性回归)和黄色曲线对这个数据来说是错误的选择。粉红色曲线很接近,但蓝色曲线是与我们的数据趋势最匹配的。因此,我使用y~x3+x2公式来建立我们的多项式回归模型。 你可以通过将你的数据可视化来找到最适合的公式。

源代码列在下面。

代码语言:javascript
复制
 lines(df$x, predict(lm(y~x, data=df)), type="l"  lwd=2)
 
legend("topleft", 
        legend = c("y~x,  - 线性","y~x^2", "y~x^3", "y~x^3+x^2"),

绘制结果

1. 用plot()函数作图。

2. 用ggplot()作图。 多项式回归数据可以用ggplot()拟合和绘制。

代码语言:javascript
复制
ggplot(data=df ) +
       geom_smooth(  y~I(x^3)+I(x^2))

在本教程中,我们简要了解了如何拟合多项式回归数据,并使用R中的plot()和ggplot()函数绘制结果,完整的源代码如下。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文链接:http://tecdat.cn/?p=22438
  • 准备数据
  • 拟合模型
  • 寻找最佳拟合
  • 绘制结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档