这个问题似乎是重复使用旧后不包含答案: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
编辑:
有要么在预测函数中的错误或者有没有文件限制可以预测哪种型号,因为即使是从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个预期的预测。然而这使得绝对不适合我。为什么我可以用2个术语而不是3来预测? – user2182066 2013-03-18 12:16:44
@ user2182066检查我更新的答案。这显然是预测方法中的一个错误。 – 2013-03-18 12:30:14
2013和错误仍然存在 – pyCthon 2013-09-13 03:02:20