Veröffentlicht am :

Vergleichende Analyse und Visualisierung des BMI

Dieser Code ist auch verfügbar auf: English Español Français
Das Skript ist in drei Hauptteile gegliedert. Zunächst wird PROC FCMP verwendet, um vier benutzerdefinierte Funktionen zu erstellen: BMI (Standard-BMI), newBMI (eine BMI-Variante), BMIDiff (die Differenz zwischen den beiden BMIs) und absBMIDiff (der absolute Wert dieser Differenz). Diese Funktionen werden in der Bibliothek sasuser.cmplib gespeichert. Zweitens definiert PROC TEMPLATE ein STATGRAPH-Modell namens 'bmi'. Dieses Modell enthält eine rangeAttrMap zur Farbgebung der Blasen des Diagramms basierend auf der BMI-Differenz und ein bubblePlot, das Höhe, Gewicht und die absolute BMI-Differenz visualisiert. Die Farbe der Blasen zeigt an, ob der neue BMI höher oder niedriger als der alte ist. Schließlich verwendet PROC SGRENDER das Modell 'bmi' mit den Daten von sashelp.class, um das Diagramm zu erstellen und so den Vergleich der beiden BMI-Berechnungsmethoden für jedes Individuum im Datensatz zu visualisieren.
Datenanalyse

Type : SASHELP


Die für die Diagrammerstellung verwendeten Daten stammen aus dem Datensatz `sashelp.class`, einem in SAS integrierten und somit systeminternen Demonstrationsdatensatz.

1 Codeblock
PROC FCMP
Erklärung :
Dieser Block verwendet `PROC FCMP`, um vier benutzerdefinierte Funktionen zu definieren, die später verwendet werden. `BMI` berechnet den klassischen Body-Mass-Index. `newBMI` berechnet eine alternative Version des BMI mit einer anderen Formel (Potenz 2.5 anstelle von 2). `BMIDiff` berechnet die Differenz zwischen dem neuen und dem alten BMI. Schließlich gibt `absBMIDiff` den absoluten Wert dieser Differenz zurück. Diese Funktionen werden kompiliert und in der Bibliothek `sasuser.cmplib.test` gespeichert, um wiederverwendbar zu sein. Die Anweisung `options cmplib=sasuser.cmplib;` macht diese Funktionen für die folgenden Schritte zugänglich.
Kopiert!
1PROC FCMP outlib=sasuser.cmplib.test;
2/* http://people.maths.ox.ac.uk/trefethen/bmi.html */
3 function BMI(height_inch, weight_lb);
4 return (703 * weight_lb / (height_inch ** 2));
5 endsub;
6 function newBMI(height_inch, weight_lb);
7 return (5734 * weight_lb / (height_inch ** 2.5));
8 endsub;
9 function BMIDiff(height_inch, weight_lb);
10 return (newBMI(height_inch, weight_lb)
11 - BMI(height_inch, weight_lb));
12 endsub;
13 function absBMIDiff(height_inch, weight_lb);
14 return(abs(BMIDiff(height_inch, weight_lb)));
15 endsub;
16RUN; QUIT;
17options cmplib=sasuser.cmplib;
2 Codeblock
PROC TEMPLATE (STATGRAPH)
Erklärung :
Dieser Block definiert ein SG-Diagrammmodell (SGPLOT) namens 'bmi' mittels `PROC TEMPLATE`. Er konfiguriert eine `rangeAttrMap` (`ram1`) zur Steuerung der Blasenfarben: von Grün zu Weiß für negative BMI-Differenzen (neuer BMI < alter BMI) und von Weiß zu Rot für positive Differenzen (neuer BMI > alter BMI). Die Variable `bmiDiff` wird dynamisch durch Auswertung der zuvor definierten Funktion `BMIDiff` erstellt. Der Diagrammtitel wird festgelegt und ein `bubblePlot` wird erstellt, bei dem die Blasengröße proportional zum absoluten Wert der BMI-Differenz (`absBMIDiff`) ist und die Farbe durch `bmiDiff` über die `rangeAttrMap` bestimmt wird. Eine durchgehende Legende wird hinzugefügt, um die Farbgebung zu erläutern. Eine Fußnote gibt die Quelle der BMI-Formeln an.
Kopiert!
1PROC TEMPLATE;
2 define statgraph bmi;
3 beginGraph;
4 rangeAttrMap name="ram1";
5 range min - 0 / rangeColorModel=(green white);
6 range 0 - max / rangeColorModel=(white red);
7 endRangeAttrMap;
8 rangeAttrVar var=eval(BMIDiff(height, weight)) attrVar=bmiDiff attrMap="ram1";
9 entryTitle "BMIs for sashelp.class: New vs Old";
10 layout overlay;
11 bubblePlot x=weight y=height size=eval(absBMIDiff(height, weight)) /
12 name="bp1"
13 dataTransparency=0.3
14 colorResponse=bmiDiff
15 ;
16 continuousLegend "bp1" / title='New - Old' vAlign=bottom;
17 endLayout;
18 entryFootnote halign=left "BMI formulae from: http://people.maths.ox.ac.uk/trefethen/bmi.html";
19 endGraph;
20 END;
21RUN;
3 Codeblock
PROC SGRENDER
Erklärung :
Dieser Block verwendet `PROC SGRENDER`, um das Diagramm zu erstellen. Er gibt an, dass die Daten aus dem Datensatz `sashelp.class` stammen und dass das zu verwendende Diagrammmodell 'bmi' ist, das im vorherigen `PROC TEMPLATE`-Block definiert wurde. Dieser Schritt führt die visuelle Erstellung des Bubble-Plots aus, wobei die FCMP-Funktionen und die im Template definierten Stilregeln angewendet werden.
Kopiert!
1 
2PROC SGRENDER
3DATA=sashelp.class template=bmi;
4RUN;
5 
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 : Referenz-URL für BMI-Formeln: http://people.maths.ox.ac.uk/trefethen/bmi.html, im Code zitiert.