Le script est divisé en deux parties principales, chacune utilisant une macro différente pour générer des graphiques ODS. La première macro, `%ecdf`, utilise la procédure `UNIVARIATE` pour obtenir des statistiques descriptives, un histogramme et un tracé de la fonction de répartition cumulative. La deuxième macro, `%ecdf2`, calcule manuellement la fonction de répartition cumulative via un `DATA STEP` et utilise ensuite `PROC SGPLOT` pour créer l'histogramme et le graphique ECDF. Les sorties graphiques sont enregistrées dans un chemin spécifié par `ods listing gpath`.
Analyse des données
Type : SASHELP
Les données utilisées pour l'analyse proviennent de la librairie SASHELP (`sashelp.cars`), qui est une librairie interne à SAS contenant des jeux de données d'exemple.
1 Bloc de code
ODS Configuration
Explication : Ce bloc configure la destination des sorties ODS (Output Delivery System) pour les graphiques. Il spécifie un chemin de répertoire (`gpath`) et une résolution (`image_dpi`) pour les images générées.
Explication : Ce bloc configure les options globales pour les graphiques ODS. Il réinitialise les paramètres, définit la priorité des attributs, la taille de l'image, le nom du fichier (`ecdf1`), et les formats d'image (PNG).
Explication : Cette macro, `%ecdf`, est conçue pour générer des analyses descriptives et des graphiques de distribution pour une variable donnée. Elle utilise `PROC UNIVARIATE` trois fois : pour les statistiques descriptives de base, pour un histogramme avec un encart affichant le nombre d'observations, et pour un tracé de la fonction de répartition cumulative (CDF) avec une option pour une courbe normale et un encart.
Copié !
%macro ecdf(data,var);
title "Descriptive statistics on &var.";
proc univariate data=&data;
var &var;
run;
title "Distribution of &var.";
proc univariate data=&data noprint;
histogram &var / odstitle = title;
inset n = 'Number of observations' / position=ne;
run;
title "Cumulative Distribution of &var.";
proc univariate data=&data noprint;
cdf &var / normal;
/*inset normal(mu sigma);*/
inset n = 'Number of observations' / position=nw;
run;
title;
%mend ecdf;
1
%macro ecdf(DATA,var);
2
3
title "Descriptive statistics on &var.";
4
PROC UNIVARIATEDATA=&DATA;
5
var &var;
6
RUN;
7
8
title "Distribution of &var.";
9
PROC UNIVARIATEDATA=&DATA noprint;
10
histogram &var / odstitle = title;
11
inset n = 'Number of observations' / position=ne;
12
RUN;
13
14
title "Cumulative Distribution of &var.";
15
PROC UNIVARIATEDATA=&DATA noprint;
16
cdf &var / normal;
17
/*inset normal(mu sigma);*/
18
inset n = 'Number of observations' / position=nw;
19
RUN;
20
21
title;
22
23
%mend ecdf;
4 Bloc de code
MACRO Call
Explication : Cet appel exécute la macro `%ecdf` en utilisant le jeu de données `sashelp.cars` et la variable `Horsepower` pour générer les analyses et graphiques correspondants.
Copié !
%ecdf(sashelp.cars,Horsepower);
1
%ecdf(sashelp.cars,Horsepower);
5 Bloc de code
ODS Graphics Configuration
Explication : Ce bloc configure les options globales pour les graphiques ODS, similaire au précédent, mais pour le deuxième ensemble de graphiques. Il définit le nom de l'image sur `ecdf2`.
Explication : Cette macro, `%ecdf2`, implémente une approche manuelle pour calculer et visualiser l'ECDF. Elle commence par créer un jeu de données temporaire (`tmp`) avec la variable d'intérêt, le trie, puis calcule la proportion cumulative (`ecdf`) de chaque observation dans un `DATA STEP`. Un `CALL SYMPUT` est utilisé pour stocker le nombre d'observations dans une macro-variable. Enfin, elle utilise `PROC SGPLOT` pour générer un histogramme et un graphique de série pour la fonction de répartition cumulative, avec des titres personnalisés affichant le nombre d'observations.
Copié !
%macro ecdf2(data,var);
data tmp (keep=&var);
set &data.;
run;
proc sort data=tmp;
by &var.;
run;
data tmp;
set tmp nobs=obs;
nv = _N_;
p = nv/obs;
ecdf = int(p*100);
call symput("nbvalue",compress(nv));
run;
proc sort data=tmp; by nv; run;
/*
title "Cumulative Distribution of &var.";
symbol1 i=j v=none c=blue;
proc gplot data=tmp;
plot ecdf * &var;
run;
quit;
title;
*/
title "Distribution of &var.";
title2 "Number of observations = &nbvalue";
proc sgplot data=tmp;
histogram &var;
XAXIS label="&var" grid;
YAXIS label="Percentage";
run;
title "Cumulative Distribution of &var.";
title2 "Number of observations = &nbvalue";
proc sgplot data=tmp;
series x=&var y=ecdf;
XAXIS label="&var" grid;
YAXIS label="Cumulative Percent" grid;
run;
title;
title2;
%mend ecdf2;
1
%macro ecdf2(DATA,var);
2
3
DATA tmp (keep=&var);
4
SET &DATA.;
5
RUN;
6
7
PROC SORTDATA=tmp;
8
BY &var.;
9
RUN;
10
11
DATA tmp;
12
SET tmp nobs=obs;
13
nv = _N_;
14
p = nv/obs;
15
ecdf = int(p*100);
16
call symput("nbvalue",compress(nv));
17
RUN;
18
PROC SORTDATA=tmp; BY nv; RUN;
19
20
21
/*
22
title "Cumulative Distribution of &var.";
23
symbol1 i=j v=none c=blue;
24
proc gplot data=tmp;
25
plot ecdf * &var;
26
run;
27
quit;
28
title;
29
*/
30
title "Distribution of &var.";
31
title2 "Number of observations = &nbvalue";
32
PROC SGPLOTDATA=tmp;
33
histogram &var;
34
XAXIS label="&var" grid;
35
YAXIS label="Percentage";
36
RUN;
37
38
title "Cumulative Distribution of &var.";
39
title2 "Number of observations = &nbvalue";
40
PROC SGPLOTDATA=tmp;
41
series x=&var y=ecdf;
42
XAXIS label="&var" grid;
43
YAXIS label="Cumulative Percent" grid;
44
RUN;
45
title;
46
title2;
47
48
%mend ecdf2;
7 Bloc de code
MACRO Call
Explication : Cet appel exécute la macro `%ecdf2` en utilisant le jeu de données `sashelp.cars` et la variable `Horsepower` pour effectuer l'analyse et la visualisation alternatives de la distribution.
Copié !
%ecdf2(sashelp.cars,Horsepower);
1
%ecdf2(sashelp.cars,Horsepower);
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Created : 21/07/2017 (fr), Last update : 21/07/2017 (fr), Author(s) : Nicolas Dupont
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.