繁体   English   中英

在R中拟合GARCH模型

[英]Fitting a GARCH model in R

我正在尝试在R中生成不同的GARCH模型,并通过AIC值(最小的是最合适的)比较它们。 我使用了数据集,并通过两种方法取出了AIC。

方法1:我获取了股票价格数据集(从2010年1月4日到2016年11月9日,s&p cnx nifty的收盘数据,每天),先记录日志,然后取差价,然后通过自动有价证券(关于对数值的差,我们将数据集称为A),发现最佳拟合为MA1,然后使用

Res2<- (MA1$residuals)^2

在方法一中,我使用了语法

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

它的AIC值为-23682.50。 使用了相同的软件包“ tseries”。

方法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中,并且模型本身适合ARIMA90,0,1)(即MA1)的GARCH(1,1)。

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

方法2的输出

我想问的是为什么两个值存在差异。 另外,如果有人可以向我解释如何使用fgarch软件包代替rugarch以及两者之间的区别,那将是非常有益的。

如果由于数据可用性而难以进行分析,请告知我。 如果问题的框架不正确,我们深表歉意。

这也许是有点晚了,但是这已经被问和前一阵子在回答关于跨验证这个帖子这个职位

总结上述答案:

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

对于rugarch软件包,您可以在此处第23页上看到AIC的规范。

对于您的特定示例,您可以通过以下任一方式将两者进行比较:

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

    要么

  • AIC从tseries系列中除以时间序列的长度,例如:

     CIC = AIC(garchoutput)/length(Res2) 

还有一件事。 据我所知,在将auto.arima模型拟合到数据之前,不需要对拟合的auto.arima对象的残差求平方。 如果您在使用方reisiduals你可能会比较两个非常不同的数据集的tseries机型,并在您的登录回报rugarch模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM