【问题标题】:predict function in betategarch package gives error subscript out of boundsbetategarch 包中的预测函数给出错误下标超出范围
【发布时间】:2014-05-13 17:55:22
【问题描述】:

我正在使用 betategarch 包,当我使用 predict 函数时,它给了我错误下标超出范围。我已经对其进行了研究,但到目前为止没有得到任何结果,因为这个错误非常普遍,我不知道该怎么做以及如何解决它。我还使用(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

谢谢

【问题讨论】:

  • 该信息不足以让其他任何人重现该错误。请提供可以重现您遇到的问题的一小部分数据。请参阅How to make a great R reproducible example? 了解更多信息。
  • 谢谢你的回答,但我想知道我需要包含多大的数据,我有一个从 2005 年开始的每日数据。也许我可以通过某种方式将我的数据上传到这里?
  • 最好只发布尽可能少的数据来重现错误。它不一定是真实数据。如链接所示,如果这更容易,您可以创建一个带有随机值的假数据集。如果您要求某人从其他地方下载数据,那么您获得响应的可能性就会降低。
  • 谢谢。我添加了最少的数据来重现我的错误。
  • 另外,作为 UofM 的毕业生,我不得不说是蓝色的!

标签: r predict


【解决方案1】:

据我所知,这显然是包中的一个错误。我认为它期望响应变量被命名为“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") 找到的函数的来源找到了这一点。

【讨论】:

    【解决方案2】:

    我已经联系了包 Mr.Sucarrat 的作者,他友好地解释了我遇到的错误。问题来自我使用 xts 对象或 xts 的特定构造而不是动物园。他的包与 zoo 包配合得很好。因此,如果有人遇到同样的错误,我希望这会有所帮助。另外,感谢 Genaro Sucarrat 先生的快速响应和对这个错误的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      相关资源
      最近更新 更多