SAS 9.4 - Weihnachtsbaum basteln (SAS Adventskalender 24. Türchen)

0

tuer23_blog

Beim adventlichen Weihnachtsstern Basteln am vierten Advent hob ich schon warnend den Finger und hielt Sie gemäß des Mottos „Save a Tree“ dazu an, beim Ausdruck  der Schnittmuster mit dem Papier ressourcenschonend umzugehen. Vor dem Hintergrund der in Paris erfolgreich verhandelten Begrenzungen des zukünftigen CO2-Ausstoßes,  muss man sich ja auch noch mal gründlich Gedanken machen, ob und wie ein Weihnachtsbaum überhaupt noch in Frage kommt.

Unsere bisherigen Themen: Business Analytics allgemein (1), Vergangenes analysieren – Künftiges prognostizieren (2), Assoziationsanalyse (3), Text Analytics / Net Promoter Scores (4), Clusteranalysen (5), Lineare Regression (6), Master Data Management (7), Forecasting (8), Optimierung (9), Textanalyse (10), Entscheidungsbäume (11), Trendanalyse (12), Zusammenfassung des Gelernten (13),  Netzwerkanalysen (14), Data Quality Steward (15), Optimierung 2 (16), Prozesskontrolle (17), Predictive Maintenance (18), Scoring (19), Basteln mit SAS9.4 (20), Simulation (21), Routenplanung (22), Bedingungen (23)

Bevor wir aber jetzt die Tugendpolizei bemühen, kann ich gleich schon wieder Entwarnung geben, denn eine kürzlich durchgeführte Australische Studie ergab, dass ein Plastikbaum erst nach 17 Jahren Nutzung eine günstigere CO2 Bilanz aufweist. Nehmen wir das Mal als eine gesicherte Erkenntnis, die Sie in ihre Entscheidungsfindung einfließen lassen können. Andere Entscheidungskriterien sind die Kosten eines Baumes, Brandrisiken, Verschmutzung der Wohnung durch Nadelfall, weihnachtliches Wohlbefinden durch Tannenduft im Haus, Spaß an der körperlichen Betätigung beim  Fällen eines Baumes oder das damit verbundene Unfallrisiko und selbstverständlich Tradition bzw. die erzieherische Pflicht der Eltern, den eigenen Kindern das Erlebnis eines echten Weihnachtbaumes nicht vorzuenthalten.

SAS 9.4 - Weihnachtsbaum basteln

Um es kurz zu machen, die  klassische Auswahl liegt weiterhin zwischen Tanne, Fichte, Kiefer, Nordmanntanne oder Plastik-Atrappe. SAS Bietet Ihnen aber eine weitere innovative Option mit besonders niedrigem CO2 Footprint: Ein Tannenbaum als Fraktal, d.h. ein grafisches Objekt, dass  in einer unendlichen, rekursiven Schleife aus unzähligen verkleinerten Kopien seiner selbst aufgebaut wird. Die geometrische Form des Baumes reproduziert sich im Ast. Die Form des Astes im Zweig, und der Zweig in der Tannennadel...

Dazu müssen wir aber wieder ein wenig mit SAS Code basteln. Wenn wir uns nun schon ernsthaft mit dem Unendlichen beschäftigen, dann benötigen wir professionelle Werkzeuge, die weit über Base SAS und SAS/Graph hinaus gehen. Wir werden SAS IML einsetzen. IML steht für “Interaktiv Matrix Language“. Wenn man das Spektrum der SAS Produkte mit bekannten Lego System-Baukästen als Weihnachtsgeschenke vergleicht, so entspricht SAS IML dem Star-Wars-Todesstern. Aber keine Angst, ich werde nicht eine unendliche Anzahl an SAS/IML Code Snipplets wie die Lego Steine des Todessterns bei Ihnen im Wohnzimmer unterm Weihnachtsbaum verstreut herumfliegen lassen und den gesamten Familienverband über die Feiertage mit dem Zusammenbau lahm legen. Bei uns geht es in weniger als 50 geschlossenen Code-Zeilen ein wenig gepflegter und geordneter zu:

proc iml;
/* For an explanation see
https://blogs.sas.com/content/iml/2012/12/12/
iterated-function-systems-and-barnsleys-fern-in-sas/
Each row is a 2x2 linear transformation
Christmas tree */
L = {0.03 0     0   0.1,

0.85 0.00 0.00 0.85,
0.8   0.00 0.00 0.8,

0.2 -0.08 0.15 0.22,

-0.2   0.08 0.15 0.22,

0.25 -0.1   0.12 0.25,

-0.2   0.1   0.12 0.2};

