tsReconcile

globalReconcile

##set_tsreconcile

Description

L'action globalReconcile est le juge de paix des prévisions hiérarchiquesMéthode synchronisant les prévisions à différents niveaux (ex: produit/région) pour garantir la cohérence numérique totale entre les agrégats supérieurs et les détails inférieurs.. Elle réconcilie simultanément tous les niveaux d'une hiérarchie de 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. pour s'assurer que les prévisions agrégées correspondent parfaitement à la somme des prévisions détaillées. C'est l'outil indispensable pour éviter que votre patron ne vous demande pourquoi la somme des ventes régionales ne correspond pas au total national !

Syntaxe Officielle
tsReconcile.globalReconcile /
groupBy={"variable-name-1" <, "variable-name-2", ...>},
levels={{table={name="table-name"}, casOut={name="out-name"}, roles={actual="var", predict="var"}}, ...},
timeId="variable-name",
nThreads=integer;

Paramètres Clés

Nom du paramètre Description
groupBy Spécifie les variables qui définissent la structure de la hiérarchie (ex: Pays, Région, Magasin).
levels Une liste de spécifications pour chaque niveau de la hiérarchie, incluant les tables d'entrée, de sortie et les rôles des variables.
timeId Désigne la variable de temps (Date) commune à tous les niveaux.
nThreads Définit le nombre de threads à utiliser pour le calcul parallèle sur les nœuds CAS.

Préparation des données

Création d'une hiérarchie de prévisions fictive

Génération de deux tables : une pour le niveau 'Total' et une pour le niveau 'Région' avec des prévisions indépendantes à réconcilier.

1DATA casuser.lvl_root; date='01jan2023'd; _name_='TOTAL'; predict=100; actual=95; OUTPUT; date='01feb2023'd; _name_='TOTAL'; predict=110; actual=105; OUTPUT; RUN; DATA casuser.lvl_region; date='01jan2023'd; region='Nord'; predict=60; actual=55; OUTPUT; date='01jan2023'd; region='Sud'; predict=50; actual=45; OUTPUT; date='01feb2023'd; region='Nord'; predict=65; actual=60; OUTPUT; date='01feb2023'd; region='Sud'; predict=55; actual=50; OUTPUT; RUN; PROC CAS; TABLE.loadTable / path="lvl_root.sas7bdat", casout="lvl_root"; TABLE.loadTable / path="lvl_region.sas7bdat", casout="lvl_region"; QUIT;

Exemples d'utilisation

Réconciliation basique de deux niveaux

Réconciliation simple entre un niveau agrégé et un niveau détaillé en utilisant les noms de variables par défaut.

1PROC CAS; tsReconcile.globalReconcile / groupBy={"region"}, levels={{TABLE={name="lvl_root"}}, {TABLE={name="lvl_region"}, casOut={name="rec_detailed"}}}, timeId="date"; RUN; QUIT;
Résultat Attendu :
Une table 'rec_detailed' est créée avec les valeurs de prévisions ajustées pour correspondre au total du niveau supérieur.
Réconciliation multi-niveaux avec rôles personnalisés

Spécification explicite des colonnes pour l'actual, le predict et l'error, ainsi que la génération de sorties pour chaque niveau.

1PROC CAS; tsReconcile.globalReconcile / groupBy={"region"}, levels={{TABLE={name="lvl_root"}, roles={actual="actual", predict="predict", error="error"}, casOut={name="lvl_root_rec"}}, {TABLE={name="lvl_region"}, roles={actual="actual", predict="predict", error="error"}, casOut={name="lvl_region_rec"}}}, timeId="date"; RUN; QUIT;
Résultat Attendu :
Toutes les tables spécifiées dans 'casOut' sont générées et les prévisions sont mathématiquement cohérentes à travers toute la structure hiérarchique.