模型选择——AIC&BIC(matlab)

故事扮演 提交于 2019-11-30 02:36:21

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!