拓端tecdat|R語言用LASSO,adaptive LASSO預(yù)測通貨膨脹時(shí)間序列
原文鏈接:http://tecdat.cn/?p=22273?
原文出處:拓端數(shù)據(jù)部落公眾號
動(dòng)機(jī)
如果你了解數(shù)據(jù)科學(xué)領(lǐng)域,你可能聽說過LASSO。LASSO是一個(gè)對目標(biāo)函數(shù)中的參數(shù)大小進(jìn)行懲罰的模型,試圖將不相關(guān)的變量從模型中排除。它有兩個(gè)非常自然的用途,第一個(gè)是變量選擇,第二個(gè)是預(yù)測。因?yàn)橥ǔG闆r下,LASSO選擇的變量會比普通最小二乘法(OLS)少得多,其預(yù)測的方差會小得多,代價(jià)是樣本中出現(xiàn)少量的偏差。
LASSO最重要的特點(diǎn)之一是它可以處理比觀測值多得多的變量,我說的是成千上萬的變量。這是它最近流行的主要原因之一。
實(shí)例
在這個(gè)例子中,我使用最流行的LASSO,glmnet。我們可以非??焖俚毓烙?jì)LASSO,并使用交叉驗(yàn)證選擇最佳模型。根據(jù)我的經(jīng)驗(yàn),在時(shí)間序列的背景下,使用信息準(zhǔn)則(如BIC)來選擇最佳模型會更好。它更快,并避免了時(shí)間序列中交叉驗(yàn)證的一些復(fù)雜問題。
本文估計(jì)LASSO,并使用信息標(biāo)準(zhǔn)來選擇最佳模型。我們將使用LASSO來預(yù)測通貨膨脹。
## == 數(shù)據(jù)分解成樣本內(nèi)和樣本外
y.in=y[1:100]; y.out=y[-c(1:100)]
x.in=x[1:100,]; x.out=x[-c(1:100),]
## == LASSO == ##
glmnet(x.in,y.in,crit = "bic")

plot(lasso)

上面的第一個(gè)圖顯示,當(dāng)我們增加LASSO目標(biāo)函數(shù)中的懲罰時(shí),變量會歸零。第二張圖顯示了BIC曲線和選定的模型。現(xiàn)在我們可以計(jì)算預(yù)測了。
## == 預(yù)測 == ##
predict(lasso,x.out)

adaptive LASSO
LASSO有一個(gè)自適應(yīng)版本,在變量選擇方面有一些更好的特性。請注意,這并不總是意味著更好的預(yù)測。該模型背后的想法是使用一些以前知道的信息來更有效地選擇變量。一般來說,這些信息是由LASSO或其他一些模型估計(jì)的系數(shù)。
## = adaLASSO = ##
adalasso(x.in,y.in,crit="bic",penalty=factor)
predict(adalasso, x.out)

## = 比較誤差 = ##
sqrt(mean((y.out-pred.ada)^2)

在這種情況下,adaLASSO產(chǎn)生了一個(gè)更精確的預(yù)測。一般來說,adaLASSO比簡單的LASSO的預(yù)測效果更好。然而,這不是一個(gè)絕對的事實(shí)。我見過很多簡單LASSO做得更好的案例。
參考文獻(xiàn)
[1] Bühlmann, Peter, and Sara Van De Geer. Statistics for high-dimensional data: methods, theory and applications. Springer Science & Business Media, 2011.
[2] Jerome Friedman, Trevor Hastie, Robert Tibshirani (2010). Regularization Paths for
Generalized Linear Models via Coordinate Descent. Journal of Statistical Software, 33(1), 1-22. URL?http://www.jstatsoft.org/v33/i01/
[3] Marcio Garcia, Marcelo C. Medeiros , Gabriel F. R. Vasconcelos (2017). Real-time inflation forecasting with high-dimensional models: The case of Brazil. Internationnal Journal of Forecasting, in press.

最受歡迎的見解
1.在python中使用lstm和pytorch進(jìn)行時(shí)間序列預(yù)測
2.python中利用長短期記憶模型lstm進(jìn)行時(shí)間序列預(yù)測分析
3.使用r語言進(jìn)行時(shí)間序列(arima,指數(shù)平滑)分析
4.r語言多元copula-garch-模型時(shí)間序列預(yù)測
5.r語言copulas和金融時(shí)間序列案例
6.使用r語言隨機(jī)波動(dòng)模型sv處理時(shí)間序列中的隨機(jī)波動(dòng)
7.r語言時(shí)間序列tar閾值自回歸模型
8.r語言k-shape時(shí)間序列聚類方法對股票價(jià)格時(shí)間序列聚類
9.python3用arima模型進(jìn)行時(shí)間序列預(yù)測