L'action `fPca` (Functional Principal Component Analysis) effectue une analyse en composantes principales sur des données fonctionnelles. Elle est conçue pour traiter des observations qui sont des courbes ou des séries de points, en réduisant la dimensionnalité tout en capturant les modes de variation dominants de la structure fonctionnelle sous-jacente.
| Paramètre | Description |
|---|---|
| table | Spécifie la table d'entrée CAS contenant les données fonctionnelles à analyser (paramètre obligatoire). |
| inputs | Spécifie la liste des variables d'entrée qui constituent les points de mesure de la fonction (ex: séries temporelles). |
| id | Spécifie la ou les variables utilisées comme identifiant unique pour chaque enregistrement (courbe). |
| nBins | Définit le nombre de bacs (bins) utilisés pour discrétiser et lisser les courbes fonctionnelles. La valeur minimale est 10. La valeur par défaut est -1 (calcul automatique). |
| output | Paramètre complexe spécifiant la table de sortie pour les scores (`casout`) et le nombre de composantes principales à retenir (`npc`, défaut 4). |
| eigenVal | Spécifie les paramètres de la table de sortie CAS qui contiendra la matrice des valeurs propres. |
| eigenVec | Spécifie les paramètres de la table de sortie CAS qui contiendra la matrice des vecteurs propres (les fonctions propres). |
| saveState | Spécifie la table de sortie pour sauvegarder l'état analytique (modèle) afin de l'utiliser ultérieurement pour le scoring de nouvelles données. |
| rankThreshold | Définit le seuil de valeur propre pour déterminer le rang de la matrice de covariance. La valeur par défaut est 1E-08. |
| display | Spécifie quelles tables de résultats doivent être envoyées au client pour affichage. |
Génération d'un jeu de données 'fpca_data' contenant 100 courbes sinusoïdales, chacune définie par 50 points de mesure (y1 à y50) avec un léger décalage de phase et du bruit aléatoire.
| 1 | |
| 2 | DATA casuser.fpca_data; |
| 3 | array y[50]; |
| 4 | DO id = 1 to 100; |
| 5 | DO j = 1 to 50; |
| 6 | y[j] = sin(j/10 + id/20) + rannor(123)*0.1; |
| 7 | END; |
| 8 | OUTPUT; |
| 9 | END; |
| 10 | |
| 11 | RUN; |
| 12 |
Exécution de l'analyse en composantes principales fonctionnelles sur les variables d'entrée y1 à y50, identifiées par la variable 'id'.
| 1 | |
| 2 | PROC CAS; |
| 3 | fpca.fPca / TABLE={name="fpca_data", caslib="casuser"}, id={"id"}, inputs={"y1"-"y50"}; |
| 4 | |
| 5 | RUN; |
| 6 |
Analyse demandant le calcul de 3 composantes principales (npc=3), avec un lissage sur 20 bins, et la sauvegarde des résultats (scores, valeurs propres, vecteurs propres) ainsi que l'état du modèle (astate) dans des tables CAS distinctes.
| 1 | |
| 2 | PROC CAS; |
| 3 | fpca.fPca / TABLE={name="fpca_data", caslib="casuser"}, id={"id"}, inputs={"y1"-"y50"}, nBins=20, OUTPUT={npc=3, casout={name="fpca_scores", caslib="casuser", replace=true}}, eigenVal={name="fpca_evals", caslib="casuser", replace=true}, eigenVec={name="fpca_evecs", caslib="casuser", replace=true}, saveState={name="fpca_astate", caslib="casuser", replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 |