在betategarch包中预测函数给出错误下标超出范围

时间:2014-05-13 17:55:23

标签: r predict

我正在使用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

谢谢

2 个答案:

答案 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先生非常快速的回复以及对此错误的帮助。