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.
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;