Analisi delle Serie Temporali con R: Una Guida per Principianti

Ciao a tutti, futuri maghi dei dati! Sono entusiasta di portarvi in un viaggio emozionante nel mondo dell'Analisi delle Serie Temporali utilizzando R. Come qualcuno che ha insegnato scienze informatiche per più anni di quanti mi piacerebbe ammettere (diciamo che ricordo quando i dischetti erano davvero flessibili), ho visto innumerevoli studenti trasformarsi da principianti assoluti in analisti fiduciosi. Quindi, non preoccupatevi se siete nuovi alla programmazione - inizieremo dalle basi e scaleremo insieme.

R - Time Series Analysis

Cos'è l'Analisi delle Serie Temporali?

Prima di immergerci nel codice R, parliamo di cosa sia effettivamente l'Analisi delle Serie Temporali. Immagina di monitorare il numero di coni gelato venduti nel tuo negozio locale ogni giorno per un anno. Quello è una serie temporale! È semplicemente una sequenza di punti dati misurati nel tempo. L'Analisi delle Serie Temporali ci aiuta a comprendere modelli, tendenze e fare previsioni basate su questi dati storici.

Ora, mettiamo le mani sporche con un po' di codice R!

Iniziare con R

Prima di tutto, dobbiamo installare R e RStudio. Pensa a R come al motore e a RStudio come al cruscotto elegante che rende la guida più facile. Una volta installati entrambi, apri RStudio e iniziamo!

# Questo è un commento in R. Non influisce sul codice, ma aiuta noi umani a capire cosa sta succedendo!

# Creiamo una serie temporale semplice
sales <- c(100, 120, 140, 160, 180)
dates <- as.Date(c("2023-01-01", "2023-01-02", "2023-01-03", "2023-01-04", "2023-01-05"))

# Ora, combiniamoli in un oggetto di serie temporale
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)

# Vediamo cosa abbiamo creato
print(ts_data)

In questo esempio, abbiamo creato una serie temporale molto semplice di dati di vendite quotidiane. La funzione c() viene utilizzata per creare un vettore (pensa a una lista) di valori. Poi utilizziamo la funzione ts() per creare un oggetto di serie temporale, specificando quando inizia e con quale frequenza misuriamo (quotidianamente, in questo caso).

Diversi Intervalli di Tempo

Ora, parliamo di diversi intervalli di tempo. I dati delle serie temporali possono essere giornalieri, mensili, trimestrali o qualsiasi altro intervallo tu possa immaginare. R è sufficientemente flessibile per gestirli tutti. Ecco alcuni esempi:

# Dati mensili
monthly_data <- ts(1:24, start = c(2022, 1), frequency = 12)

# Dati trimestrali
quarterly_data <- ts(1:8, start = c(2022, 1), frequency = 4)

# Dati annuali
yearly_data <- ts(1:10, start = 2013)

# Stampiamoli
print(monthly_data)
print(quarterly_data)
print(yearly_data)

In questi esempi, stiamo creando serie temporali con diverse frequenze. Per i dati mensili, utilizziamo frequency = 12 (12 mesi in un anno), per i dati trimestrali è frequency = 4 (4 trimestri in un anno), e per i dati annuali non dobbiamo specificare la frequenza.

Visualizzare le Serie Temporali

Si dice che un'immagine vale più di mille parole, e nell'analisi dei dati, questo non potrebbe essere più vero. Visualizziamo le nostre serie temporali:

# Prima, creiamo un set di dati più interessante
set.seed(123)  # Questo garantisce che tutti otteniamo gli stessi numeri "casuali"
sales <- 100 + cumsum(rnorm(100))  # Somma cumulativa di numeri casuali
dates <- seq(as.Date("2023-01-01"), by = "day", length.out = 100)
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)

# Ora, disegnamo il grafico
plot(ts_data, main = "Vendite Giornaliere", xlab = "Data", ylab = "Vendite")

Questo codice crea un set di dati di vendite più realistico con un po' di aleatorietà, poi lo traccia. La funzione plot() è un modo rapido e semplice per visualizzare la tua serie temporale.

Serie Temporali Multiple

Nel mondo reale, spesso vogliamo analizzare insieme più serie temporali. Creiamo e visualizziamo più serie:

# Creiamo due serie temporali
set.seed(123)
sales_A <- 100 + cumsum(rnorm(100))
sales_B <- 120 + cumsum(rnorm(100))

# Le combiniamo in una serie temporale multipla
multi_ts <- ts(cbind(sales_A, sales_B), start = c(2023, 1), frequency = 365)

# Tracciamo entrambe le serie
plot(multi_ts, main = "Confronto Vendite", xlab = "Data", ylab = "Vendite", col = c("blue", "red"))
legend("topleft", legend = c("Prodotto A", "Prodotto B"), col = c("blue", "red"), lty = 1)

Qui, abbiamo creato due serie e le abbiamo combinate utilizzando cbind(). Poi le tracciamo insieme, utilizzando colori diversi per distinguerle.

Metodi Comuni di Analisi delle Serie Temporali

Ora che abbiamo coperto le basi, esaminiamo alcuni metodi comuni utilizzati nell'Analisi delle Serie Temporali. Ecco una tabella riassuntiva di questi metodi:

Metodo Descrizione Funzione in R
Media Mobile Smussa le fluttuazioni a breve termine ma() dal pacchetto forecast
Smoothing Esponenziale Dà più peso alle osservazioni recenti ets() dal pacchetto forecast
ARIMA Media Mobile Autoregressiva Integrata arima() o auto.arima()
Decomposizione Scompone la serie in componenti tendenza, stagionale e residuale decompose() o stl()

Proviamo uno di questi metodi - la decomposizione:

# Decomponiamo la nostra serie temporale
decomposed <- decompose(ts_data)

# Tracciamo la decomposizione
plot(decomposed)

Questa decomposizione spezza la nostra serie temporale in tre componenti: tendenza, stagionale e casuale. È un ottimo modo per comprendere i modelli sottostanti nei tuoi dati.

Conclusione

Congratulations! You've just taken your first steps into the fascinating world of Time Series Analysis with R. We've covered the basics of creating, visualizing, and analyzing time series data. Remember, like learning any new skill, practice makes perfect. Don't be afraid to experiment with different datasets and methods.

In my years of teaching, I've found that the students who excel are those who approach each problem with curiosity and persistence. So, keep exploring, keep questioning, and most importantly, keep coding!

Credits: Image by storyset