在建立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 endN = min(min(bic)); [p,q] = find(N==bic);
最后p和q就返回了我们需要的GARCH参数;当然,在这个代码中我们用了ARLAGS=1,前提是用ARCH检验的时候看看AR效应(archtest)
不过好像比较简单的做法一般都是用 AR(1)-garch(1,1)-T模型