libname malib "G:\Enseignements\ADD\Corrections"; /*Exercice 1*/ data malib.donnees; input id $ csp $ sport $ ; cards; A cadre natation B ouvrier foot C employe foot D employe natation E cadre tennis F agriculteur tennis G cadre foot ; run; /*AFC du tableau de contingence*/ proc corresp data=malib.donnees observed out=malib.sorties; tables csp, sport; /*crée le tableau de contingence*/ run; /*ou en generant la table de contingence par la proc freq*/ proc freq data=malib.donnees; tables csp*sport / chisq out=malib.sorties sparse; run; proc print data=malib.sorties; run; proc corresp data=malib.sorties freqout; tables csp,sport; weight count; run; /*AFC(M) du tableau de Burt*/ /*sans virgule et avec mca : SAS crée un tableau de Burt*/ proc corresp data=malib.donnees observed out=malib.sorties mca; tables csp sport; run; /*AFC(M) du tableau disjonctif complet*/ /*sans virgule et avec binary : SAS crée un TDC*/ proc corresp data=malib.donnees observed out=malib.sorties binary; tables csp sport; run; /*EXERCICE 2*/ proc print data=malib.chiens; run; proc format; value var1a 1 ='faible' 2='moyen' 3='fort'; value var2a 1='faible' 2='fort'; value var3a 1='compagnie' 2='chasse' 3='utilite'; run; proc freq data=malib.chiens; table taille poids velocite intelligence affection agressivite fonction; format taille poids velocite intelligence var1a. affection agressivite var2a. fonction var3a.; run; proc corresp data=malib.chiens observed out=malib.sorties dimens=4; tables race,taille--fonction; supplementary fonction; run;quit; /*pour le graphe de la proc corresp, on donne des modalites un peu plus explicites*/ data malib.chiens; set malib.chiens; select(taille); when(1) taille2='T-'; when(2) taille2='T'; when(3) taille2='T+';end; select(poids); when(1) poids2='P-'; when(2) poids2='P'; when(3) poids2='P+';end; select(velocite); when(1) velocite2='V-'; when(2) velocite2='V'; when(3) velocite2='V+';end; select(intelligence); when(1) intelligence2='I-'; when(2) intelligence2='I'; when(3) intelligence2='I+';end; select(affection); when(1) affection2='Af-'; when(2) affection2='Af+';end; select(agressivite); when(1) agressivite2='Ag-'; when(2) agressivite2='Ag+';end; select(fonction); when(1) fonction2='Comp'; when(2) fonction2='Chas'; when(3) fonction2='Uti';end; run; proc corresp data=malib.chiens observed out=malib.sorties dimens=2; tables race,taille2--fonction2; supplementary fonction2; run;quit; /*on fait un graphique avec chaque chien coloré suivant sa fonction, programme de J.F. Yao Rennes 1*/ proc sort data=malib.sorties out=malib.sorties; by _name_; run; proc sort data=malib.chiens out=malib.chiens2; by race; run; data malib.fusion; merge malib.sorties malib.chiens2 (rename=(race=_name_) keep=race fonction2); by _name_; run; %let ident=_name_; %let x=1; %let y=2; %let nc=5; data malib.anno; set malib.fusion; retain xsys ysys '2'; style='swiss'; y= dim&y; x= dim&x; select(fonction2); when('Comp') color='blue'; when('Chas') color='green'; when('Uti') color='red'; /*otherwise color='black';*/ end; text=substr(&ident,1,&nc); size=1; label y = "Axe &y" x = "Axe &x"; keep x y text xsys ysys size color; proc gplot data=malib.anno; title; axis1 length=22cm; /* attention taille */ axis2 length=12cm; symbol1 v=none; plot y*x=1 / annotate=malib.anno frame href=0 vref=0 haxis=axis1 vaxis=axis2 ; run; goptions reset=all; quit;