[英]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值
我想问的是为什么两个值存在差异。 另外,如果有人可以向我解释如何使用fgarch软件包代替rugarch以及两者之间的区别,那将是非常有益的。
如果由于数据可用性而难以进行分析,请告知我。 如果问题的框架不正确,我们深表歉意。
这也许是有点晚了,但是这已经被问和前一阵子在回答关于跨验证这个帖子或这个职位 。
总结上述答案:
一些软件包(例如fgarch
, rugarch
或rmgarch
)使用AIC的缩放版本,该版本基本上是“正常” AIC除以时间序列的长度(通常由n或N表示)。
对于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.