Accueil Science des données How to R - Guide du débutant Analyse des séries temporelles

How to R - Guide du débutant Analyse des séries temporelles

Le guide "How to R - Beginner Guide Time Series Analysis" présente une analyse de séries temporelles avec R, en esquissant les principales étapes de la préparation des données, de la modélisation et de la visualisation. L'utilisation des packs R tidyverse, tsibble et fable est mise en avant.

Table des matières

Analyse de séries temporelles avec R

Nous nous limiterons dans ce petit tutoriel à esquisser brièvement les étapes essentielles de l'analyse des séries temporelles dans le langage de programmation R.

Il s'agit de

  • Préparation des données,
  • Modélisation et
  • Visualisation.  

Nous utilisons pour cela les paquets R tidyverse, tsibble et fable.

Préparation des données 

En règle générale, toutes les fonctions nécessaires à la préparation générale des données sont contenues dans le paquet "tidyverse". Pour la préparation des données dans le style "tidy", le paquet "tsibble" est toutefois également nécessaire. Tout d'abord, nous chargeons les paquets et les données :

				
					library(fable) 

library(tsibble) 
library(tidyverse, quietly = TRUE, warn.conflicts = FALSE) 

raw_data  = read_delim("~/Documents/Progonosewerkstatt/Peer_Labs/R/2_DataPreparation/01_Data/Company.csv", delim=";") 

glimpse(raw_data) 

## Rows: 101 
## Columns: 9 
## $ Month       <dttm> 2011-01-01, 2011-02-01, 2011-03-01, 2011-04-01, 2011-05-… 
## $ Germany     <dbl> 19722000, 25062000, 47066000, 52625000, 66489000, 5660100… 
## $ Canada      <dbl> 1809000, 2206000, 3035000, 3793000, 4813000, 4370000, 454… 
## $ Switzerland <dbl> 3624000, 4972000, 7010000, 7084000, 9452000, 7971000, 733… 
## $ Austria     <dbl> 1436000, 2390000, 6556000, 7544000, 9069000, 8154000, 817… 
## $ US          <dbl> 3598000, 3349000, 6101000, 6098000, 6935000, 8644000, 757… 
## $ France      <dbl> 4861000, 5465000, 8440000, 8223000, 9706000, 8809000, 806… 
## $ Sweden      <dbl> 10723000, 12333000, 23562000, 30595000, 46253000, 3886900… 
## $ China       <dbl> 8103000, 4040000, 25974000, 34776000, 31125000, 31576000,… 

 

Im “tidy”-Style werden die Daten im Long-Format benötigt. Wir nutzen die “pivot_longer” Funktion. Anschliessend konvertieren wir das tibble-Objekt (= tidy dataframe) in ein tsibble Objekt, welches ein dataframe für Zeitreihen ist. 

prep_data = raw_data %>%  
  pivot_longer(., cols = 2:9, names_to = "Subsidiary", values_to = "Revenues") %>%  
  mutate(Month = yearmonth(Month)) %>%  
  tsibble(., key = Subsidiary, index = Month) 
glimpse(prep_data) 

## Rows: 808 
## Columns: 3 
## Key: Subsidiary [8] 
## $ Month      <mth> 2011 Jan, 2011 Feb, 2011 Mar, 2011 Apr, 2011 May, 2011 Jun… 
## $ Subsidiary <chr> "Austria", "Austria", "Austria", "Austria", "Austria", "Au… 
## $ Revenues   <dbl> 1436000, 2390000, 6556000, 7544000, 9069000, 8154000, 8173… 
				
			

Pour avoir une idée des données, commençons par les regarder.

				
					prep_data %>% autoplot(Revenues) 
				
			
Plot dans R : graphique à partir de Revenues par mois et par pays

Nous constatons qu'il y a une rupture dans les données entre 2016 et début 2020. Après avoir consulté l'expert technique, nous savons qu'il s'agit d'un changement de système et que toutes les valeurs doivent être non négatives. Nous corrigeons cela.

				
					prep_data = prep_data %>% 
  mutate(Revenues = abs(Revenues))
prep_data %>% autoplot(Revenues)

				
			
Plot in R Revenues par mois et par pays

On voit maintenant que les séries chronologiques disponibles ont un fort caractère saisonnier. Les données sont ainsi traitées et peuvent être modélisées.

Modélisation de l'analyse des séries temporelles

Deux modèles très répandus, disponibles dans le package Fable, sont ETS et ARIMA. Ces modèles sont indiqués avec une représentation de formulaire compacte. La variable de réponse (Revenues) et toutes les transformations sont contenues dans le côté gauche, tandis que la spécification du modèle se trouve dans le côté droit de la formule. Si un modèle n'est pas entièrement spécifié (ou si le côté droit de la formule est complètement absent), les composants non spécifiés sont automatiquement sélectionnés.

Nous utilisons les deux classes de modèles pour trouver le meilleur modèle pour chaque série chronologique.

				
					fit <- prep_data %>%
  model(
    ets = ETS(Revenues),
    arima = ARIMA(Revenues)
  )
## Warning in sqrt(diag(best$var.coef)): NaNs produced

				
			

Avec coef(), on peut accéder à tous les paramètres d'ajustement d'un modèle.

				
					fit %>% coef()
