uniTimeSeries

esm

##set_unitimeseries

Description

L'action esm du jeu d'actions uniTimeSeries est le couteau suisse de la prévision par lissage exponentiel dans SAS Viya. Elle permet de modéliser des séries temporellesSuite d'observations collectées à intervalles réguliers. L'analyse vise à identifier des tendances, des cycles ou une saisonnalité pour modéliser et prédire les comportements futurs. univariées en tenant compte de la tendance et de la saisonnalité. Que vous soyez face à une croissance linéaire ou à des cycles saisonniers complexes (comme la vente de glaces en été, miam !), cette action peut soit appliquer un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). spécifique (Simple, Double, Winters, etc.), soit choisir automatiquement le 'meilleur' modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). (BEST) en se basant sur des critères de performance comme l'erreur quadratique moyenne (RMSE). Elle gère aussi l'accumulation des données et les valeurs manquantes avant de lancer les calculs.

Syntaxe Officielle
uniTimeSeries.esm(
forecast={{accumulate="string", alpha=double, back=integer, criterion="string", format="string", formattedLength=integer, label="string", lead=integer, median=true|false, method="string", name="variable-name", nfd=integer, nfl=integer, setMiss="string"|double, transform="string", transformParm=double}, {...}},
interval="string",
table={caslib="string", name="table-name", where="where-expression"},
alignId="BEGIN"|"END"|"MIDDLE",
boundaryAlign="BOTH"|"END"|"NONE"|"START",
casOut={caslib="string", name="table-name", replace=true|false},
outEst={caslib="string", name="table-name", replace=true|false},
outFor={caslib="string", name="table-name", replace=true|false},
outStat={caslib="string", name="table-name", replace=true|false},
timeId={name="variable-name"},
seasonality=integer,
nThreads=integer
)

Paramètres Clés

Nom du paramètre Description
forecast Paramètre obligatoire spécifiant la liste des variables à prévoir et leurs options respectives (méthode, horizon de prévision 'lead', transformation des données, etc.).
interval Indique l'intervalle de temps des données (ex: 'MONTH', 'DAY', 'YEAR'). C'est crucial pour que SAS comprenne le rythme de vos données.
table La table CAS source contenant vos séries temporelles.
timeId La variable qui sert d'index temporel (date ou datetime).
casOut Table de sortie contenant les séries accumulées et les prévisions finales.
outFor Table détaillée contenant les valeurs réelles, prédites, les erreurs et les intervalles de confiance.
outStat Table contenant les statistiques de qualité d'ajustement du modèle (Fit Statistics).
method Sous-paramètre de forecast définissant le modèle : SIMPLE, DOUBLE, LINEAR, WINTERS, ADDWINTERS, ou BEST pour une sélection automatique.

Préparation des données

Création de données de ventes mensuelles

Génération d'un jeu de données fictif simulant des ventes sur 3 ans avec une légère tendance à la hausse pour tester les prévisions.

1DATA casuser.sales_data;
2 DO date = '01JAN2022'd to '01DEC2024'd;
3 date = intnx('month', date, 0);
4 sales = 100 + (date/1000) + rannor(123)*10;
5 OUTPUT;
6 END;
7 FORMAT date monyy7.;
8RUN;

Exemples d'utilisation

Prévision automatique simple

Prévision des ventes pour les 6 prochains mois en laissant SAS choisir le meilleur modèle automatiquement.

1PROC CAS; uniTimeSeries.esm / TABLE={name="sales_data"}, timeId={name="date"}, interval="MONTH", forecast={{name="sales", lead=6, method="BEST"}}, casOut={name="forecast_simple", replace=true}; RUN;
Résultat Attendu :
Une table 'forecast_simple' est créée avec les données historiques et 6 mois de prévisions basées sur le modèle le plus performant détecté.
Analyse complète avec modèle de Winters

Utilisation de la méthode de Winters (saisonnalité) avec transformation Log pour stabiliser la variance, et génération de toutes les tables de statistiques.

1PROC CAS; uniTimeSeries.esm / TABLE={name="sales_data"}, timeId={name="date"}, interval="MONTH", forecast={{name="sales", lead=12, method="WINTERS", transform="LOG", accumulate="SUM"}}, casOut={name="esm_out", replace=true}, outFor={name="esm_for", replace=true}, outStat={name="esm_stat", replace=true}, outEst={name="esm_est", replace=true}; RUN;
Résultat Attendu :
Génération de quatre tables : 'esm_out' (prévisions), 'esm_for' (détails et intervalles de confiance), 'esm_stat' (indicateurs de précision comme le RMSE) et 'esm_est' (paramètres alpha, beta, gamma estimés pour le lissage).