[英]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.