Frage
Ich versuche xts so viel wie möglich in meinen Zeitreihen Arbeit zu verwenden, wie es die vorgeschlagene Art und Weise, Dinge zu tun zu sein scheint. Allerdings hat ich einen seltsamen Fehler.
CPI.NSA und INT sind xts Objekte.
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
Es war mein Verständnis, dass, wenn ich eine Funktion habe, den Zoo nimmt, ich habe es eine xts passieren kann und es sollte nur Arbeit, aber eindeutig das ist hier nicht der Fall.
Was ist los?
Danke für die Hilfe.
Lösung
Sie sagen
Es war mein Verständnis, dass, wann immer Ich habe eine Funktion, den Zoo, I nimmt kann es eine xts passieren und es sollte nur Arbeit, aber deutlich, dass nicht der Fall ist hier.
, und ich frage mich, ob Sie diese zoo
denken und xts
sind identisch. Sie sind nicht - xts
erstreckt zoo
in nützlicher Weise bei den Preisen für die Indextypen aktuelle Uhrzeit oder Datum Objekte zu begrenzen (und nicht beliebiger Indizes wie für zoo
).
Nun dynlm
von Achim Zeileis geschrieben, die einer der Autoren von zoo
ist, wie ich sehe nicht, warum Sie nicht Ihre Daten in xts
halten können, aber dann zoo
passieren (über zB as.zoo(foo)
), wenn der Aufruf dynlm
Funktionen.
Es gibt keine magische ‚gesenkten‘. Aber man kann es von Hand machen. Welches ist, was Sie im ersten Teil Ihrer Frage zu tun. Ok?
Andere Tipps
Die einfache Antwort ist, dass Zoo und xts nicht vollständig austauschbar, obwohl manchmal sie sind.
Dies ist ein wirklich gutes Beispiel für eine Zeit, wenn sie nicht austauschbar sind.