Das Skript ist in zwei Hauptteile unterteilt, die jeweils ein anderes Makro zur Generierung von ODS-Grafiken verwenden. Das erste Makro, `%ecdf`, verwendet die Prozedur `UNIVARIATE`, um deskriptive Statistiken, ein Histogramm und einen Plot der kumulativen Verteilungsfunktion zu erhalten. Das zweite Makro, `%ecdf2`, berechnet die kumulative Verteilungsfunktion manuell über einen `DATA STEP` und verwendet anschließend `PROC SGPLOT`, um das Histogramm und die ECDF-Grafik zu erstellen. Die grafischen Ausgaben werden in einem durch `ods listing gpath` angegebenen Pfad gespeichert.
Datenanalyse
Type : SASHELP
Die für die Analyse verwendeten Daten stammen aus der SASHELP-Bibliothek (`sashelp.cars`), einer internen SAS-Bibliothek, die Beispieldatensätze enthält.
1 Codeblock
ODS Configuration
Erklärung : Dieser Block konfiguriert das Ziel der ODS-Ausgaben (Output Delivery System) für Grafiken. Er gibt einen Verzeichnispfad (`gpath`) und eine Auflösung (`image_dpi`) für die generierten Bilder an.
Erklärung : Dieser Block konfiguriert die globalen Optionen für ODS-Grafiken. Er setzt die Parameter zurück, definiert die Attributpriorität, die Bildgröße, den Dateinamen (`ecdf1`) und die Bildformate (PNG).
Erklärung : Dieses Makro, `%ecdf`, dient zur Generierung deskriptiver Analysen und Verteilungsgrafiken für eine gegebene Variable. Es verwendet `PROC UNIVARIATE` dreimal: für grundlegende deskriptive Statistiken, für ein Histogramm mit einem Einleger, der die Anzahl der Beobachtungen anzeigt, und für einen Plot der kumulativen Verteilungsfunktion (CDF) mit einer Option für eine Normalverteilungskurve und einem Einleger.
Kopiert!
%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 Codeblock
MACRO Call
Erklärung : Dieser Aufruf führt das Makro `%ecdf` unter Verwendung des Datensatzes `sashelp.cars` und der Variable `Horsepower` aus, um die entsprechenden Analysen und Grafiken zu generieren.
Kopiert!
%ecdf(sashelp.cars,Horsepower);
1
%ecdf(sashelp.cars,Horsepower);
5 Codeblock
ODS Graphics Configuration
Erklärung : Dieser Block konfiguriert die globalen Optionen für ODS-Grafiken, ähnlich dem vorherigen, jedoch für den zweiten Satz von Grafiken. Er setzt den Bildnamen auf `ecdf2`.
Erklärung : Dieses Makro, `%ecdf2`, implementiert einen manuellen Ansatz zur Berechnung und Visualisierung der ECDF. Es beginnt mit der Erstellung eines temporären Datensatzes (`tmp`) mit der interessierenden Variable, sortiert diesen und berechnet dann den kumulativen Anteil (`ecdf`) jeder Beobachtung in einem `DATA STEP`. Ein `CALL SYMPUT` wird verwendet, um die Anzahl der Beobachtungen in einer Makrovariable zu speichern. Schließlich wird `PROC SGPLOT` verwendet, um ein Histogramm und ein Seriendiagramm für die kumulative Verteilungsfunktion zu generieren, mit benutzerdefinierten Titeln, die die Anzahl der Beobachtungen anzeigen.
Kopiert!
%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 Codeblock
MACRO Call
Erklärung : Dieser Aufruf führt das Makro `%ecdf2` unter Verwendung des Datensatzes `sashelp.cars` und der Variable `Horsepower` aus, um die alternative Analyse und Visualisierung der Verteilung durchzuführen.
Kopiert!
%ecdf2(sashelp.cars,Horsepower);
1
%ecdf2(sashelp.cars,Horsepower);
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Created : 21/07/2017 (fr), Last update : 21/07/2017 (fr), Author(s) : Nicolas Dupont
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.