El script se divide en dos partes principales, cada una utilizando una macro diferente para generar gráficos ODS. La primera macro, `%ecdf`, utiliza el procedimiento `UNIVARIATE` para obtener estadísticas descriptivas, un histograma y un trazado de la función de distribución acumulativa. La segunda macro, `%ecdf2`, calcula manualmente la función de distribución acumulativa a través de un `DATA STEP` y luego utiliza `PROC SGPLOT` para crear el histograma y el gráfico ECDF. Las salidas gráficas se guardan en una ruta especificada por `ods listing gpath`.
Análisis de datos
Type : SASHELP
Los datos utilizados para el análisis provienen de la librería SASHELP (`sashelp.cars`), que es una librería interna de SAS que contiene conjuntos de datos de ejemplo.
1 Bloque de código
ODS Configuration
Explicación : Este bloque configura el destino de las salidas ODS (Output Delivery System) para los gráficos. Especifica una ruta de directorio (`gpath`) y una resolución (`image_dpi`) para las imágenes generadas.
Explicación : Este bloque configura las opciones globales para los gráficos ODS. Reinicia los parámetros, define la prioridad de los atributos, el tamaño de la imagen, el nombre del archivo (`ecdf1`) y los formatos de imagen (PNG).
Explicación : Esta macro, `%ecdf`, está diseñada para generar análisis descriptivos y gráficos de distribución para una variable dada. Utiliza `PROC UNIVARIATE` tres veces: para estadísticas descriptivas básicas, para un histograma con un recuadro que muestra el número de observaciones, y para un trazado de la función de distribución acumulativa (CDF) con una opción para una curva normal y un recuadro.
¡Copiado!
%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 Bloque de código
MACRO Call
Explicación : Esta llamada ejecuta la macro `%ecdf` utilizando el conjunto de datos `sashelp.cars` y la variable `Horsepower` para generar los análisis y gráficos correspondientes.
¡Copiado!
%ecdf(sashelp.cars,Horsepower);
1
%ecdf(sashelp.cars,Horsepower);
5 Bloque de código
ODS Graphics Configuration
Explicación : Este bloque configura las opciones globales para los gráficos ODS, similar al anterior, pero para el segundo conjunto de gráficos. Define el nombre de la imagen como `ecdf2`.
Explicación : Esta macro, `%ecdf2`, implementa un enfoque manual para calcular y visualizar la ECDF. Comienza creando un conjunto de datos temporal (`tmp`) con la variable de interés, lo clasifica y luego calcula la proporción acumulativa (`ecdf`) de cada observación en un `DATA STEP`. Se utiliza un `CALL SYMPUT` para almacenar el número de observaciones en una macrovariable. Finalmente, utiliza `PROC SGPLOT` para generar un histograma y un gráfico de serie para la función de distribución acumulativa, con títulos personalizados que muestran el número de observaciones.
¡Copiado!
%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 Bloque de código
MACRO Call
Explicación : Esta llamada ejecuta la macro `%ecdf2` utilizando el conjunto de datos `sashelp.cars` y la variable `Horsepower` para realizar el análisis y la visualización alternativos de la distribución.
¡Copiado!
%ecdf2(sashelp.cars,Horsepower);
1
%ecdf2(sashelp.cars,Horsepower);
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Created : 21/07/2017 (fr), Last update : 21/07/2017 (fr), Author(s) : Nicolas Dupont
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.