Voir le flux RSS

Haache

[Actualité] NUAGES D'UNE AFC et ACM: MACRO SAS

Noter ce billet
par , 15/04/2015 à 22h07 (1013 Affichages)
Je vous propose une macro qui permet de faire les différents nuages de AFC, et ACM en un code.

Vous devez d'abord réaliser votre AFC et ACM avec la commande Proc corresp et vous allez exporter les résultats dans une table avec l'option Out.
Voici le code de la macro qui fait les graphiques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
%macro PLOTCOR(DATA= ,ID= ,AXEH= ,AXEV= ,COND= )/ DES="Réprésentation des individus et variable en AFC ou en ACM";
DATA _Graph_;
set &DATA;
%if %length(&COND)^=0 %then %do;
&COND;
%end;
run;


data CORANNOT;
length color $10.;
length text $10.;
length function $10.;
set _Graph_;
function="Label";
position="1";
when="B";
x=Dim&AXEH;
y=Dim&AXEV;
xsys='2';
ysys='2';
text=&ID;
if _TYPE_="OBS" then color="blue";
else if _TYPE_="VAR" then color="red";
else if _TYPE_="VARSUP" then color="green";
size=0.8;
Output;
function="Symbol";
position="5";
when="B";
x=Dim&AXEH;
y=Dim&AXEV;
xsys='2';
ysys='2';
text="triangle";
size=3*(SqCos&AXEH+SqCos&AXEV);
if _TYPE_="OBS" then color="blue";
else if _TYPE_="VAR" then color="red";
else if _TYPE_="SUPVAR" then color="green";
output;
run; 




goptions reset=all gunit=pct hsize=7 vsize= 7;
axis1 minor=none offset=(4,4) major=(h=0.1 w=1) label=("Axe&AXEH");
axis2  minor=none offset=(4,4) major=(h=0.1 w=1) label=("Axe&AXEV");
symbol v=none;
proc gplot data=CORANNOT;
plot y*x=1/frame cframe=white href=0 vref=0 overlay annotate=CORANNOT grid haxis=axis1 vaxis=axis2;
run;
quit;
proc datasets lib=work memtype=DATA  nolist;
delete _Graph_ CORANNOT;
run; 
%mend Plotcor;
Donc pour faire le graphique, vous allez mettre ceci:

%plotcor(Data= ,id= , axeh= , axev= , cond= );

Dans DATA, vous spécifiez le nom de la table sortie que vous avez mise dans la proc corresp (ce que vous avez mis dans Out=).
Axev prend le numéro de l'axe que vous voulez mettre en vertical. soit 1, 2, 3 ....
Axeh prend le numéro de l'axe que vous voulez mettre en horizontal
Cond: Cette macro variable est très importante. Peut être que vous ne voulez pas afficher tous les points. Si vous voulez afficher les individus actifs seuls, vous allez mettre Cond= if _type_ in ("OBS"). Si c'est les variables supplémentaires seules, vous allez mettre Cond= if _type_ in ("SUPVAR"). Si c'est les individus actifs et supplémentaires, vous allez mettre Cond= if _type_ in ("OBS" "SUPOBS").... A vous de voir les valeurs prises par la variable _type_ qui est dans la sortie pour pouvoir mettre ce qui est convenable.

Je vous laisse le code pour que vous pussiez modifier. Jouer sur les couleurs des variables actives, supplémentaires, individus et autres.
Voici un graphique que j'ai sorti par la macro

Miniatures attachées Images attachées  

Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Viadeo Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Twitter Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Google Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Facebook Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Digg Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Delicious Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog MySpace Envoyer le billet « NUAGES D'UNE AFC et ACM: MACRO SAS » dans le blog Yahoo

Mis à jour 20/04/2015 à 17h21 par Haache

Catégories
Sans catégorie

Commentaires