gpt4 book ai didi

r - ARMA GARCH 模型的预测错误

转载 作者:行者123 更新时间:2023-12-03 02:45:46 46 4
gpt4 key购买 nike

我有大约五年的一年期利率数据。我想为此利率创建一个模型,并且得出的结论是 ARMA(3,2) 和 GARCH(1,1) 是合适的。因此,我使用下面的代码来获得我的估计。

> stibor1ydarmagarch=garchFit(formula=~arma(3,2)+garch(1,1),
data=stibor1yd,
cond.dist="std",
trace=FALSE)

这工作得很好,我得到了很好的估计。然而,当涉及到预测时,我遇到了错误。有人知道我为什么会收到错误以及如何解决它吗?

> predict(stibor1ydarmagarch, n.ahead=10)
Error in a_vec[(i - 1):(i - u2)] : only 0's may be mixed with negative subscripts

最佳答案

此问题似乎与不包含答案的旧帖子重复: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)

这有什么意义吗?对我来说不是,因为看起来如果你的模型的 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.

我建议您联系该软件包的维护者。

关于r - ARMA GARCH 模型的预测错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475869/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com