Domanda

Sto cercando di utilizzare XTS il più possibile nel mio lavoro di serie storiche come sembra essere il modo suggerito di fare le cose. Tuttavia, ho ottenere un errore strano.

CPI.NSA e INT sono XTS oggetti.

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

E 'stata la mia comprensione che ogni volta che ho una funzione che prende zoo, posso passare un XTS e dovrebbe funzionare, ma è chiaro che non è il caso qui.

Che cosa sta succedendo?

Grazie per l'aiuto.

È stato utile?

Soluzione

Dici

  

E 'stato la mia comprensione che ogni volta   Ho una funzione che prende zoo, ho   può passare un XTS e dovrebbe solo   lavoro, ma chiaramente che non è il caso   qui.

e mi chiedo se si pensa che zoo e xts sono identici. Non sono - xts estende zoo in modi utili ai prezzi di limitare i tipi di indice di tempo o data oggetti reali (anziché indici arbitrari come ad zoo).

Ora, dynlm è scritto da Achim Zeileis, che è uno degli zoo autori come io non vedo perché non si può tenere i vostri dati in xts ma poi passare al zoo (tramite, ad esempio, as.zoo(foo)) quando si chiama il funzioni dynlm.

Non c'è magia 'bassi'. Ma si può fare a mano. Che è quello che sta facendo nella prima parte della sua domanda. Ok?

Altri suggerimenti

La semplice risposta è che lo zoo e XTS non sono completamente intercambiabili, anche se a volte sono.

Questo è davvero un buon esempio di un momento in cui non sono intercambiabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top