logo

Construire un tableau disjonctif complet avec SAS

Qu’est-ce qu’un Tableau Disjonctif Complet ?

Table constituée d’indicatrices (variables codées 0 ou 1 selon la présence ou non d’un caractère)… très utile pour l’ACM avec la procédure CORRESP !

Exemple

SEXE
F
F
H
devient
SEXE_F
SEXE_M
1
0
1
0
0
1

A gauche, la colonne d’origine. Les deux colonnes de droite (SEXE_F et SEXE_M) constituent un tableau disjonctif complet.

La procédure TRANSREG

A l’origine, la procédure TRANSREG sert à ajuster un modèle de régression sur des données transformées sans utilisation d’une étape Data. A ce titre, elle propose un arsenal de fonctions pour modifier les informations d’origine (logarithme, exponentielle, puissance, …). La commande qui nous intéresse ici est CLASS, qui permet de construire des indicatrices.

Syntaxe de la procédure TRANSREG

PROC TRANSREG DATA = TableSAS
DESIGN NOPRINT ;
MODEL CLASS (VariablesADisjoindre / ZERO = NONE) ;
OUTPUT OUT = TableauDisjonctifComplet ;
RUN ;

L’instruction MODEL permet normalement de citer le modèle de régression sur les données transformées, en même temps que les transformations voulues. Ici, pas de variables explicatives ou expliquée à différencier. C’est ici qu’on utilise la fonction CLASS. Son option ZERO=NONE permet de proposer de colonne redondante (s’il y a 3 valeurs à la variable à disjoindre, on créera trois nouvelles variables seulement, la troisième se déduisant des deux autres)…

SEXE
H
F
F

Données d’origine

SEXE_F
SEXE_M
0
1
1
0
1
0

Tableau disjonctif complet redondant (la somme des lignes fait toujours 1)

SEXE_F
0
1
1

Tableau disjonctif complet non redondant (si 0, alors l’autre colonne vaut forcément 1)

L’instruction OUTPUT OUT permet de récupérer les données transformées dans une table SAS. Ces données sont enrichies de 3 variables inutiles : INTERCEPT, _TYPE_ et _NAME_.

L’option NOPRINT évite l’édition de sorties dans la fenêtre Output et toute autre destination ODS ouverte.

L’option DESIGN indique qu’il est inutile d’essayer de donner une valeur aux coefficients du modèle, et que cette procédure n’a pour but que de produire des données transformées.

Exemple (1/2)

PROC TRANSREG DATA = donnees.assur
DESIGN NOPRINT ;
MODEL CLASS(c_permis usage garferm nbsin / ZERO = NONE) ;
OUTPUT OUT = work.tdc ;
RUN ;

La suite de l’exemple constitue l’utilisation dans une procédure CORRESP.

Exemple (2/2)

PROC CORRESP DATA = work.tdc
                        DIMENS = 10 
                        NOPRINT
                        OUTC = work.sortieACM (WHERE = (_TYPE_ NE 'OBS')) ;
        VAR <b>&amp;_TRGIND</b> ;
RUN ;

Pour mettre en oeuvre une procédure CORRESP, on remarquera ici l’usage de la macro-variable _TRGIND (TransReG INDependant : variables cibles du modèle, transformées) qui contient la liste des nouvelles variables créées par la proc TRANSREG, liste où le séparateur est un blanc.


Exemple :

%PUT &amp;_TRGIND ; /* on affiche dans la Log la valeur de TRGIND, c'est à dire les noms de toutes les variables indicatrices créées */
C_PERMIS_1946 C_PERMIS1946N1958 C_PERMIS1958N1970 C_PERMIS1970N1982 C_PERMIS__1982 USAGEPriv_ USAGEProfessionnel USAGETrajets USAGETs_d_placements GARFERMNon GARFERMOui NBSIN0 NBSIN1 NBSIN2 NBSIN3 NBSIN4

 

4 found this helpful