R語言中的多項式回歸、B樣條曲線(B-spline Curves)回歸

2021-02-20 拓端數據部落
原文連結:http://tecdat.cn/?p=18129

 

在線性模型的文章中,我們已經了解了如何在給出協變量x的向量時構造線性模型。但更一般而言,我們可以考慮協變量的變換,來使用線性模型。

我們首先討論多項式回歸,進一步,我們會想到分段線性或分段多項式函數,可能還有附加的連續性約束,這些是樣條曲線回歸的基礎。

多項式回歸

談論多項式回歸時(在單變量情況下)

我們使用


coef = leg.poly(n=4)[[1]]1

[[2]]x

[[3]]-0.5 + 1.5*x^2

[[4]]-1.5*x + 2.5*x^3

[[5]]0.375 - 3.75*x^2 + 4.375*x^4

有許多正交多項式族(Jacobi多項式,  Laguerre多項式,  Hermite多項式等)。在R中有用於多項式回歸的標準多邊形函數。

當使用poly時,我們使用矩陣的 QR分解。我們使用


poly - function (x, deg = 1) {xbar = mean(x)x = x - xbarQR = qr(outer(x, 0:degree, "^"))X = qr.qy(QR, diag(diag(QR$qr),

這兩個模型是等效的。





dist~speed+I(speed^2)+I(speed^3)dist~poly(speed,3)

 

 

 

我們有完全相同的預測

 




v1[u==15]12138.43919v2[u==15]12138.43919

 

係數沒有相同的解釋,但是p值完全相同,兩個模型以相同的置信度拒絕三次多項式,


summary(reg1)

Coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) -19.50505 28.40530 -0.687 0.496speed 6.80111 6.80113 1.000 0.323I(speed^2) -0.34966 0.49988 -0.699 0.488I(speed^3) 0.01025 0.01130 0.907 0.369

Residual standard error: 15.2 on 46 degrees of freedomMultiple R-squared: 0.6732, Adjusted R-squared: 0.6519F-statistic: 31.58 on 3 and 46 DF, p-value: 3.074e-11

summary(reg2)

Coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) 42.98 2.15 19.988 < 2e-16 ***poly(speed, 3)1 145.55 15.21 9.573 1.6e-12 ***poly(speed, 3)2 23.00 15.21 1.512 0.137poly(speed, 3)3 13.80 15.21 0.907 0.369---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

Residual standard error: 15.2 on 46 degrees of freedomMultiple R-squared: 0.6732, Adjusted R-squared: 0.6519F-statistic: 31.58 on 3 and 46 DF, p-value: 3.074e-11

 

B樣條曲線(B-spline curve)和GAM

樣條曲線在回歸模型中也很重要,尤其是當我們開始討論 廣義加性模型時。在單變量情況下,我通過引入(線性)樣條曲線,

模型是連續的(連續函數的加權總和是連續的)。我們可以進一步 

 

二次樣條

用於三次樣條。有趣的是,二次樣條不僅是連續的,而且它們的一階導數也是連續的(三次樣條是連續的)。這些模型易於解釋。例如,簡單的模型

是以下連續的分段線性函數,在節點s處分段。

 

還應遵守以下解釋:對於xx較小的值,線性增加,斜率\beta_1β1\;對於xx較大的值,線性減小,斜率\ beta_1 + \beta_2β1+β2。因此,\beta_2β2被解釋為斜率的變化。

現在在R中使用bs函數(即標準B樣條)並可視化




x = seq(5,25,by=.25)B = bs(x,knots=c(10,20),Boundary.knots=c(5,55),degre=1)matplot(x,B,type="l",lty=1,lwd=2,col=clr6)

 

提到的函數如下

 




par(mfrow=c(1,2))

matplot(x,B,type="l",lty=1,lwd=2)

matplot(x,B,type="l",col=clr)

 

多項式回歸中這兩個模型表示方法是等效的。例如


dist~speed+pos(speed,10)+pos(speed,20dist~bs(speed,degree=1,knots=c(10,20)

 


v1[u==15]12139.35747v2[u==15]12139.35747

 

這兩個模型以及係數的解釋是等效的:


summary(reg1)

Coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) -7.6305 16.2941 -0.468 0.6418speed 3.0630 1.8238 1.679 0.0998 .pos(speed, 10) 0.2087 2.2453 0.093 0.9263pos(speed, 20) 4.2812 2.2843 1.874 0.0673 .---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

Residual standard error: 15 on 46 degrees of freedomMultiple R-squared: 0.6821, Adjusted R-squared: 0.6613F-statistic: 32.89 on 3 and 46 DF, p-value: 1.643e-11

summary(reg2)

Coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) 4.621 9.344 0.495 0.6233bs(speed, degree = 1, knots = c(10, 20))1 18.378 10.943 1.679 0.0998 .bs(speed, degree = 1, knots = c(10, 20))2 51.094 10.040 5.089 6.51e-06 ***bs(speed, degree = 1, knots = c(10, 20))3 88.859 12.047 7.376 2.49e-09 ***---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1

Residual standard error: 15 on 46 degrees of freedomMultiple R-squared: 0.6821, Adjusted R-squared: 0.6613F-statistic: 32.89 on 3 and 46 DF, p-value: 1.643e-11

在這裡我們可以直接看到,第一個結點的斜率沒有明顯變化。

更多內容,請點擊左下角「閱讀原文」查看報告全文



關注我們

案例精選、技術乾貨 第一時間與您分享

長按二維碼加關注

更多內容,請點擊左下角「閱讀原文」查看報告全文


相關焦點

  • R語言ISLR工資數據進行多項式回歸和樣條回歸分析
    p=8531執行多項式回歸使用age預測wage。使用交叉驗證為多項式選擇最佳次數。選擇了什麼程度,這與使用ANOVA進行假設檢驗的結果相比如何?對所得多項式擬合數據進行繪圖。加載工資數據集。保留所有交叉驗證誤差的數組。我們執行K=10  K倍交叉驗證。1. rm(list = ls()) 2.
  • 第四十四講 R-非線性回歸
    它將多項式項或二次項(預測變量的平方、立方等)添加到回歸中。·樣條回歸(Spline regression):用平滑曲線與一系列多項式線段擬合。限定樣條線段的值稱為「 結(Knots)」。建模非線性關係的另一種方法(通常是更好的方法)是使用樣條曲線。樣條曲線提供了一種在固定點(稱為結)之間平滑插值的方法。在節點之間計算多項式回歸。換句話說,樣條曲線是一系列串在一起的多項式段,以節結連接。
  • R相關與回歸學習筆記(三十五)——樣條函數變換、線性可加模型(一)
    m個節點的三次樣條函數需要n+4個參數, 因為每段需要4個參數, m+1段需要4m+4個參數, 而在個節點上連續、一階導數連續、二階導數連續構成三個約束條件, 所以參數個數為m+4個。自然樣條函數假定函數在最左邊一段和最右邊一段為線性函數, 這樣m個節點需要m+2個參數。
  • R語言從入門到精通:Day12--R語言統計--回歸分析
    回歸作為一個廣義的概念,涵蓋了許多變種,R語言中也為其提供了強大而豐富的函數和選項(但顯然選項越多,對初學者越不友好),早在2005年,R中就有200多種關於回歸分析的函數 (https://cran.r-project.org/doc/contrib/Ricci-refcard-regression.pdf,這個文檔提供了部分回歸分析函數列表,供大家參考)。
  • SAS回歸分析教程
    用SAS/INSIGHT進行曲線擬合兩個變量Y和X之間的相關關係經常可以用一個函數來表示,一元函數可以等同於一條曲線,實際工作中經常對兩個變量擬合一條曲線來近似它們的相關關係。最基本的「曲線」 是直線,還可以用多項式、樣條函數、核估計和局部多項式估計。其模型可表示為 例如,我們要研究SASUSER.CLASS數據集中學生體重與身高之間的相關關係。
  • R語言_018回歸
    而現在機器學習中的回歸都完全忽略了這一點,它認為現在的數據都是大數據了,其實,很多時候我們得到的不是所謂的大數據。  在R中,擬合線性模型最基本的函數就是lm(),格式為:  其中,formula指要擬合的模型形式,data是一個數據框,包含了用於擬合模型的數據。結果對象存儲在一個列表中,包含了所擬合模型的大量信息。
  • r語言 做wald檢驗_r語言wald檢驗怎麼做 - CSDN
    用R語言遇到的一些問題。經常看到rcs()函數,比如擬合回歸時:f <- cph(S ~ rcs(age,4) + sex, x=T, y=T)。
  • SPSS多元線性回歸案例:回歸分析方法實戰
    回歸分析是一種預測性的建模技術,它研究的是因變量(目標)和自變量(預測器)之間的關係。這種技術通常用於預測分析,時間序列模型以及發現變量之間的因果關係。使用曲線/線來擬合這些數據點,在這種方式下,從曲線或線到數據點的距離差異最小。
  • r語言一元回歸模型專題及常見問題 - CSDN
    一元線性回歸分析首先介紹回歸分析中最基礎的情況:一元線性回歸分析。它規定模型f函數只能是y=k*x+b的形式,即只使用一個變量x(故稱為一元)的線性形式來預測目標變量y。6.1.1引例利用某網站歷次促銷活動中促銷讓利費用和銷售金額的數據(單位是十萬元),將使用該數據集來說明線性回歸分析的應用。
  • 醫學統計與R語言:GiViTI Calibration Belt
    前文連結:醫學統計與R語言:多列分組正態性檢驗醫學統計與R語言:計算NRI、IDI指標醫學統計與R語言:連續性變量optimal cutoff確定醫學統計與R語言:pmsampsize:臨床預測模型樣本量計算醫學統計與R語言:限制性立方樣條法
  • 七種經典回歸分析法全解析
    例如,司機的魯莽駕駛與道路交通事故數量之間的關係,最好的研究方法就是回歸。回歸分析是建模和分析數據的重要工具。在這裡,我們使用曲線/線來擬合這些數據點,在這種方式下,從曲線或線到數據點的距離差異最小。我會在接下來的部分詳細解釋這一點。如上所述,回歸分析估計了兩個或多個變量之間的關係。下面,讓我們舉一個簡單的例子來理解它:比如說,在當前的經濟條件下,你要估計一家公司的銷售額增長情況。
  • 線性回歸中+t值的含義_線性回歸 y截距p值的計算 - CSDN
    由於模型是線性的,所以在模式識別和機器學習的實際應用中存在非常大的局限性,特別是當輸入向量的維度特別高的時候,其局限性就更為明顯。但同時,線性模型在數學分析上相對較為簡單,進而成為了很多其他的複雜算法的基礎。一般線性回歸對於一個一般的線性模型而言,其目標就是要建立輸入變量和輸出變量之間的回歸模型。
  • 你應該掌握的七種回歸技術
    【編者按】回歸分析是建模和分析數據的重要工具。本文解釋了回歸分析的內涵及其優勢,重點總結了應該掌握的線性回歸、邏輯回歸、多項式回歸、逐步回歸、嶺回歸、套索回歸、ElasticNet回歸等七種最常用的回歸技術及其關鍵要素,最後介紹了選擇正確的回歸模型的關鍵因素。什麼是回歸分析?
  • 七種回歸分析方法,個個經典
    回歸分析是建模和分析數據的重要工具。在這裡,我們使用曲線/線來擬合這些數據點,在這種方式下,從曲線或線到數據點的距離差異最小。我會在接下來的部分詳細解釋這一點。 線性回歸使用最佳的擬合直線(也就是回歸線)在因變量(Y)和一個或多個自變量(X)之間建立一種關係。 用一個方程式來表示它,即Y=a+b*X+e,其中a表示截距,b表示直線的斜率,e是誤差項。這個方程可以根據給定的預測變量(s)來預測目標變量的值。
  • 機器人任意曲線軌跡規劃基礎——樣條曲線
    這些類型的速度規劃簡單實用,已知開始結束狀態和速度加速度限制,就可以規劃出一條速度曲線。但正因為簡單,所以經常只能應用於規則路徑的規劃。而對於任意曲線的軌跡規劃,只有起點終點狀態的規劃就顯得力不從心了,這時候就要用到基於樣條曲線的軌跡規劃。最早的樣條曲線都是通過物理方法得到的,把一根有彈性的木條,用工具將特定的一些點固定,樣條自然彎曲形成的曲線就是樣條曲線。
  • R語言 小wald檢驗_lm檢驗 wald檢驗 - CSDN
    用R語言遇到的一些問題。經常看到rcs()函數,比如擬合回歸時:f <- cph(S ~ rcs(age,4) + sex, x=T, y=T)。
  • 回歸分析檢驗_回歸分析中f檢驗和t檢驗 - CSDN
    『回歸分析』『線性回歸中的平方誤差』如上圖,線性回歸的平方誤差如下我們來看一下如何將協方差的定義同最小二乘回歸聯繫起來。,這裡可以直觀的解釋一下:因為卡方分布是由標準正態分布採樣來的,根據正態分布的曲線,採樣到0附近的概率最大,所以當自由度很小時,卡方分布在靠近0的地方概率就很大,但是隨著自由度的增加,卡方分布的隨機變量變成了很多樣本點的平方和,當然得到0的概率逐漸減小,均值逐漸增大,所以卡方分布的曲線逐漸右移,當自由度n很大時,
  • 每個數據科學人都應該知道的7種回歸技術
    在這裡,我們將曲線/直線線擬合到數據點,使得數據點距曲線或直線的距離之間的差異最小化。我將在接下來的章節中詳細解釋這一點。為什麼我們使用回歸分析?如上所述,回歸分析是估計兩個或更多變量之間的關係。如果因變量的值是序數,那麼它被稱為序數邏輯回歸如果因變量是多類的,那麼它被稱為多元邏輯回歸。3.多項式回歸如果自變量的冪大於1,則回歸方程是多項式回歸方程。
  • 第二十二章 相關回歸分析
    圖22-1 年齡與血壓相關(A)和五種有代表性點圖(B~F)   根據實際資料,用數學的方法求出一條曲線(或直線),使我們能夠從一個自變數推算出相關的依變量的值,這條線就叫回歸線。回歸線有直線和曲線兩種。本章僅介紹直線相關與回歸分析。
  • r語言tseries - CSDN
    (x) #對缺失值進行樣條插值na.locf(x) #末次觀測值結轉法na.trim(x, sides=」left」 ) #去掉最後一個缺失值#對timeSreies數據na.omit(x, 「ir」 ) #去掉首末位置的缺失值na.omit(x, 「iz」 ) #用替換首末位置的缺失值na.omit(x, 「ie」