2010-05-12 31 views
0

我想在我的時間系列工作中儘可能多地使用xts,因爲它似乎是建議的做事方式。但是,我收到了一個奇怪的錯誤。dynlm 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 

這是我的理解是,每當我有一個函數,動物園,我可以通過它的XTS,它應該只是工作,但顯然,這裏並非如此。

發生了什麼事?

感謝您的幫助。

回答

2

你說

據我的理解,每當 我有一個函數,動物園,我 可以通過它的XTS,它應該只是 工作,但顯然這是不是這裏的情況 。

我想知道你是否認爲zooxts是相同的。它們不是 - xts以有用的方式延伸zoo,以限制指數類型爲實際時間或日期對象(而不是任意指數,如zoo)的價格。現在

dynlm由阿希姆Zeileis誰是zoo作者之一寫成我不明白爲什麼你不能讓你的數據在xts但隨後傳遞給zoo(例如經由as.zoo(foo))調用時dynlm函數。

有沒有魔術'downcast'。但是你可以親手做。在你的問題的第一部分,你正在做什麼?好?

+0

謝謝澄清。這就說得通了。我不認爲它們是完全相同的,但我不清楚它們什麼時候可以或不可以互換。 – stevejb 2010-05-12 16:28:31

1

簡單的答案是,動物園和xts不是完全可以互換的,雖然有時他們是。

這是一個非常好的例子,當它們不可互換時。