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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top