/* ... and each row is a translation vector */

B = {0 0,

0 1.5,

0 1.5,

0 0.85,

0 0.85,

0 0.3,

0 0.4 };

prob = { 0.02 0.6 0.1 0.07 0.07 0.07 0.07};

L = L`; B = B`; /* For convenience, transpose the L and B matrices */

/* Iterate the discrete stochastic map */

N = 1e5;         /* number of iterations */

x = j(2,N); k = j(N,1);

x[,1] = {0, 2};   /* initial point */

call randgen(k, "Table", prob); /* values 1-7 */

do i = 2 to N;

x[,i] = shape(L[,k[i]], 2)*x[,i-1] + B[,k[i]]; /* iterate */

end;

/* Plot the iteration history */

y = x`;

create IFS from y[c={"x" "y"}]; append from y; close IFS;

quit;

/* basic IFS Christmas Tree */

ods graphics / width=600px height=1200px;

proc sgplot data=IFS;

title1 "Frohe Weihnachten";

title2 "wünscht Ihnen TobyText";

scatter x=x y=y / markerattrs=(size=1 color=ForestGreen);

yaxis display=none;

xaxis display=none;

run;

Kopieren Sie den SAS Code und schicken Sie ihn im SAS Programm Editor, im SAS Studio oder im Enterprise  Guide ab. Wer keine SAS 9.4 (TS1M3) Umgebung oder keine Lizenz für SAS/ IML hat, kann sich auch noch kurz vor der Bescherung in 5 Minuten von zuhause aus bei SAS On Demand for Academics registrieren und den Code in der kostenlosen SAS Cloud abschicken. Dort ist die aktuelle Version von SAS/IML installiert. Lassen Sie sich vom Blick in die Unendlichkeit überraschen. Die rekursive Berechnung bis dorthin benötigt weniger als eine CPU Sekunde - ihr CO2-Ausstoß ist vernachlässigbar gering. Man kann das Fraktal betrachten, in der ODS Graphics Anweisung über die „Width=“ und „Height=“ Parameter  strecken und stauchen bis er in Ihr Wohnzimmer passt. Dann bringen Sie ihn zur Anzeige auf ihren Monitor- oder Fernseher oder projizieren ihn gar über einen Beamer an die Wohnzimmerwand. Dadurch  erhöht sich sein CO2-Footprint allerdings wieder.

b1

Viel Spaß damit! Ich wünsche eine entspannte Weihnachtszeit.

TobyText

PS: Sollten Sie unterm Weihnachtsbaum das Bedürfnis verspüren zu tweeten und kein SAS/IML zur Hand haben, so habe ich hier noch eine Kurzversion mit BASE SAS, deren Resultat Sie der Empfänger dann im SAS Log anschauen muss:

DATA;put@9'@';do i=0 to 8;b=substr(repeat('*0',i),1,2*i+1);put@(9-i)b;end;put@8'| |';RUN;

b2

Share

About Author

Toby Text

Principal Solutions Architect

Sie schauen gerade auf mein Profilbild und verstehen wahrscheinlich genau so wenig wie ich, nämlich gar nichts. Vermutlich sehen Sie wahrlos verstreute Pixel auf einem Quadrat. Einige davon bilden wenige offensichtliche Grundmuster, die aber auch nichts konkretes aussagen. Man hat nicht die geringste Idee über die Zusammenhänge der Pixel und den Gesamtinformationen des Bildes. So sieht die mühsame Realität des Alltages eines Data Scientist aus. Wie das menschliche Auge bei der Betrachtung des Bildes, so ist der Data Scientist ratlos und benötigt Hilfe, wenn sich die Berge an operativen Daten vor ihm anhäufen. Hätten Sie gedacht, dass Sie die Lösung zum Verständnis des obigen Bildes vielleicht sogar schon seit langem mit sich in Ihrer Tasche tragen, davon nur noch nicht wussten? Überlegen Sie mal kurz und probieren Sie es aus. Und so wie Sie mit Ihrer Intuition vielleicht eine praktikable Lösung gefunden haben, so hat ein Data Scientist im richtigen Moment den genialen Einfall und findet einen erleuchtenden methodischen Ansatz den er allerdings noch nie konkret angewendet hat, zu dessen Realisierung er nur noch in die Tasche greifen muss, um die passende Softwarefunktionalität für die Implementierung herauszuziehen. Über solche interessante Softwarefunktionalität für Ihre Projekte möchte ich Sie informieren in meinem Blog.

Leave A Reply

Back to Top