uniTimeSeries arima

Modélisation Haut Volume de la Consommation Énergétique Horaire

Scénario de test & Cas d'usage

Contexte Métier

Un fournisseur d'énergie doit modéliser la demande d'électricité horaire d'une métropole pour anticiper les pics de consommation. Le volume de données est très important (plusieurs années de données horaires). Le test vise à évaluer la performance de l'action `arima` sur un grand jeu de données et sa capacité à gérer des saisonnalités multiples (journalière, hebdomadaire).
À propos du Set : uniTimeSeries

Analyse et prévision de séries temporelles univariées.

Découvrir toutes les actions de uniTimeSeries
Préparation des Données

Création d'une table de consommation horaire sur 3 ans (environ 26 000 observations) avec des saisonnalités journalière (24h) et hebdomadaire (168h).

Copié !
1DATA casuser.conso_horaire_large;
2 DO t = 0 to 26303;
3 datetime_horaire = '01JAN2022:00:00:00'dt + t*3600;
4 heure_jour = hour(datetime_horaire);
5 jour_semaine = weekday(datepart(datetime_horaire));
6 saison_jour = sin(heure_jour * 2 * constant('pi') / 24);
7 saison_semaine = cos(jour_semaine * 2 * constant('pi') / 7);
8 tendance = t * 0.01;
9 consommation = 500 + tendance + 50*saison_jour + 30*saison_semaine + rannor(54321)*20;
10 OUTPUT;
11 END;
12 FORMAT datetime_horaire datetime20.;
13RUN;

Étapes de réalisation

1
Chargement de la table volumineuse dans la session CAS.
Copié !
1 
2PROC CASUTIL;
3load
4DATA=casuser.conso_horaire_large outcaslib='casuser' casout='conso_horaire_large' replace;
5RUN;
6 
2
Exécution d'un modèle ARIMA avec différenciations multiples (horaire, journalière) sur la table volumineuse. Le nombre de threads est spécifié pour tester la parallélisation.
Copié !
1PROC CAS;
2 uniTimeSeries.arima TABLE={name='conso_horaire_large'},
3 timeId={name='datetime_horaire'},
4 interval='hour',
5 nThreads=4,
6 series={{name='consommation', model={{estimate={diff={1, 24}, p=1, q=1}, forecast={lead=48}}}}},
7 outFor={name='previsions_conso', replace=true};
8RUN;

Résultat Attendu


L'action doit traiter le grand volume de données sans échouer et dans un temps de réponse raisonnable, démontrant sa scalabilité. Une table de prévisions (`previsions_conso`) pour les 48 prochaines heures doit être générée. Le log SAS doit indiquer que l'action a bien utilisé plusieurs threads si l'environnement le permet. Le modèle doit capturer les dynamiques complexes de la série.