Comment calculer une moyenne mobile en R (avec exemple)



Dans l’analyse des séries chronologiques, une moyenne mobile représente la valeur moyenne d’un certain nombre de périodes précédentes.

Le moyen le plus simple de calculer une moyenne mobile dans R est d’utiliser la fonction rollmean() du package zoo :

library(dplyr)
library(zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k=3, fill=NA, align='right'))

Cet exemple particulier calcule une moyenne mobile sur 3 jours pour la colonne intitulée valeurs .

L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Exemple : calculer la moyenne mobile en R

Supposons que nous ayons le bloc de données suivant dans R qui montre les ventes d’un produit pendant 10 jours consécutifs :

#create data frame
df <- data.frame(day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day 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

Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne appelée avg_sales3 qui affiche la valeur moyenne mobile des ventes des 3 jours précédents dans chaque ligne du bloc de données :

library(dplyr)
library(zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k=3, fill=NA, align='right'))

   day sales avg_sales3
1    1    25         NA
2    2    20         NA
3    3    14   19.66667
4    4    16   16.66667
5    5    27   19.00000
6    6    20   21.00000
7    7    12   19.66667
8    8    15   15.66667
9    9    14   13.66667
10  10    19   16.00000

Remarque : La valeur de k dans la fonction rollmean() contrôle le nombre de périodes précédentes utilisées pour calculer la moyenne mobile.

La colonne avg_sales3 affiche la valeur moyenne mobile des ventes pour les 3 périodes précédentes.

Par exemple, la première valeur de 19,66667 est calculée comme suit :

Moyenne mobile sur 3 jours = (25 + 20 + 14) / 3 = 19,66667

Vous pouvez également calculer plusieurs moyennes mobiles à la fois en utilisant plusieurs fonctions rollmean() dans la fonction mutate() .

Par exemple, le code suivant montre comment calculer la moyenne mobile des ventes sur 3 et 4 jours :

library(dplyr)
library(zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k=3, fill=NA, align='right'),
         avg_sales4 = rollmean(sales, k=4, fill=NA, align='right'))

   day sales avg_sales3 avg_sales4
1    1    25         NA         NA
2    2    20         NA         NA
3    3    14   19.66667         NA
4    4    16   16.66667      18.75
5    5    27   19.00000      19.25
6    6    20   21.00000      19.25
7    7    12   19.66667      18.75
8    8    15   15.66667      18.50
9    9    14   13.66667      15.25
10  10    19   16.00000      15.00

Les colonnes avg_sales3 et avg_sales4 affichent respectivement la moyenne mobile des ventes sur 3 et 4 jours.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment tracer plusieurs colonnes dans R
Comment faire la moyenne sur les colonnes dans R
Comment calculer la moyenne par groupe dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *