Analizzando i dati giornalieri / settimanali usando ts in R

Ho appena iniziato a giocare con la class ts per analizzare alcuni dati di serie temporali che ho.

Ho la sensazione che la class ts non sia adatta per analizzare dati giornalieri o settimanali. Quasi tutti gli esempi che vedo sul web o in Cowpertwait e Metcalfe “Introductory Time Series with R” utilizzano dati mensili o annuali.

Mi piacerebbe usare ts per analizzare i dati settimanali, non è consigliabile?

Il problema principale è che la maggior parte delle persone che vogliono analizzare dati giornalieri o settimanali vogliono fare qualcosa di simile a utilizzare una frequenza di 365 giorni all’anno o 52 settimane all’anno, ma il numero di giorni o settimane in un anno non è 365 o 52 o addirittura costante. Se trascorri un giorno negli anni bisestili nel caso di dati giornalieri, diciamo, o usi 7 giorni per ogni settimana dell’anno tranne uno che ha 8 o 9 giorni nel caso di dati settimanali, diciamo, allora puoi fonderlo. Una varietà infinita di schemi è ansible.

Leggi questo thread per un esempio.

La class ts è adatta a qualsiasi tipo di dati che ha intervalli strettamente metronomici tra le osservazioni. Se quell’intervallo è di anni, mesi, giorni, minuti non fa alcuna differenza. Questo lo rende molto adatto a molti dati scientifici, ad esempio osservazioni meteorologiche.

Tuttavia, una grande class di dati relativi al tempo presenta lacune. Prendiamo ad esempio i prezzi di chiusura delle scorte che non esistono per i giorni del fine settimana. Per questo tipo di dati xts meglio usando i pacchetti xts (serie temporali estendibili) o zoo (le osservazioni ordinate di Z – dove Z è l’iniziale di uno degli autori del pacchetto).

Link a CRAN:

  • xts
  • zoo

Lo zoo funziona bene con i dati giornalieri. Ad esempio, se si dispone di una serie giornaliera di flussi di stream in un vettore Q e con timbri data corrispondenti D (creati utilizzando as.Date (), ad esempio).

Qz <- zoo (Q, order.by = D)

creerà un object che traccerà bene e puoi usare funzioni come window () per estrarre singoli anni es

window (Qz, start = as.Date (‘2000-01-01’), end = as.Date (‘2000-31-12’)

Controlla il pacchetto Zoo per maggiori informazioni.

L’unità di tempo non entra in gioco; solo il numero di punti dati per unità (la frequenza). Per quanto riguarda ts e le sue funzioni, un giorno è un anno è un decennio è un qualsiasi cosa. In nessun momento dirai che il tempo necessario è una settimana o un giorno. Non importa!

Suppongo che il problema con i dati giornalieri / settimanali sia che entrambi hanno unità di salto. Ogni quattro anni ha un ulteriore 366 giorni e ogni quattro anni ha 53 settimane. O ha avuto dal 1900. Quindi la “frequenza” è o non costante o una frazione. Altrimenti ts dovrebbe funzionare bene.

Il metodo più semplice per le settimane è utilizzare la data dell’inizio della settimana. Sui sistemi unixlike puoi anche usare le settimane ISO e c’è anche un pacchetto che li implementa. Naturalmente se i tuoi dati sono già in settimane, ne hai solo bisogno per etichettare i grafici, ecc.