robustPca

mwpca

##set_robustpca

Description

L'action (https://documentation.sas.com/doc/en/pgmsascdc/v_069/casactml/cas-robustpca-mwpca.htm) effectue une analyse en composantes principales (ACPTechnique de réduction de dimension transformant des variables corrélées en nouvelles composantes principales décorrélées, tout en conservant le maximum de variance (information) des données originales.) robuste basée sur une série de fenêtres mobiles (moving windows). Elle est parfaite pour suivre l'évolution des structures de données dans le temps et détecter les anomalies ou les changements de régime en continu. Une vraie détective privée 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. !

Syntaxe Officielle
proc cas;
robustPca.mwpca /
table={name="table_name", caslib="caslib_name"}
id="time_id_variable"
stepSize=100
windowSize=500
inputs={"var1", "var2", ...}
method="ALM" /* ou "APG" */
center=TRUE
output={casOut={name="out_table", replace=TRUE}, winsummary={name="win_summary", replace=TRUE}};
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les données à analyser.
id Spécifie le nom de la variable numérique qui identifie les observations de manière séquentielle (paramètre requis).
stepSize Définit la longueur du pas (le décalage) entre deux fenêtres consécutives (paramètre requis).
windowSize Détermine la taille (nombre d'observations) de chaque fenêtre glissante (paramètre requis).
inputs Liste des variables numériques à inclure dans l'analyse ACP.
method Méthode d'optimisation à utiliser : ALM (Augmented Lagrange Multiplier) ou APG (Accelerated Proximal Gradient).
output Définit les tables de sortie, notamment les résultats par fenêtre (casOut) et le résumé d'exécution (winsummary).

Préparation des données

Création d'une table de données temporelles pour MWPCA

On génère un jeu de données chronologique simple avec quelques variables corrélées, idéal pour que notre ACP mobile ait quelque chose à se mettre sous la dent.

1DATA casuser.mwpca_data;
2 DO time_id = 1 to 2000;
3 var1 = sin(time_id/10) + rannor(123);
4 var2 = cos(time_id/10) + rannor(123);
5 var3 = var1 + var2 + rannor(123)*0.5;
6 OUTPUT;
7 END;
8RUN;

Exemples d'utilisation

Exécution de base de MWPCA

Une configuration minimale pour lancer l'ACP sur fenêtres mobiles. On définit une taille de fenêtre de 200 avec un décalage (step) de 50. Rapide et efficace !

1PROC CAS;
2 robustPca.mwpca /
3 TABLE={name="mwpca_data", caslib="casuser"}
4 id="time_id"
5 stepSize=50
6 windowSize=200
7 inputs={"var1", "var2", "var3"}
8 OUTPUT={casOut={name="mwpca_out", caslib="casuser", replace=TRUE}};
9RUN;
10QUIT;
Résultat Attendu :
Création d'une table de sortie contenant les composantes principales calculées pour chaque fenêtre temporelle glissante.
MWPCA avec paramétrage avancé et méthode APG

On sort l'artillerie lourde : centrage préalable des données, spécification de la méthode APG, réglage fin des itérations et récupération de deux tables de sortie (résultats standardisés et résumé des fenêtres). Idéal pour ceux qui aiment le contrôle total !

1PROC CAS;
2 robustPca.mwpca /
3 TABLE={name="mwpca_data", caslib="casuser"}
4 id="time_id"
5 stepSize=25
6 windowSize=150
7 inputs={"var1", "var2", "var3"}
8 method="APG"
9 center=TRUE
10 maxIter=500
11 tolerance=1E-6
12 OUTPUT={
13 casOut={name="mwpca_out_adv", caslib="casuser", replace=TRUE},
14 nPC=2,
15 standardPc=TRUE,
16 winsummary={name="mwpca_winsum", caslib="casuser", replace=TRUE}
17 };
18RUN;
19QUIT;
Résultat Attendu :
Une table 'mwpca_out_adv' contenant les 2 premières composantes principales standardisées par fenêtre, et une table 'mwpca_winsum' contenant les statistiques de convergence pour vérifier le bon comportement de l'algorithme d'optimisation.