Réduit la dimensionnalité des variables nominales en utilisant une analyse en composantes principales logistique (LPCA). Cette technique est utile pour visualiser les relations entre les niveaux des variables nominales dans un espace de faible dimension.
| Paramètre | Description |
|---|---|
| dimensions | Spécifie le nombre de variables réduites (dimensions) à générer. |
| display | Spécifie une liste de tables de résultats à envoyer au client pour affichage. |
| epsilon | Spécifie la tolérance de convergence pour l'algorithme itératif. |
| freq | Spécifie la variable de fréquence. |
| id | Spécifie les variables à utiliser comme identifiants d'enregistrement et à transférer dans la table de sortie. |
| inputs | Spécifie les variables à utiliser dans l'analyse. |
| m | Spécifie une valeur positive finie pour approximer les limites infinies de la fonction logit. |
| maxIter | Spécifie le nombre maximum d'itérations pour l'algorithme. |
| nominals | Spécifie les variables nominales à utiliser dans l'entraînement. |
| output | Spécifie la table de données de sortie qui contient les valeurs des variables réduites. |
| outputTables | Liste les noms des tables de résultats à sauvegarder comme tables CAS sur le serveur. |
| prefix | Spécifie un préfixe à appliquer aux noms des variables réduites. |
| saveState | Spécifie la table de sortie pour sauvegarder le modèle de réduction de dimensionnalité. |
| table | Spécifie la table d'entrée. |
Ce code SAS crée la table `my_nominal_data` dans la caslib `casuser`. Cette table contient des réponses simulées à une enquête avec des variables nominales comme le genre, le niveau d'éducation et la couleur préférée, qui serviront d'entrée à l'action LPCA.
| 1 | DATA casuser.my_nominal_data; |
| 2 | LENGTH gender $ 10 education $ 15 color $ 10; |
| 3 | DO i = 1 to 100; |
| 4 | IF rand('UNIFORM') < 0.5 THEN gender = 'Homme'; ELSE gender = 'Femme'; |
| 5 | IF rand('UNIFORM') < 0.3 THEN education = 'Bac'; |
| 6 | ELSE IF rand('UNIFORM') < 0.7 THEN education = 'Licence'; |
| 7 | ELSE education = 'Master'; |
| 8 | select (int(rand('UNIFORM')*3)); |
| 9 | when (0) color = 'Rouge'; |
| 10 | when (1) color = 'Vert'; |
| 11 | otherwise color = 'Bleu'; |
| 12 | END; |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | RUN; |
Cet exemple exécute une LPCA sur la table `my_nominal_data` pour réduire la dimensionnalité des variables nominales à 2 dimensions. Les résultats, tels que les valeurs singulières et les coordonnées, sont imprimés dans la sortie standard.
| 1 | PROC CAS; |
| 2 | nominalVarsDimReduction.lpca |
| 3 | TABLE={name='my_nominal_data', caslib='casuser'}, |
| 4 | nominals={'gender', 'education', 'color'}, |
| 5 | dimensions=2; |
| 6 | RUN; |
Cet exemple exécute une LPCA en spécifiant 3 dimensions. Il sauvegarde les nouvelles coordonnées dans une table de sortie nommée `lpca_output` et enregistre l'état du modèle dans une table nommée `lpca_model_state` pour un scoring futur. Le préfixe 'LPCA_' est ajouté aux noms des nouvelles variables de dimension.
| 1 | PROC CAS; |
| 2 | nominalVarsDimReduction.lpca |
| 3 | TABLE={name='my_nominal_data', caslib='casuser'}, |
| 4 | nominals={'gender', 'education', 'color'}, |
| 5 | dimensions=3, |
| 6 | prefix='LPCA_', |
| 7 | OUTPUT={casout={name='lpca_output', caslib='casuser', replace=true}, copyVars={'gender', 'education', 'color'}}, |
| 8 | saveState={name='lpca_model_state', caslib='casuser', replace=true}; |
| 9 | RUN; |