Scénario de test & Cas d'usage
Analyse et prévision de séries temporelles univariées.
Découvrir toutes les actions de uniTimeSeriesCréation d'une table de consommation horaire sur 3 ans (environ 26 000 observations) avec des saisonnalités journalière (24h) et hebdomadaire (168h).
| 1 | DATA 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.; |
| 13 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=casuser.conso_horaire_large outcaslib='casuser' casout='conso_horaire_large' replace; |
| 5 | RUN; |
| 6 |
| 1 | PROC 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}; |
| 8 | RUN; |
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.