天天看點

用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

如果你了解資料科學領域,你可能聽說過LASSO。LASSO是一個對目标函數中的參數大小進行懲罰的模型,試圖将不相關的變量從模型中排除

動機

它有兩個非常自然的用途,第一個是變量選擇,第二個是預測。因為通常情況下,LASSO選擇的變量會比普通最小二乘法(OLS)少得多,其預測的方差會小得多,代價是樣本中出現少量的偏差。

LASSO最重要的特點之一是它可以處理比觀測值多得多的變量,我說的是成千上萬的變量。這是它最近流行的主要原因之一。

執行個體

在這個例子中,我使用最流行的LASSO,glmnet。我們可以非常快速地估計LASSO,并使用交叉驗證選擇最佳模型。根據我的經驗,在時間序列的背景下,使用資訊準則(如BIC)來選擇最佳模型會更好。它更快,并避免了時間序列中交叉驗證的一些複雜問題。

本文估計LASSO,并使用資訊标準來選擇最佳模型。我們将使用LASSO來預測通貨膨脹。

## == 資料分解成樣本内和樣本外
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")      
用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

01

用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

02

用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

03

用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

04

用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料
plot(lasso)      
用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

上面的第一個圖顯示,當我們增加LASSO目标函數中的懲罰時,變量會歸零。第二張圖顯示了BIC曲線和標明的模型。現在我們可以計算預測了。

## == 預測 == ##
predict(lasso,x.out)      
用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

adaptive LASSO

LASSO有一個自适應版本,在變量選擇方面有一些更好的特性。請注意,這并不總是意味着更好的預測。該模型背後的想法是使用一些以前知道的資訊來更有效地選擇變量。一般來說,這些資訊是由LASSO或其他一些模型估計的系數。

## = adaLASSO = ##

adalasso(x.in,y.in,crit="bic",penalty=factor)
predict(adalasso, x.out)      
用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料
## = 比較誤差 = ##
sqrt(mean((y.out-pred.ada)^2)      
用LASSO,adaptive LASSO預測通貨膨脹時間序列|附代碼資料

在這種情況下,adaLASSO産生了一個更精确的預測。一般來說,adaLASSO比簡單的LASSO的預測效果更好。然而,這不是一個絕對的事實。我見過很多簡單LASSO做得更好的案例。

參考文獻

[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/​​