Expertentipp:

Wussten Sie schon, wie Sie bei der Berechnung von Quantilen mehrerer Variablen die prozedurbasierten Ergebnisse direkt in tabellarischer Form, d.h. als mehrzeiligen SAS Datensatz ausgeben können?

Und so geht's:
Viele SAS Prozeduren erlauben die Spezifikation mehrerer Variablen zur gleichzeitigen Ermittlung deskriptiver Statistiken. Die Output-Datensätze dieser Prozeduren weisen aber oft nicht die erforderliche Gestalt für eine anschließende Erstellung von Grafiken oder weiterführende Analysen auf, so dass eine Umformatierung dieser Datenätze mitunter unvermeidlich ist.

Die nachfolgenden Ausführungen demonstrieren zwei Möglichkeiten, berechnete Quantile für mehrere Variablen direkt in tabellarischer Form, d.h. als SAS Datensatz mit den Variablen in der einen und den Quantilen in der anderen Dimension (Zeile oder Spalte) aus den entsprechenden Prozeduren heraus zu erzeugen.

Für Standard-Quantile (wie das 5%-, 25%-, 75%- oder 95%-Quantil) bietet sich die Prozedur MEANS mit der STACKODSOUTPUT-Option an, die seit der SAS Version 9.3 zur Verfügung steht:

ods output summary=MeansLongPctls;

proc means data=sashelp.cars StackODSOutput P5 P25 P75 P95;
  var mpg_city mpg_highway;
run;

proc print data=MeansLongPctls noobs;
run;

Ohne Verwendung der STACKODSOUTPUT-Option besteht der Output-Datensatz der Prozedur MEANS hingegen nur aus einer Zeile und ist damit zur Nutzung in weiteren Analysen eher unvorteilhaft:

proc means data=sashelp.cars noprint;
  var mpg_city mpg_highway;
  output out=MeansWidePctls P5= P25= P75= P95= / autoname;
run;

proc print data=MeansWidePctls(drop=_type_ _freq_) noobs;
run;

Für spezifische bzw. individuelle Quantile (wie das 2.5%- oder das 97.5%-Quantil) ist sicherlich die Prozedur UNIVARIATE die naheliegende (weil bekannteste) Option. Allerdings generiert auch diese Prozedur bei der Analyse mehrerer Variablen einen einzeiligen Output-Datensatz:

proc univariate data=sashelp.cars noprint;
  var mpg_city mpg_highway;
  output out=UniWidePctls pctlpre=CityP_ HwyP_ pctlpts=2.5,97.5;
run;

proc print data=UniWidePctls noobs;
run;

Eine einfache Alternative, die gleichzeitig die Erstellung eines mehrzeiligen Output-Datensatzes beinhaltet, repräsentiert die Prozedur STDIZE:

proc stdize data=sashelp.cars outstat=StdLongPctls pctlpts=2.5,97.5;
  var mpg_city mpg_highway;
run;

proc print data=StdLongPctls noobs;
  where _type_ =: 'P';
run;

 

Somit lässt sich auch bei der Berechnung spezifischer Quantile eine ggfs. notwendige Umformatierung des Output-Datensatzes umgehen.

Diesen und weitere Tipps zum Thema erhalten Sie im Kurs Statistik 1: Varianzanalyse, Regression und logistische Regression.