最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型

2021-07-12 10:03 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=20531

原文出處:拓端數(shù)據(jù)部落公眾號

在標(biāo)準(zhǔn)線性模型中,我們假設(shè)?

。當(dāng)線性假設(shè)無法滿足時,可以考慮使用其他方法。

  • 多項式回歸

擴展可能是假設(shè)某些多項式函數(shù),

同樣,在標(biāo)準(zhǔn)線性模型方法(使用GLM的條件正態(tài)分布)中,參數(shù)?

?可以使用最小二乘法獲得,其中?

?在?

?。

即使此多項式模型不是真正的多項式模型,也可能仍然是一個很好的近似值?

。實際上,根據(jù)?Stone-Weierstrass定理,如果?

?在某個區(qū)間上是連續(xù)的,則有一個統(tǒng)一的近似值?

?,通過多項式函數(shù)。

僅作說明,請考慮以下數(shù)據(jù)集


  1. db = data.frame(x=xr,y=yr)

  2. plot(db)

與標(biāo)準(zhǔn)回歸線

  1. reg = lm(y ~ x,data=db)

  2. abline(reg,col="red")

考慮一些多項式回歸。如果多項式函數(shù)的次數(shù)足夠大,則可以獲得任何一種模型,

reg=lm(y~poly(x,5),data=db)

但是,如果次數(shù)太大,那么會獲得太多的“波動”,

reg=lm(y~poly(x,25),data=db)

并且估計值可能不可靠:如果我們更改一個點,則可能會發(fā)生(局部)更改


  1. yrm=yr;yrm[31]=yr[31]-2

  2. lines(xr,predict(regm),col="red")

  • 局部回歸

實際上,如果我們的興趣是局部有一個很好的近似值 ?

,為什么不使用局部回歸?

使用加權(quán)回歸可以很容易地做到這一點,在最小二乘公式中,我們考慮

  • 在這里,我考慮了線性模型,但是可以考慮任何多項式模型。在這種情況下,優(yōu)化問題是

可以解決,因為

例如,如果我們想在某個時候進行預(yù)測?, 考慮?

。使用此模型,我們可以刪除太遠的觀測值,

更一般的想法是考慮一些核函數(shù)?

?給出權(quán)重函數(shù),以及給出鄰域長度的一些帶寬(通常表示為h),

這實際上就是所謂的?Nadaraya-Watson?函數(shù)估計器?

。
在前面的案例中,我們考慮了統(tǒng)一核?

,

但是使用這種權(quán)重函數(shù)具有很強的不連續(xù)性不是最好的選擇,嘗試高斯核,

這可以使用


  1. w=dnorm((xr-x0))

  2. reg=lm(y~1,data=db,weights=w)

在我們的數(shù)據(jù)集上,我們可以繪制


  1. w=dnorm((xr-x0))

  2. plot(db,cex=abs(w)*4)

  3. lines(ul,vl0,col="red")

  4. axis(3)

  5. axis(2)

  6. reg=lm(y~1,data=db,weights=w)

  7. u=seq(0,10,by=.02)

  8. v=predict(reg,newdata=data.frame(x=u))

  9. lines(u,v,col="red",lwd=2)

在這里,我們需要在點2進行局部回歸。下面的水平線是回歸(點的大小與寬度成比例)。紅色曲線是局部回歸的演變

讓我們使用動畫來可視化曲線。

但是由于某些原因,我無法在Linux上輕松安裝該軟件包。我們可以使用循環(huán)來生成一些圖形


  1. name=paste("local-reg-",100+i,".png",sep="")

  2. png(name,600,400)



  3. for(i in 1:length(vx0)) graph (i)

然后,我使用

當(dāng)然,可以考慮局部線性模型,


  1. return(predict(reg,newdata=data.frame(x=x0)))}

甚至是二次(局部)回歸,


  1. lm(y~poly(x,degree=2), weights=w)

當(dāng)然,我們可以更改帶寬

請注意,實際上,我們必須選擇權(quán)重函數(shù)(所謂的核)。但是,有(簡單)方法來選擇“最佳”帶寬h。交叉驗證的想法是考慮

?

?是使用局部回歸獲得的預(yù)測。??

我們可以嘗試一些真實的數(shù)據(jù)。

  1. library(XML)


  2. data = readHTMLTable(html)

整理數(shù)據(jù)集,


  1. plot(data$no,data$mu,ylim=c(6,10))

  2. segments(data$no,data$mu-1.96*data$se,

我們計算標(biāo)準(zhǔn)誤差,反映不確定性。


  1. for(s in 1:8){reg=lm(mu~no,data=db,

  2. lines((s predict(reg)[1:12]

所有季節(jié)都應(yīng)該被認為是完全獨立的,這不是一個很好的假設(shè)。

smooth(db$no,db$mu,kernel = "normal",band=5)

我們可以嘗試查看帶寬較大的曲線。

  1. db$mu[95]=7


  2. plot(data$no,data$mu


  3. lines(NW,col="red")

樣條平滑

接下來,討論回歸中的平滑方法。假設(shè)

?,?

?是一些未知函數(shù),但假定足夠平滑。例如,假設(shè)?

?是連續(xù)的,?

?存在,并且是連續(xù)的,??

?存在并且也是連續(xù)的等等。如果?

?足夠平滑,??可以使用泰勒展開式。?因此,對于?

也可以寫成

第一部分只是一個多項式。

使用?黎曼積分,觀察到

因此,

我們有線性回歸模型。一個自然的想法是考慮回歸?

https://latex.codecogs.com/gif.latex?Y

,對于?

https://latex.codecogs.com/gif.latex?\boldsymbol{X}

?

給一些節(jié)點?

https://latex.codecogs.com/gif.latex?\ {x_1,\ cdots,x_k \}

。

plot(db)

如果我們考慮一個節(jié)點,并擴展階數(shù)1,



  1. B=bs(xr,knots=c(3),Boundary.knots=c(0,10),degre=1)


  2. lines(xr[xr<=3],predict(reg)[xr<=3],col="red")

  3. lines(xr[xr>=3],predict(reg)[xr>=3],col="blue")

可以將用該樣條獲得的預(yù)測與子集(虛線)上的回歸進行比較。



  1. lines(xr[xr<=3],predict(reg)[xr<=3



  2. lm(yr~xr,subset=xr>=3)


這是不同的,因為這里我們有三個參數(shù)(關(guān)于兩個子集的回歸)。當(dāng)要求連續(xù)模型時,失去了一個自由度。觀察到可以等效地寫


  1. lm(yr~bs(xr,knots=c(3),Boundary.knots=c(0,10)

回歸中出現(xiàn)的函數(shù)如下

現(xiàn)在,如果我們對這兩個分量進行回歸,我們得到


  1. matplot(xr,B


  2. abline(v=c(0,2,5,10),lty=2)

如果加一個節(jié)點,我們得到

預(yù)測是



  1. lines(xr,predict(reg),col="red")

我們可以選擇更多的節(jié)點



  1. lines(xr,predict(reg),col="red")

我們可以得到一個置信區(qū)間



  1. polygon(c(xr,rev(xr)),c(P[,2],rev(P[,3]))


  2. points(db)


如果我們保持先前選擇的兩個節(jié)點,但考慮泰勒的2階的展開,我們得到



  1. matplot(xr,B,type="l")

  2. abline(v=c(0,2,5,10),lty=2)

如果我們考慮常數(shù)和基于樣條的第一部分,我們得到



  1. B=cbind(1,B)

  2. lines(xr,B[,1:k]%*%coefficients(reg)[1:k],col=k-1,lty=k-1)

如果我們將常數(shù)項,第一項和第二項相加,則我們得到的部分在第一個節(jié)點之前位于左側(cè),

  1. k=3

  2. lines(xr,B[,1:k]%*%coefficients(reg)[1:k]

通過基于樣條的矩陣中的三個項,我們可以得到兩個節(jié)點之間的部分,


  1. lines(xr,B[,1:k]%*%coefficients(reg)[1:k]

最后,當(dāng)我們對它們求和時,這次是最后一個節(jié)點之后的右側(cè)部分,

  1. k=5


這是我們使用帶有兩個(固定)節(jié)點的二次樣條回歸得到的結(jié)果??梢韵褚郧耙粯荧@得置信區(qū)間



  1. polygon(c(xr,rev(xr)),c(P[,2],rev(P[,3]))


  2. points(db)

  3. lines(xr,P[,1],col="red")


使用函數(shù)?

,可以確保點的連續(xù)性?

。

再一次,使用線性樣條函數(shù),可以增加連續(xù)性約束,


  1. lm(mu~bs(no,knots=c(12*(1:7)+.5),Boundary.knots=c(0,97),



  2. lines(c(1:94,96),predict(reg),col="red")

但是我們也可以考慮二次樣條,



  1. abline(v=12*(0:8)+.5,lty=2)


  2. lm(mu~bs(no,knots=c(12*(1:7)+.5),Boundary.knots=c(0,97),

最受歡迎的見解

1.R語言多元Logistic邏輯回歸 應(yīng)用案例

2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實現(xiàn)

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

4.R語言泊松Poisson回歸模型分析案例

5.R語言回歸中的Hosmer-Lemeshow擬合優(yōu)度檢驗

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現(xiàn)

7.在R語言中實現(xiàn)Logistic邏輯回歸

8.python用線性回歸預(yù)測股票價格

9.R語言如何在生存分析與Cox回歸中計算IDI,NRI指標(biāo)


拓端tecdat|R語言中的多項式回歸、局部回歸、核平滑和平滑樣條回歸模型的評論 (共 條)

分享到微博請遵守國家法律
工布江达县| 新和县| 静乐县| 买车| 阿坝县| 博湖县| 凌源市| 醴陵市| 辉县市| 鄂托克旗| 通山县| 布拖县| 东辽县| 长兴县| 临安市| 正安县| 辽阳市| 进贤县| 舞钢市| 茂名市| 休宁县| 贡觉县| 鄢陵县| 忻城县| 镇安县| 香港| 确山县| 喀喇沁旗| 镇赉县| 崇仁县| 本溪| 资讯 | 四会市| 龙岩市| 泾川县| 得荣县| 剑河县| 安丘市| 寿光市| 永新县| 遵化市|