SERIE INTERNAL NE TIME, ZOO, R
-
13-12-2019 - |
Domanda
Ho un oggetto Zoo in R che ha dati quotidiani e manca i fine settimana.Quando provo a eseguire alcune funzioni (ad esempio ar()
) sull'oggetto ottengo l'errore:
mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object
.
Se lo faccio:
mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs
.
Questo ha senso da quando Zoo cerca di convertire le cose in TS, i fine settimana sono intrinsecamente mancanti.Oltre a convertire le cose in un vettore usando coredata(zoo_object)
e eseguire generatori ar()
su questo, c'è un modo per raccontare a r per saltare i dati mancanti?
Grazie
Soluzione
Raccolgo che ogni giorno è rappresentato nei tuoi dati compresi i giorni feriali e i fine settimana, ma i giorni per i quali non sono presenti dati sono generatori di generazione (al contrario di non essere presenti a tutti).In futuro fornire alcuni dati di prova per una migliore chiarezza.
A parte la tua soluzione, se hai abbastanza dati è possibile eseguire un NA
su Dati settimanali solo estraendo l'ultimo valore non mancante o prima del venerdì:
library(zoo)
# test data
library(chron) # is.weekend
z <- zoo(100:130, as.Date("2000-01-01") + 0:30)
z[is.weekend(time(z))] <- NA
# extract Fridays
zfri <- na.locf(z)[format(time(z), "%w") == 5]
.
(Se non ci sono venerdì mancanti, può essere abbreviato sostituendo ar
con na.locf(z)
.)
Un'altra possibilità è usare 1, 2, ... per i tempi, ma dai loro i nomi nel qual caso potresti sempre scoprire quale data appartiene a verificare il nome del suo tempo.
z1 <- na.omit(z)
time(z1) <- setNames(seq_along(z1), time(z1))
. Altri suggerimenti
Metodo più semplice sarà convertire l'oggetto Zoo in Data.Frame Object by
Ad esempio (z1
è Zoo Object):
dz1<-data.frame(na.omit(z1))
.
Quindi convertilo in oggetto serie temporale.
ts(dz1, frequency=5)
.