Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment calculer une moyenne mobile par groupe dans R



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.

Vous pouvez utiliser la syntaxe de base suivante pour calculer une moyenne mobile par groupe dans 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'))

Cet exemple particulier calcule une moyenne mobile sur 3 périodes de variable2 , regroupée par variable1 .

Ce code utilise la fonction group_by() du package dplyr et la fonction rollmean() du package zoo .

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

Exemple : calculer la moyenne mobile par groupe dans R

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

#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

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

Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne appelée moving_avg3 qui affiche la valeur moyenne mobile des ventes sur 3 jours pour chaque magasin :

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 A         3        3.67
 4 A         5        4   
 5 A         6        4.67
 6 A         5        5.33
 7 A         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

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 moving_avg3 affiche la valeur moyenne mobile des ventes pour les 3 périodes précédentes.

Par exemple, la moyenne mobile des ventes sur 3 premiers jours pour le magasin A est calculée comme suit :

Moyenne mobile sur 3 jours = (4 + 4 + 3) / 3 = 3,67

La moyenne mobile des ventes sur les 3 prochains jours pour le magasin A est calculée comme suit :

Moyenne mobile sur 3 jours = (4 + 3 + 5) / 3 = 4

Et ainsi de suite.

Notez que les deux premières valeurs de la moyenne mobile pour chaque magasin sont NA car il n’y avait pas suffisamment de périodes précédentes à utiliser pour la moyenne mobile.

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 *