Эта проблема, как представляется, дубликат со старой должности, которая не содержит ответа: R error when using predict() function with class = fGarch
ошибка вытекает из случая, когда либо (i - 1)
или (i - u2)
становится отрицательным, поэтому индекс что-то вроде -1 : 2, что запрещено.
После проверки методы предсказать подогнанный объект через getMethod("predict","fGARCH")
, это выглядит как происходит ошибка здесь (опущена несущественные части):
a_vec <- rep(0, (n.ahead))
u2 <- length(ar)
a_vec[1] = ar[1] + ma[1]
if ((n.ahead - 1) > 1) {
for (i in 2:(n.ahead - 1)) {
a_vec[i] <- ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)]
}
}
Итак, как i
всегда больше 1, то ошибка происходит потому, что
(i - u2) < 0 <==> i < u2 <==> i < length(ar)
В чем смысл? Для меня это не так, как это выглядит, если часть вашей модели больше 2, это всегда приводит к ошибке.
Код немного странно и потому, что a_vec[i]
скалярная и
ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)] + ...
может быть вектором, длина которого больше 1.
EDIT:
Существует либо ошибка в функции прогнозирования или есть недокументированные ограничения, какие модели могут быть предсказаны, так как даже пример из руководства fGarch
дает ошибку, если он слегка изменен:
set.seed(123)
fit = garchFit(~arma(2,0)+garch(1,1), data = garchSim(), trace = FALSE)
predict(fit, n.ahead = 4)
meanForecast meanError standardDeviation
1 -7.512452e-04 0.004161189 0.004161189
2 -1.107497e-03 0.003958535 0.003878321
3 2.617933e-04 0.003782362 0.003665391
4 6.264252e-05 0.003616971 0.003507209
Warning message:
In a_vec[i] <- ar[1:min(u2, i - 1)] * a_vec[(i - 1):(i - u2)] + :
number of items to replace is not a multiple of replacement length
Основываясь на Changelog of fGarch package, кажется, что эта проблема была исправлена несколько лет назад, но, видимо, она всплыла, или не был должным образом исправлено:
2009-11-05 chalabi
* R/methods-predict.R: small changes in predict,fGARCH-method to
correct its output when n.ahead=1 since addition of conditional
errors.
Я хотел бы предложить вам связаться с сопровождающим пакета.
Я повторил модель так, чтобы она теперь имела спецификации ARMA (2,2) + GARCH (1,1), чтобы получить прогноз на 10 периодов вперед. Однако это делает absolutley никакого смысла для меня. Почему я могу прогнозировать с 2-го уровня, но не 3? – user2182066
@ user2182066 проверить мой обновленный ответ. Это, очевидно, ошибка в методе прогнозирования. –
2013 и ошибка все еще – pyCthon