uniTimeSeries arima

Prévision des Ventes Saisonnières pour la Gestion de Stock

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise de vente au détail souhaite optimiser ses niveaux de stock en prévoyant les ventes mensuelles d'un produit phare. Les données historiques montrent une forte saisonnalité, avec des pics de ventes en fin d'année. L'objectif est de générer des prévisions fiables pour les 12 prochains mois afin d'éviter les ruptures de stock ou le surstockage.
À 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 ventes mensuelles sur 5 ans avec une tendance positive et une saisonnalité sur 12 mois.

Copié !
1DATA casuser.ventes_mensuelles;
2 DO year = 2020 to 2024;
3 DO month = 1 to 12;
4 date_mensuelle = mdy(month, 1, year);
5 t = (year - 2020) * 12 + month;
6 saison = 1 + sin( (month-1) * 2 * constant('pi') / 12 + constant('pi')/2 );
7 ventes = 1000 + 15*t + 500*saison + rannor(123)*100;
8 OUTPUT;
9 END;
10 END;
11 FORMAT date_mensuelle monyy.;
12RUN;

Étapes de réalisation

1
Chargement de la table des ventes dans la session CAS.
Copié !
1 
2PROC CASUTIL;
3load
4DATA=casuser.ventes_mensuelles outcaslib='casuser' casout='ventes_mensuelles' replace;
5RUN;
6 
2
Exécution d'un modèle SARIMA (p=1, d=1, q=1)(P=1, D=1, Q=1)s=12 avec la méthode d'estimation 'ML' (Maximum Likelihood). Génération de 12 prévisions et sauvegarde des résultats dans trois tables distinctes : prévisions, estimations et statistiques.
Copié !
1PROC CAS;
2 uniTimeSeries.arima TABLE={name='ventes_mensuelles'},
3 timeId={name='date_mensuelle'},
4 interval='month',
5 seasonality=12,
6 series={{name='ventes', model={{estimate={p=1, q=1, diff=1, sP=1, sQ=1, sDiff=1, method='ML'}, forecast={lead=12, alpha=0.95}}}}},
7 outFor={name='previsions_ventes', replace=true},
8 outEst={name='estimations_params', replace=true},
9 outStat={name='stats_ajustement', replace=true};
10RUN;
3
Vérification du contenu de la table des prévisions.
Copié !
1 
2PROC CAS;
3TABLE.fetch / TABLE={name='previsions_ventes'}, to=12;
4RUN;
5 

Résultat Attendu


L'action doit s'exécuter sans erreur et ajuster un modèle SARIMA. Les trois tables de sortie (`previsions_ventes`, `estimations_params`, `stats_ajustement`) doivent être créées dans la caslib `casuser`. La table `previsions_ventes` doit contenir 12 lignes de prévisions pour l'année 2025, avec des valeurs prédites, des limites de confiance, et des erreurs standards. Les prévisions doivent visiblement suivre le cycle saisonnier observé dans les données d'origine.