Come calcolare una media mobile per gruppo in r


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

È possibile utilizzare la seguente sintassi di base per calcolare una media mobile di gruppo in R:

 library (dplyr)
library (zoo)

#calculate moving average by group
df %>%
  group_by(variable1)
  mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))

Questo particolare esempio calcola una media mobile di 3 periodi di variable2 , raggruppata per variable1 .

Questo codice utilizza la funzione group_by() del pacchetto dplyr e la funzione rollmean() del pacchetto zoo .

L’esempio seguente mostra come utilizzare questa funzione nella pratica.

Esempio: calcola la media mobile per gruppo in R

Supponiamo di avere il seguente frame di dati in R che mostra le vendite di un prodotto per giorni consecutivi in due negozi diversi:

 #create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ),
                 sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6))

#view data frame
df

   blind sales
1 to 4
2 to 4
3 to 3
4 to 5
5 to 6
6 to 5
7 to 7
8 B 4
9 B 8
10 B 7
11 B 2
12 B 5
13 B 4
14 B 6

Possiamo utilizzare la seguente sintassi per creare una nuova colonna denominata moving_avg3 che visualizza il valore delle vendite della media mobile di 3 giorni per ciascun negozio:

 library (dplyr)
library (zoo)

#calculate 3-day moving average of sales, grouped by store
df %>%
  group_by(store) %>%
  mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

# A tibble: 14 x 3
# Groups: store[2]
   store sales moving_avg3
           
 1 A 4 NA   
 2 A 4 NA   
 3 to 3 3.67
 4 to 5 4   
 5 to 6 4.67
 6 to 5 5.33
 7 to 7 6   
 8 B 4 NA   
 9 B 8 NA   
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5

Nota : il valore di k nella funzione rollmean() controlla il numero di periodi precedenti utilizzati per calcolare la media mobile.

La colonna moving_avg3 mostra il valore delle vendite della media mobile per i 3 periodi precedenti.

Ad esempio, la media mobile delle vendite nei primi 3 giorni per il negozio A viene calcolata come segue:

Media mobile a 3 giorni = (4 + 4 + 3) / 3 = 3,67

La media mobile delle vendite nei prossimi 3 giorni per il negozio A viene calcolata come segue:

Media mobile a 3 giorni = (4 + 3 + 5) / 3 = 4

E così via.

Tieni presente che i primi due valori della media mobile per ciascun negozio sono NA perché non c’erano abbastanza periodi precedenti da utilizzare per la media mobile.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

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 *