XTS Problema com Dynlm
-
26-09-2019 - |
Pergunta
Estou tentando usar o XTS o máximo possível no meu trabalho de série temporal, pois parece ser a maneira sugerida de fazer as coisas. No entanto, tenho um erro estranho.
CPI.NSA e INT são objetos 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
Entendia -me que sempre que tenho uma função que leva o zoológico, posso passar um XTS e deve funcionar, mas claramente esse não é o caso aqui.
O que está acontecendo?
Obrigado pela ajuda.
Solução
Você diz
Entendia -me que sempre que tenho uma função que leva o zoológico, posso passar um XTS e deve funcionar, mas claramente esse não é o caso aqui.
E eu estou me perguntando se você acha que zoo
e xts
são idênticos. Eles não são -- xts
estende -se zoo
de maneiras úteis nos preços de limitar os tipos de índice a objetos reais de tempo ou data (em vez de índices arbitrários como para zoo
).
Agora, dynlm
é escrito por Achim Zeileis, que é um dos autores de zoo
Como não vejo por que você não pode manter seus dados xts
Mas depois passe para zoo
(via, por exemplo, as.zoo(foo)
) ao ligar para o dynlm
funções.
Não há 'abatido' mágica. Mas você pode fazer isso à mão. Que é o que você está fazendo na primeira parte da sua pergunta. OK?
Outras dicas
A resposta simples é que o zoológico e os XTs não são completamente intercambiáveis, embora às vezes sejam.
Este é um exemplo muito bom de uma época em que eles não são intercambiáveis.