模型選擇——AIC&BIC(matlab)


在建立ARMA和GARCH模型的時候,我們常常需要涉及到模型階數(如GARCH(p,q)中p和q)的選擇問題,在這里我們使用AIC和BIC兩個計算參數進行判斷:

  • 什么是AIC和BIC?

兩者定義來源於信息准則:研究者通過加入模型復雜度的懲罰項來避免過擬合問題,隨后推出了兩個優選模型的准則:赤池信息准則(Akaike Information Criterion,AIC)和貝葉斯信息准則(Bayesian Information Criterion,BIC)。

AIC(赤池弘次,1974)的定義為: 

           AIC = 2*N - Ln(L)    * 這里N表示  模型參數個數  的個數,L表示模型得出的  似然函數  最優值

所以根據AIC的定義可知,當模型越復雜或者似然函數越小,AIC值越大。而我們的目標一般是選擇AIC較小的模型(即希望模型簡單,並且模型的擬合度高,其中對參數N的要求表示了我們不希望模型出現過擬合的情況)。

BIC(Schwarz,1978)的定義為:

           BIC = N*Ln(n) - Ln(L)    * 這里N表示 模型參數個數  的個數,L表示模型得出的  似然函數  最優值, n是模型中的  觀測值數量  。

從AIC模型中我們可以看到沒有考慮觀測值數量,從統計學知識中我們可以知道隨着觀測值數量的增加,誤差也可能隨之上升,所以BIC中引入了觀測值數量對模型進行判斷。同AIC,BIC也是越小越好。

  • 如何通過matlab實現AIC和BIC的判斷?

 

1 P = 3; Q = 3; LOGL = zeros(P,Q); PQ = zeros(P,Q); n = length(Rt);
2 for p = 1:P
3     for q = 1:Q
4         Mdl = arima('ARLags',1,'Variance',garch(p,q),'Distribution','t');
5         [EstMdl,EstParamCov,LogL] = estimate(Mdl,Rt); %分別返回估計模型;估計參數之間的協方差矩陣,以及對數似然函數最優值
6         numParams = sum(any(EstParamCov)); %返回有多少個估計參數
7         [aic(p,q),bic(p,q)] = aicbic(LogL,numParams,n);
8     end
9 end
N = min(min(bic)); [p,q] = find(N==bic);

最后p和q就返回了我們需要的GARCH參數;當然,在這個代碼中我們用了ARLAGS=1,前提是用ARCH檢驗的時候看看AR效應(archtest)

不過好像比較簡單的做法一般都是用 AR(1)-garch(1,1)-T模型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM