функция цикла для функции ugarchfit в R

У меня есть данные временного ряда. Я вернул данные и получил отчет. Я стремлюсь выбрать наиболее подходящий ARMA-GARCHмодель из списка моделей. Вместо того, чтобы подгонять каждую модель отдельно, я хочу подогнать эти модели сразу и выбрать лучшую из них. Следовательно, я делаю функцию деформации, которая выполняет эту работу за меня. Например, хотелось бы подогнать несколько моделей:

         1- ARMA(1,1)-GARCH(1,1)
 
   2-  ARMA(1,2)-GARCH(1,1)

   3-  ARMA(1,3)-GARCH(1,1)

   4-  ARMA(2,1)-GARCH(1,1)

   5-  ARMA(2,2)-GARCH(1,1)

   6-  ARMA(2,3)-GARCH(1,1)

   .. ..

1-  ARMA(1,1)-GARCH(1,2)

2-  ARMA(1,1)-GARCH(1,3)

3-  ARMA(1,1)-GARCH(2,1)

и так далее. То есть давайте ARMA(p,q) диапазон от, и GARCH(p,q) также из 1:6. Как это сделать с помощью loopфункция в R. Я хотел бы вернуть наименьшие критерии ( AIC) среди всех моделей). Другими словами, я хотел бы, чтобы моя функция автоматически переключалась между разными заказами.

Вот моя попытка:

      GarchWarp <- function(n,dat,d){ ## n is the order of the model. d is the dimension of the data, for example, one series, two series. 

    GarchWarp <- function(n,dat,d){

meanModel <- varModel <- list()
  if(n > 1){
    for(i in 1:n){
  
  meanModel[i] <- list(armaOrder = c(i,i)) # ARMA
  varModel <- list(model = "sGARCH", garchOrder = c(i,i)) # GARCH
  uspec <- ugarchspec(varModel, mean.model = meanModel,
                      distribution.model = "std") # scaled Student t
  fitPC <- apply(dat, 2, function(x) ugarchfit(uspec, data = x))
  Recrit <- lapply(1:d, function(i) infocriteria(fitPC[[i]]))
    }
  }
  return(Recrit)
}

Моя функция цикла не работала

Образец моих данных: d=2.

          structure(c(0.00618750144876756, 0.00491561236137983, 0.00178237912109402, 
0.0052134813154332, 0.00129554617030614, 0.00232162478086728, 
0, 0.0320481134224817, 0.00881819387210214, 0, 0.00569585759405733, 
-0.00259413863757629), class = c("xts", "zoo"), index = structure(c(1514851200, 
1514937600, 1515024000, 1515110400, 1515369600, 1515456000), tzone = "UTC", tclass = c("POSIXct", 
"POSIXt")), .Dim = c(6L, 2L), .Dimnames = list(NULL, c("P_Sha", 
"P_Jap")))

0 ответов

Другие вопросы по тегам