У меня есть код, который использует цикл для извлечения и сохранения AIC и остатков (в отдельных списках) из разных встроенных моделей Garch в пакете fGarch. Код работает отлично.
Затем мне нужно добавить модель EGarch в код, так как fGarch не может запустить EGarch, я использовал пакет rugarch.
Столбец даты был исключен из данных.
Предполагается, что список AIC содержит 17 переменных (потому что мои данные имеют 17 переменных), но он показывает только 6 переменных (даже если параметры в списке выглядят корректно, и даже количество параметров показывает 17, а в среде - 6 ). То же, что и остаточный список.
Дело в том, что код работает, когда я не включаю подходящую модель, используя пакет rugarch. Итак, я запускаю модель Egarch вручную одной серией и обнаружил, что остатки выглядят странно. Это показывает так:
1970-04-25 08:00:00 -2.817160e-03
1970-04-26 08:00:00 -3.876353e-03
Мои данные не включают дату, по словам, что правильная дата в моих данных - с 2012 по 2017 год. Здесь есть пост, в котором упоминается, что rugarch лучше работает с объектами xts и неправильно распознает дату на других объектах. Тем не менее, мои данные не включают столбец даты ..!? Очень признателен, если кто-нибудь может сообщить мне, что не так с результатами / кодом.
PreGFC=read.csv("PreGFCdata.csv")
library(fGarch)
library(rugarch)
pregfc=PreGFC[,-1] #exclude the date column
pregfc=na.omit(pregfc)
resid1=list()
aic1=list()
model1=list()
for (i in (1:length(pregfc[1,]))){
k.log<-pregfc[,i]
k.log.garch<-garchFit(~garch(1,1),data=k.log,cond.dist="ged",trace=FALSE)
k.log.arma10garch<-garchFit(~arma(1)+garch(1,1),data=k.log, cond.dist="ged",trace=FALSE)
k.log.arma11garch<-garchFit(~arma(1,1)+garch(1,1),data=k.log, cond.dist="ged",trace=FALSE)
k.log.arma01garch<-garchFit(~arma(0,1)+garch(1,1),data=k.log,cond.dist="ged",trace=FALSE)
k.log.egarch<-ugarchfit(ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1,1)),distribution.model="sged"), data=k.log)
resid1[[i]]=cbind(residuals(k.log.garch,standardize = TRUE),residuals(k.log.arma10garch, standardize = TRUE),residuals(k.log.arma11garch, standardize = TRUE),residuals(k.log.arma01garch, standardize = TRUE),residuals(k.log.egarch,standardize = TRUE))
aic1[[i]]=cbind(k.log.garch@fit$ics[1],k.log.arma10garch@fit$ics[1],k.log.arma11garch@fit$ics[1],k.log.arma01garch@fit$ics[1],infocriteria(k.log.egarch)[1])
model1[[i]]=cbind(k.log.garch@sigma.t,k.log.arma10garch@sigma.t,k.log.arma11garch@sigma.t,k.log.arma01garch@sigma.t, sigma(k.log.egarch))
}
В среде aic1 показывает «список из 6», в то время как предполагается, что это «список из 17». Так же, как остаток1. Однако, когда я открыл список aic1, результаты были точно такими же, как и у модели Egarch, как показано ниже:
list [[17]] List of length 17
[[1]] double [1x4] -7.75 -7.75 -7.75 -7.75
...
[[17]] double [1x4] -8.12 -8.12 -8.12 -8.12