在建立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模型