## # A tibble: 145 x 7
##    Subsidiary .model term  estimate std.error statistic p.value
##    <chr>      <chr>  <chr>    <dbl>     <dbl>     <dbl>   <dbl>
##  1 Austria    ets    alpha  2.21e-1        NA        NA      NA
##  2 Austria    ets    gamma  1.00e-4        NA        NA      NA
##  3 Austria    ets    l      6.43e+6        NA        NA      NA
##  4 Austria    ets    s0    -4.15e+6        NA        NA      NA
##  5 Austria    ets    s1    -3.35e+5        NA        NA      NA
##  6 Austria    ets    s2     2.47e+6        NA        NA      NA
##  7 Austria    ets    s3     2.42e+6        NA        NA      NA
##  8 Austria    ets    s4     1.35e+6        NA        NA      NA
##  9 Austria    ets    s5     1.78e+6        NA        NA      NA
## 10 Austria    ets    s6     1.82e+6        NA        NA      NA
## # … with 135 more rows

				
			

glance permet de visualiser différentes caractéristiques statistiques de l'adaptation du modèle à la série temporelle.

				
					fit %>% glance
## # A tibble: 16 x 12
##    Subsidiary .model   sigma2 log_lik   AIC  AICc   BIC      MSE     AMSE
##    <chr>      <chr>     <dbl>   <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
##  1 Austria    ets    3.51e+11  -1568. 3166. 3172. 3205.  3.02e11  3.14e11
##  2 Canada     ets    1.08e- 2  -1529. 3088. 3093. 3127.  1.47e11  1.53e11
##  3 China      ets    1.84e+13  -1768. 3566. 3572. 3605.  1.59e13  2.76e13
##  4 France     ets    5.57e+11  -1591. 3213. 3218. 3252.  4.80e11  4.79e11
##  5 Germany    ets    1.98e+13  -1772. 3573. 3579. 3613.  1.71e13  1.73e13
##  6 Sweden     ets    1.08e+13  -1741. 3512. 3517. 3551.  9.26e12  1.02e13
##  7 Switzerla… ets    3.61e+11  -1569. 3169. 3175. 3208.  3.11e11  3.20e11
##  8 US         ets    5.81e- 3  -1568. 3172. 3181. 3219.  3.20e11  3.23e11
##  9 Austria    arima  4.55e+11  -1308. 2624. 2625. 2634. NA       NA      
## 10 Canada     arima  1.82e+11  -1285. 2581. 2582. 2593. NA       NA      
## 11 China      arima  2.07e+13  -1492. 2992. 2992. 3002. NA       NA      
## 12 France     arima  5.13e+11  -1329. 2672. 2674. 2690. NA       NA      
## 13 Germany    arima  2.20e+13  -1498. 3003. 3003. 3010. NA       NA      
## 14 Sweden     arima  1.10e+13  -1468. 2944. 2944. 2954. NA       NA      
## 15 Switzerla… arima  4.56e+11  -1322. 2655. 2655. 2667. NA       NA      
## 16 US         arima  4.78e+11  -1311. 2633. 2634. 2648. NA       NA      
## # … with 3 more variables: MAE <dbl>, ar_roots <list>, ma_roots <list>


				
			

Avec la fonction Forecast, nous générons les prévisions pour chaque série temporelle à partir des modèles.

				
					fc = fit %>% 
  forecast(h = "2 years")

				
			

Enfin, nous visualisons les prévisions. On peut voir que les deux méthodes captent les modèles des différentes séries temporelles et les intègrent dans les prévisions de leur méthodologie respective, comme c'est le cas par exemple pour le "creux de l'été" dans la filiale française ou la tendance à la hausse dans la société américaine.

				
					fc %>% autoplot(prep_data) +
  ggtitle("Reveunes of Company's Subsidiaries")

				
			
Prévision dans R sous forme de tracé

Télécharger l'article wiki au format PDF

En savoir plus ?

Vous souhaitez approfondir ce sujet ? Dans ce cas, nous serions ravis de discuter personnellement avec vous des domaines d'application de R - volontiers aussi en relation avec les produits Analytics de SAP. N'hésitez pas à prendre contact avec nous !

Votre contact Analytics
Christiane Maria Kallfass est spécialiste du recrutement et du marketing chez s-peers AG
Christiane Kallfass
Spécialiste en recrutement et marketing

Publié par :

Dr. Stefan Lieder

Ancien directeur de l'atelier Data Science

autor:IN

Cet article vous a-t-il plu ?

Cet article vous a-t-il été utile ?

Cliquez sur une étoile pour évaluer !

Note moyenne 5 / 5.
Nombre d'évaluations : 1

Aucun vote pour l'instant ! Soyez la première personne à noter ce post !

INFORMATIONS

Plus d'informations

Que peut faire le nouveau SAC Add-in for Microsoft PowerPoint (Composable Analytics) ?

Cet article wiki traite du nouveau module complémentaire SAP Analytics Cloud (SAC) pour Microsoft PowerPoint, qui...

De l'ordre à la valeur ajoutée : la gestion des métadonnées avec le Data Catalog

SAP Datasphere Data Catalog offre un répertoire central de données d'entreprise qui facilite l'accès et la gestion des données grâce à des métadonnées structurées....

Google Cloud et SAP : intégration réussie de SuccessFactors et Analytics Cloud

SAP Analytics Cloud (SAC) permet aux entreprises de disposer d'une...
Image de couverture Logiciels sur site et hors site Quelle est la différence ?

Logiciel sur site ou hors site : quelle est la différence ?

Alors que le terme on-premise existe, le terme off-premise n'existe pas en tant que tel. On parle soit d'outsourcing (utilisation de...

R vs. PYTHON

R et Python sont tous deux des langages de programmation de premier plan dans l'analyse de données...

Optimiser la gestion de projet avec le chat de documents assisté par l'IA et BigQuery

Dans de nombreux secteurs, l'efficacité et la précision sont essentielles. Avec l'IA et BigQuery, les données des projets peuvent être gérées facilement et les informations...