0

我试图在我的时间序列工作中尽可能多地使用 xts,因为它似乎是建议的做事方式。但是,我遇到了一个奇怪的错误。

CPI.NSA 和 INT 是 xts 对象。

library(dynlm)
CPI.NSA.x <- CPI.NSA[dr1]
INT.x <- INT[dr1]

CPI.NSA.z <- as.zoo(CPI.NSA.x)
INT.z <- as.zoo(INT.x)

> dynlm(CPI.NSA.z ~ INT.z + L(CPI.NSA.z, 1))

Time series regression with "zoo" data:
Start = 1953-02-01, End = 1971-06-01

Call:
dynlm(formula = CPI.NSA.z ~ INT.z + L(CPI.NSA.z, 1))

Coefficients:
    (Intercept)            INT.z  L(CPI.NSA.z, 1)  
     -0.0006795        1.0440174       -0.0869050  


> dynlm(CPI.NSA.x ~ INT.x + L(CPI.NSA.x, 1))
Error in `[.xts`(a, match0(indexes, attr(a, "index")), , drop = FALSE) : 
  i is out of range

我的理解是,每当我有一个需要 zoo 的函数时,我都可以将它传递给 xts,它应该可以正常工作,但显然这里不是这种情况。

这是怎么回事?

谢谢您的帮助。

4

2 回答 2

2

你说

我的理解是,每当我有一个需要 zoo 的函数时,我都可以将它传递给 xts,它应该可以正常工作,但显然这里不是这种情况。

我想知道你是否这么认为zoo并且xts是相同的。它们不是——以将索引类型限制为实际时间或日期对象(而不是像 for 那样的任意索引)为代价以有用的方式xts扩展。 zoozoo

现在,dynlm由 Achim Zeileis 编写,他是 的作者之一,zoo因为我不明白为什么您不能将数据保存在其中,然后在调用函数时xts传递给zoo(通过,例如)。as.zoo(foo)dynlm

没有神奇的“沮丧”。但是你可以用手来做。这就是您在问题的第一部分中所做的事情。好的?

于 2010-05-12T15:33:48.840 回答
1

简单的答案是 zoo 和 xts 并不是完全可以互换的,尽管有时它们是可以互换的。

这是它们不可互换的时代的一个很好的例子。

于 2010-05-12T15:46:32.167 回答