Come calcolare una media mobile esponenziale in r


Nell’analisi delle serie temporali, una media mobile è semplicemente il valore medio di un numero di periodi precedenti.

Una media mobile esponenziale è un tipo di media mobile che attribuisce maggiore peso alle osservazioni recenti, il che significa che è in grado di catturare le tendenze recenti più rapidamente.

Questo tutorial spiega come calcolare una media mobile esponenziale in R.

Esempio: media mobile esponenziale in R

Supponiamo di avere il seguente frame di dati in R:

 #create data frame
df <- data.frame(period=1:10,
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   period sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

Possiamo utilizzare la funzione movavg() del pacchetto pracma per calcolare la media mobile esponenzialmente ponderata per un numero di periodi precedenti.

Questa funzione utilizza la seguente sintassi:

movavg(x, n, type=c(“s”, “t”, “w”, “m”, “e”, “r”))

Oro:

  • x: serie temporali sotto forma di vettore digitale
  • n: numero di periodi precedenti da utilizzare per la media
  • type: Tipo di media mobile da calcolare. Useremo “e” per la media mobile ponderata esponenziale.

Ad esempio, ecco come calcolare la media mobile ponderata in modo esponenziale utilizzando i quattro periodi precedenti:

 library (pracma)

#create new column to hold 4-day exponentially weighted moving average
df$EWM_4day <- movavg (df$sales, n=4, type=' e ')

#view DataFrame 
df

        period sales 4dayEWM
0 1 25 25.000000
1 2 20 23.000000
2 3 14 19.400000
3 4 16 18.040000
4 5 27 21.624000
5 6 20 20.974400
6 7 12 17.384640
7 8 15 16.430784
8 9 14 15.458470
9 10 19 16.875082

Possiamo anche utilizzare la libreria di visualizzazione ggplot2 per visualizzare le vendite relative alla media mobile esponenziale ponderata di 4 giorni:

 library (ggplot2)
library (reshape2)

#melt data into format for easy plotting
df <- melt (df, id.vars = ' period ', variable.name = ' series ')

#plot sales vs. 4-day exponentially weighted moving average
ggplot(df, aes (period, value)) +
  geom_line( aes (color=series))

Media mobile ponderata esponenzialmente in R

La linea rossa mostra le vendite durante ciascun periodo e la linea blu mostra la media mobile esponenziale ponderata.

Risorse addizionali

Come tracciare più colonne in R
Come calcolare la media sulle colonne in R
Come calcolare la media per gruppo in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *