在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值
我想询问是,为什么有两个值的差。此外,如果有人也可以向我解释如何使用软件包fgarch而不是rugarch以及两者之间的差异,那将是非常有益的。
请让我知道,因为数据的可用性,很难做分析。 道歉,如果问题没有适当的框架。
这可能有点晚了,但这个问题已经在交叉验证了一段时间之前在this post或this post。
为了总结上述的答案:
某些软件包(例如fgarch
,rugarch
或rmgarch
)使用缩放版本的AIC,这是基本上是“正常”的AIC除以长度的时间序列(通常用n或N)表示。
对于rugarch
包,您可以看到AIC here on page 23的规格。
为了您的具体的例子,你可以在两个由两种比较:
-
乘以的AIC从
rugarch
与时间序列的长度或
-
除从你的长度
tseries
的AIC R个时间系列,如:CIC = AIC(garchoutput)/length(Res2)
一件事。据我所知,在将garch模型拟合到数据之前,您不需要从已装配的物体上对残差进行平方。如果您在tseries
模型中使用平方的余数,并在rugarch
模型中使用对数回归,则可以比较两组截然不同的数据。