Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... est ici :

http://www.univ-orleans.fr/deg/masters/ESA/

#1 30-11-2009 20:49:12

olivier
Member
Date d'inscription: 21-09-2009
Messages: 16

Dichitomiser des variables

Ce n'est pas de moi, mais je me permets de le poster car c'est quand même bien pratique.
Si vous souhaitez créer des dummies mais que vous êtes un peu fainéants, il existe un moyen d'échapper aux IF/THEN/ESLE: proc transreg.
A la base, proc transreg sert à transformer des variables, mais pas forcement des muettes.

data lulu;
input no x y z;
cards;
1 1 3 2
2 1 2 1
3 0 3 1
4 2 1 0
;run;

proc transreg design;
    model class (x y z / zero=none);
    id no;
    output out=dummies;
run;

Nous avons 3 variables discrètes (x y z) et une variable clef (no).
L'option design précise que nous voulons créer une matrice de dummies. La commande id sert à insérer d'autres variables, comme par exemple une clef pour joindre la table créée avec une autre, on peut en mettre autant que l'on veut. output out spécifie la table de sortie. L'option zero=none sert à créer autant de variables muettes que de modalités.

Obs _TYPE_ _NAME_ Intercept x0 x1 x2 y1 y2 y3 z0 z1 z2 x y z no
1    SCORE     1            .         0  1   0   0   0  1   0  0   1  1 3 2 1
2    SCORE     2            .         0  1   0   0   1  0   0  1   0  1 2 1 2
3    SCORE     3            .         1  0   0   0   0  1   0  1   0  0 3 1 3
4    SCORE     4            .         0  0   1   1   0  0   1  0   0  2 1 0 4

On se retrouve avec 3 variables, _type_ _name_ et intercept, qui servent à rien. On conserve les variables x y et z.
Remarquez que dans nos données, y ne prend jamais la modalité 0, en bien le transreg l'a vu wink
Si on ne met pas l'option zero=none, SAS met une constante et dégage les variables liées à la dernière modalité.

Obs Intercept x0 x1 y1 y2 z0 z1 no
1         1          0  1  0   0   0   0  1
2         1          0  1  0   1   0   1  2
3         1          1  0  0   0   0   1  3
4         1          0  0  1   0   1   0  4

Au final cette procédure comporte deux avantages:
-elle crée autant de variables que de modalités, ou une de moins, au choix.
-elle ne crée pas de variables pour des classes vides, ainsi la variable y0 ne sera pas créée.
et un inconvéniant:
-on ne peut pas choisir la classe qui dégage quand on met une constante.

Bye

Dernière modification par olivier (30-11-2009 20:54:02)

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson