我正在使用betategarch包,当我使用预测函数时,它给出了错误下标超出范围。我已经研究过它并且到目前为止没有得到任何结果,因为这个错误非常普遍,我不知道该怎么做以及如何解决它。我还使用(any(is.na)
函数检查我是否有任何NA,因为这是解决我问题的主张之一,但我没有任何缺失值。
LOTOS.daily.xts
[,1]
2005-06-10 -0.016807118
2005-06-13 0.006756782
2005-06-14 0.000000000
2005-06-15 0.000000000
2005-06-16 -0.016978337
2005-06-17 -0.003430535
2005-06-20 -0.003442344
2005-06-21 0.000000000
2005-06-22 0.027212564
2005-06-23 -0.006734032
2005-06-24 -0.006779687
2005-06-27 0.010152371
2005-06-28 0.000000000
2005-06-29 -0.003372684
2005-06-30 0.000000000
str(LOTOS.daily.xts)
An ‘xts’ object on 2005-06-10/2005-06-30 containing:
Data: num [1:15, 1] -0.01681 0.00676 0 0 -0.01698 ...
Indexed by objects of class: [POSIXct,POSIXt] TZ:
xts Attributes:
NULL
拟合我的数据:
Lotos.comp1 <- tegarch(LOTOS.daily.xts)
lotos.comp1.stdev <- fitted(Lotos.comp1)
测算:
set.seed(123)
predict(Lotos.comp1, n.ahead=60)
predict(Lotos.comp1, n.ahead=5)
Error in predict.tegarch(Lotos.comp1, n.ahead = 5) :
subscript out of bounds
谢谢
答案 0 :(得分:0)
据我所知,这显然是包中的一个错误。我认为它期望响应变量被命名为“y”,但这没有任何意义,即使在这种情况下,结果也是错误的,它似乎是predict.tegarch
所需的初始值的问题。它试图从模型中拉出它们。我让这个为我工作
Lotos.comp1 <- tegarch(LOTOS.daily.xts)
lotos.comp1.stdev <- fitted(Lotos.comp1)
cd <- coredata(fitted(Lotos.comp1, verbose=T))
initv <- data.frame(cd[,c(1, match(c("lambda", "lambdadagg"), colnames(cd)))])
names(initv)[1]<-"y"
predict(Lotos.comp1, initial.values=initv)
我不确定我是否抓住了初始值的正确值。我真的不知道这个特定的回归是如何工作的。 cd
矩阵中还有其他未命名的列也可能是它正在查找的“y”值,但是这些值是您输入到模型中的第一个值。
所以,就像我说的那样,这会让错误消失,但我无法确定它是否给出了正确答案。我肯定会用这个可重复的代码联系包工作者,看看他们是否也知道这个问题。 (仅供参考,我认为这可以查看使用getAnywhere("predict.tegarch")
找到的函数的来源。)
答案 1 :(得分:0)
我已联系过Mr.Sucarrat先生的作者,他亲切地解释了我所遇到的错误。问题来自于我使用xts对象或xts的特定构造而不是动物园。他的包装适用于动物园包装。所以,如果有人有同样的错误,我希望这有帮助。另外,感谢Genaro Sucarrat先生非常快速的回复以及对此错误的帮助。