/* pour les graphiques en sas */ /* partie 1 ; préparation des données */ data gr1 ; input x y z f i $ 20-22; datalines ; 100 125 200 1 Jan 200 200 390 1 Fev 300 375 410 1 Mar 500 450 500 2 Sep 600 500 550 2 Oct 700 125 200 1 Nov ; data gr2 ; set gr1 ; yc = x*1.1 + 12 ; data gr3 ; input ID $ 1-4 SEXE 9 AGE 12-13 PROF 17-18 ETUD 23 ; datalines ; M001 1 62 1 2 ... M097 1 39 1 2 M098 0 62 6 3 M100 1 48 9 4 ; data gr4 ; input x y z f i $ 20-22; datalines ; 100 8.250 200 1 Jan 200 36.200 390 1 Fev 300 10.750 410 1 Mar 500 41.500 500 2 Sep 600 59.000 550 2 Oct 700 53.250 700 1 Nov ; data gr5 ; input x y z f i $ 20-22; datalines ; 100 11.250 200 1 Jan 200 39.200 390 1 Fev 300 14.750 410 1 Mar 500 45.500 500 2 Sep 600 62.000 550 2 Oct 700 56.250 700 1 Nov ; /* pour les graphiques en sas l'aide s'obtient par help plot dans la fenetre de saisie sas en haut à gauche en dessous de Fichier ; on éxéucte ce fichier par %include 'gr.sas' ; avec chemin d'accès éventuel. ou par les autres techniques standards d'exécution */ /* partie 2 : tracés en mode texte tracés simples en mode texte ----------------------------- */ proc plot data=gr1 ; plot y*x ; /* tracé avec choix des identifs (num ou car mais 1 seul car) */ plot y*x=f ; plot y*x=i ; plot y * x = '*' ; /* tracé de deux courbes (pages distinctes) */ plot y*x z*x; /* tracé d'une courbe, une série par page */ plot y*x ; by f ; /* pb : non trié sur f */ /* tracé de deux courbes sur une meme page en horizontal avec titre, sans légende */ title ' demo de courbes ' ; proc plot data=gr1 hpercent=50 nolegend ; plot y*x z*x ; /* en vertical */ proc plot data=gr1 vpercent=50 ; /* tracé de deux courbes sur le meme graphique */ proc plot data=gr1 ; plot y*x=f z*x=f / overlay ; /* tracé de deux courbes sur le meme graphique avec lignes de références et cadre externe */ proc plot data=gr1 ; plot y*x=f z*x=f / overlay box href=350 vref=450 ; */ /* partie 3 : tracés en haute résolution */ /* test de l'affichage haute résolution */ proc gtestit ; /* tracé en mode point ; */ proc gplot data=gr1 ; plot y*x=i ; /* tracé d'une courbe en deux fois : avec ronds et lignes de jointure */ symbol1 c=red v=dot ; symbol2 c=blue i=join ; proc gplot data=gr1 ; plot y*x y*x / overlay ; /* tracé de deux courbes */ symbol1 c=red v=circle i=join; symbol2 c=blue v=circle i=join ; proc gplot data=gr1 ; plot y*x z*x / overlay ; /* tracé de valeurs et d'une droite de référence sur les memes points avec une grille */ data gr2 ; set gr1 ; yc = x*1.1 + 12 ; symbol1 c=red v=circle i=join width=2; symbol2 c=blue v=none i=join width=1; symbol3 c=green ; proc gplot data=gr2 ; plot y*x yc*x / overlay caxis=red grid chref=red ; /* c : couleur des lignes cv : couleur des points h : taille des points */ symbol1 c=green h=0.5 cv=red v=dot i=join width=2; /* tracé d'histogrammes */ proc gchart data=gr3 ; vbar sexe / type=percent ; /* histogrammes des niveaux d'étude pour chaque sexe */ proc gchart data=gr3 ; vbar etud / type=percent group=sexe discrete ; pattern1 v=s c=red ; pattern2 v=s c=blue ; /* pour mieux différencier les groupes, de la couleur via subgroup */ proc gchart data=gr3 ; vbar etud / type=percent group=sexe subgroup=sexe discrete ; pattern1 v=s c=orange ; pattern2 v=s c=blue ; /* l'autre ventilation qui montre partout plus de femmes que d'hommes */ proc gchart data=gr3 ; vbar sexe / type=percent group=etud subgroup=sexe discrete ; pattern1 v=s c=orange ; pattern2 v=s c=blue ; /* les facteurs de répétition permettent de colorier des groupes de valeur : ici on met les modalités 0-1 pour etude en rouge, les 2-4 en bleu */ proc gchart data=gr3 ; vbar sexe / type=percent group=etud subgroup=etud discrete ; pattern1 v=s c=orange r=2; pattern2 v=s c=blue r=3; /* partie 4 : tracés vraiment statistiques */ /* plot inclus dans régression */ /* avec bornes à 5 % */ proc reg data=gr4 ; model y=x ; plot predicted.*x='P' u95m.*x='U' l95m.*x='L' y*x='*' / overlay ; proc reg data=gr4 ; model y=x ; output out=gr_reg predicted=yp u95m=haut l95m=bas; proc contents data=gr4 ; proc contents data=gr_reg ; proc print data=gr_reg ; proc gplot data=gr_reg ; plot y*x='O' yp*x='P' haut*x='H' bas*x='B' / overlay ; /* symboles définis en global */ symbol1 c=blue v=dot cv=magenta i=join w=2; symbol2 c=orange i=join ; symbol3 c=green l=2 r=2 i=join; proc gplot data=gr_reg ; title1 c=orange bc=yellow f=viking box=2 ' Régression linéaire ' ; title2 ' ' ; title3 c=blue f='sas monospace bold' 'AVEC BORNES à 95 %' ; footnote1 j=left 'x est kilomètres' ; footnote2 j=left 'y est en litres d''essence' ; plot y*x yp*x haut*x bas*x / overlay grid ; /* avec encore plus de précision, tout paramétrage local ; */ proc reg data=gr5 ; model y=x ; output out=gr_reg predicted=yp u95m=haut l95m=bas; proc gplot data=gr_reg ; symbol1 c=blue v=dot cv=magenta i=join w=2; symbol2 c=orange i=join ; symbol3 c=green l=2 r=2 i=join; title1 c=blue f='sas monospace bold' 'REGRESSION LINEAIRE (avec bornes 95 %)' ; title2 ' ' ; title3 c=black j=left ' CONSOMMATION' ; footnote1 j=left ' x est kilomètres, y est en litres d''essence' ; footnote2 j=left ' ' ; axis1 order=(0 to 800 by 100) minor=none label=('DISTANCE PARCOURUE') ; axis2 order=(-40 to 120 by 20) minor=(number=1) label=none ; plot y*x yp*x haut*x bas*x / overlay grid haxis=axis1 vaxis=axis2 frame ; /* un histogramme avec courbe beta superposée */ options ps=60 ls=80; goptions ftext=none htext=1 cell; data plates; label gap='Plate Gap in cm'; input gap @@; cards; 0.746 0.357 0.376 0.327 0.485 1.741 0.241 0.777 0.768 0.409 0.252 0.512 0.534 1.656 0.742 0.378 0.714 1.121 0.597 0.231 0.541 0.805 0.682 0.418 0.506 0.501 0.247 0.922 0.880 0.344 0.519 1.302 0.275 0.601 0.388 0.450 0.845 0.319 0.486 0.529 1.547 0.690 0.676 0.314 0.736 0.643 0.483 0.352 0.636 1.080 ; title1 'Fitted Beta Distribution of Plate Gaps'; title2 '50 Measurements'; proc capability data=plates noprint graphics; var gap; specs lsl=0.3 clsl=white llsl=1 wlsl=2 usl=0.8 cusl=white lusl=20 wusl=2; histogram / beta(theta=0 scale=1.9 color=yellow w=2) midpoints = 0.2 to 1.8 by 0.2 legend = legend1 cframe = gray cfill = green; legend1 cframe=gray cborder=black; /* exécution et raz */ run; goptions reset=all;