在R中拟合GARCH模型

问题描述:

我试图在R中求解不同的GARCH模型,并通过AIC值(最小的一个是最合适的)进行比较。我已经使用了一个数据集并通过两种方法取出了AIC。方法1:我取得了股票价格的数据集(2010年1月4日至2016年11月9日每日的关闭数据),取日志,然后通过差异,然后通过自动arima(on对数值的差异,让我们称之为)发现,最适合的还是MA1数据设置为A,然后得到使用在R中拟合GARCH模型

Res2<- (MA1$residuals)^2 

在方法一个残差广场,我已经使用的语法

garchoutput <- garch(Res2,order=c(1,1)) 
    CIC<-AIC(garchoutput) 

它给我一个-23682.50的AIC值。使用同一套包装'T系列'。

方法2:我使用的另一封装即“rugarch”,然后用于下面的语法

spec <- ugarchspec(variance.model = list(garchOrder = c(1, 1), 
            submodel = NULL, 
            external.regressors = NULL, 
            variance.targeting = FALSE), 

       mean.model  = list(armaOrder = c(0, 1), 
            external.regressors = NULL, 
            distribution.model = "norm", 
            start.pars = list(), 
            fixed.pars = list())) 

garch <- ugarchfit(spec = spec, data = A, solver.control = list(trace=0)) 
garch 

在这里,我把它在A中的数据和本身装配在GARCH(1,1)的模型ARIMA90 ,0,1)即MA1。

我收到的输出有很多数据,但它也有AIC值

OUTPUT of Method 2

我想询问是,为什么有两个值的差。此外,如果有人也可以向我解释如何使用软件包fgarch而不是rugarch以及两者之间的差异,那将是非常有益的。

请让我知道,因为数据的可用性,很难做分析。 道歉,如果问题没有适当的框架。

这可能有点晚了,但这个问题已经在交叉验证了一段时间之前在this postthis post

为了总结上述的答案:

某些软件包(例如fgarchrugarchrmgarch)使用缩放版本的AIC,这是基本上是“正常”的AIC除以长度的时间序列(通常用nN)表示。

对于rugarch包,您可以看到AIC here on page 23的规格。

为了您的具体的例子,你可以在两个由两种比较:

  • 乘以的AIC从rugarch与时间序列的长度

  • 从你的长度tseries的AIC R个时间系列,如:

    CIC = AIC(garchoutput)/length(Res2) 
    

一件事。据我所知,在将garch模型拟合到数据之前,您不需要从已装配的物体上对残差进行平方。如果您在tseries模型中使用平方的余数,并在rugarch模型中使用对数回归,则可以比较两组截然不同的数据。