天天看點

拓端資料tecdat|R語言多項式回歸拟合非線性關系

多項式回歸是獨立x變量和因果y變量之間的非線性關系。

當我們分析有一些彎曲的波動資料時,拟合這種類型的回歸是很關鍵的。 

在這篇文章中,我們将學習如何在R中拟合和繪制多項式回歸資料。我們在這個回歸模型中使用了lm()函數。雖然它是一個線性回歸模型函數,但通過改變目标公式類型,lm()對多項式模型也适用。本教程包括

  1. 準備資料
  2. 拟合模型
  3. 尋找最佳拟合
  4. 源代碼

準備資料

我們首先要準備測試資料,如下所示。

1.  function(x) x^3+2*x^2+5
2.   
3.   
4.  df = data.frame(x = x, y = y)
5.  head(df)
6.   
7.      
拓端資料tecdat|R語言多項式回歸拟合非線性關系

我們可以将'df'資料可視化,在圖中進行直覺的檢查。我們的任務是用最佳曲線拟合這個資料。

plot(df$x, df$y      
拓端資料tecdat|R語言多項式回歸拟合非線性關系

拟合模型

我們用lm()函數建立一個帶有公式的模型。  I(x^2)在一個公式中代表x2。我們也可以使用poly(x,2)函數,它與I(x^2)的表達方式相同。

拓端資料tecdat|R語言多項式回歸拟合非線性關系

接下來,我們将用訓練好的模型來預測資料。

pred = predict(model,data=df)      

尋找最佳拟合

找到最佳拟合的曲線很重要。我們用各種可能的函數檢查模型。在這裡,我們應用四種類型的函數進行拟合,并檢查其性能。

橙色線(線性回歸)和黃色曲線對這個資料來說是錯誤的選擇。粉紅色曲線很接近,但藍色曲線是與我們的資料趨勢最比對的。是以,我使用y~x3+x2公式來建立我們的多項式回歸模型。

你可以通過将你的資料可視化來找到最适合的公式。

拓端資料tecdat|R語言多項式回歸拟合非線性關系

源代碼列在下面。

1.   
2.  lines(df$x, predict(lm(y~x, data=df)), type="l"  lwd=2)
3.   
4.  legend("topleft", 
5.          legend = c("y~x,  - 線性","y~x^2", "y~x^3", "y~x^3+x^2"),      

繪制結果

1. 用plot()函數作圖。

拓端資料tecdat|R語言多項式回歸拟合非線性關系

2. 用ggplot()作圖。

多項式回歸資料可以用ggplot()拟合和繪制。

1.  ggplot(data=df ) +
2.         geom_smooth(  y~I(x^3)+I(x^2))      
拓端資料tecdat|R語言多項式回歸拟合非線性關系