206
1 r, Übung, Schulung: mit komplexen und umfangreichen Datensätzen orte: ahlreichen Fragestellungen und Forschungsthemen tieren umfangreiche Datenbestände piel: PISA, SOEP (Socio-Economic-Panel), Daten über Studienverlauf/die Benotungen, Statistisches Bundes edarf besonderer Techniken, um mit derartig umfangr nbeständen angemessen umzugehen, nicht in den Menge ersinken: yntax acros ata-Mining matisierung von Abläufen, Erzeugung von Routinen

Seminar, Übung, Schulung: Umgang mit komplexen und umfangreichen Datensätzen Stichworte:

  • Upload
    lis

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

Seminar, Übung, Schulung: Umgang mit komplexen und umfangreichen Datensätzen Stichworte: Zu zahlreichen Fragestellungen und Forschungsthemen existieren umfangreiche Datenbestände - PowerPoint PPT Presentation

Citation preview

  • *Seminar, bung, Schulung:

    Umgang mit komplexen und umfangreichen Datenstzen

    Stichworte:

    Zu zahlreichen Fragestellungen und Forschungsthemen existieren umfangreiche Datenbestnde Beispiel: PISA, SOEP (Socio-Economic-Panel), Daten ber den Studienverlauf/die Benotungen, Statistisches Bundesamt Es bedarf besonderer Techniken, um mit derartig umfangreichen Datenbestnden angemessen umzugehen, nicht in den Mengen zu versinken: Syntax Macros Data-Mining Automatisierung von Ablufen, Erzeugung von Routinen

  • *Eine bekannte Daumenregel im Analysegeschft lautet:Etwa 80% der Arbeit liegt in der Datenbereinigung und -aufbereitung! Ungeachtet dieser Erkenntnis dominieren in der Wissensvermittlung Einfhrungen in deskriptiver Statistik und multivariaten Verfahren, die meist saubere und entsprechend aufbereitete Daten voraussetzen.Fragen der Datenqualitt und ihrer Auswirkung werdenhingegen kaum thematisiert.

    Das Seminar setzt genau an diesem Missverhltnis an.

  • *In diesem Seminar, bung, Schulung werden basale Techniken zu diesem Thema vorgestellt und eingebt.

    Dazu sollten wir uns ber eine dafr geeignete Form der Vermittlung verstndigen!

    Der geplante grobe inhaltliche Ablauf:

    Einfhrung in die Thematik Einlesen von verschiedenen Datenstzen Syntax und Macro-Prozeduren zum Einlesen Zusammenstellen unterschiedlichster Variablenstze Generieren neuer Variablen Makroskopischen Analysen Techniken der EDA (Explorative Daten Analyse), Data-Mining

  • *Datenmanagement ist die Grundlage jeder Datenverarbeitung. Datenmanagement bedeutet u.a.:

    Transponieren Bilden von Subsets Bilden von Subsets ber Filter/Bedingungen Bilden neuer Variablen oder Werte ber Umkodieren oder arithmetische Operationen Zusammenfgen von Datenstzen Bereinigen der Datenstze (Missing values, Ausreier, Anpassungen bei Nicht-Normalverteilung)

  • *Zeiten, Blcke, Inhalte!!??

    12.07.2010Start: Information, Planung, Abstimmung Einfhrung in die Thematik Kurzeinfhrung SPSS Syntax und Makros in SPSS13.07.2010Einlesen von Daten mit Syntax + MakroSchleifen Berechnung neuer Variablen14.07.2010Fortsetzung: Berechnung neuer Variablen, Auswahl und Zusammenstellung spezifischer Datenstze15.07.2010Statistika und StatSoft Data Miner: Kurzeinfhrung in die Funktionen und die Werkzeuge Aufbau einfacher AnalysenSpterer Termin16.07.2010Fortsetzung: Arbeiten mit dem Data MinerSpterer Termin

    MoBetreute Eigenarbeit: Bearbeitung von vorgegebenen AufgabenSpterer TerminDiBetreute Eigenarbeit: Bearbeitung von vorgegebenen AufgabenSpterer Termin

  • *Die Phasen im Data Mining ProzessDatenSelektierteDatenSelektionVorverarbeitungTransformationData MiningInterpretationVorbereiteteDatenTransformierteDatenMusterWissen/ Modelle

  • *Was ist die generelle Idee, das generelle hier behandelte Konzept?Es gibt selbstverstndlich eine ganze Reihe hchst unterschiedlicher Fragestellungen. Ich behandele mit Ihnen eine Form wie bspw.:

    Was unterscheidet Schler mit hoher und mit niedriger Leistung? Wann wird viel, wann wird wenig Kaffee verkauft und wovon ist dies abhngig? Wie lassen sich Kunden mit einem hohen Kreditrisiko von denen mit geringem Kreditrisiko unterscheiden? Wo liegen die Grnde eines schnellen, erfolgreichen Studiums? Wovon ist bei einem Schiffsuntergang das berleben abhngig?Betrachten wir zunchst kategoriale Daten:

  • *Ihnen liegt bspw. Ein Datensatz von 2201 Personen vor, die auf der Titanic unterwegs waren. Sie haben Angaben zu: Kabinenklasse Altersgruppe Geschlecht berlebt/Vermisst(siehe Tabelle)Wie knnen Sie der eben gestellten Frage nachgehen?

  • *Durch die Berechnung von sog. Klassifikationsbumen knnen Sie der Frage so nach- gehen: Sie sehen, welcher Faktor der wichtigste ist und knnen weitere Abhngigkeiten erkennen:

  • *Was ist die generelle Idee, das generelle hier behandelte Konzept?Erster Schritt: Verteilung anschauen, Daten inspizierenBetrachten wir jetzt metrische Daten:

  • *Ggf. Daten verndern, hier als ein Beispiel: alle Werte in absolute Werte umrechnen. Sie mssen etwas sehen!!

  • *Zweiter Schritt: Unterteilungen vornehmen, Bewertungen vornehmen

  • *Dritter Schritt: Wovon ist gut oder schlecht abhngig? Dazu nach den Variablen suchen, die zwischen diesen beiden Kategorie trennen

  • *Vierter Schritt: Wovon ist gut oder schlecht abhngig? Hierarchie aller gut schlecht beeinflussenden Faktoren betrachten

  • *Vierter Schritt: Wovon ist gut oder schlecht abhngig? Gte der erreichten Aufklrung berprfen

  • *TransformationData MiningInterpretationVorbereiteteDatenTransformierteDatenMusterWissen/ ModelleWie geht Erkenntnisgewinn?

    Ein erster, flchtiger Blick

  • *Fisher (1936) Irisdaten: Lnge und Breite von Blttern und Kelchen fr 3 Iristypen

    KelchlngeKelchbreiteBlattlngeBlattbreiteIristyp153,31,40,2Setosa26,42,85,62,2Virginic36,52,84,61,5Versicol46,73,15,62,4Virginic56,32,85,11,5Virginic64,63,41,40,3Setosa76,93,15,12,3Virginic86,22,24,51,5Versicol95,93,24,81,8Versicol104,63,610,2Setosa116,134,61,4Versicol1262,75,11,6Versicol136,535,22Virginic145,62,53,91,1Versicol156,535,51,8Virginic165,82,75,11,9Virginic176,83,25,92,3Virginic185,13,31,70,5Setosa195,72,84,51,3Versicol206,23,45,42,3Virginic217,73,86,72,2Virginic226,33,34,71,6Versicol236,73,35,72,5Virginic247,636,62,1Virginic254,92,54,51,7Virginic

  • * Kategoriale Werte (gut/schlecht) Metrische Werte (1, 2, 3, 4, ..) [Nominale, Ordinale Werte]Split:Welche Variable trennt am besten bei welchem Wert?CART (classification and regression trees)

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *Fehlklassifikationsmatrix Lernstichprobe (Irisdat) Matrix progn. (Zeile) x beob. (Spalte) Lernstichprobe N = 150Prognost. Klasse x Beob. Klasse n's (Irisdat) Matrix progn. (Zeile) x beob. (Spalte) Lernstichprobe N = 150

    Klasse - SetosaKlasse - VersicolKlasse - VirginicSetosa00Versicol04Virginic02

    Klasse - SetosaKlasse - VersicolKlasse - VirginicSetosa5000Versicol0484Virginic0246

  • *Split-Bedingung (Irisdat) Split-Bedingung je Knoten

    Split - Konst.Split - Variable1-2,09578Blattlnge23-1,64421Blattbreite

  • *

  • *

  • *

  • *

  • *

  • *Daten

    DatenteilenTrainings-daten

    Validierungs-daten

    Modell- bewertung

  • *

    Disagreement table for observed variable (Compute Best Predicted Classification from all Models) Observed variable: KreditwrdigkeitPMML_GDA3Pred for Kreditwrdig-keit - % IncorrectPMML_CTrees4Pred for Kreditwrdig-keit - % IncorrectPMML_CCHAID5Pred for Kreditwrdig-keit - % Incorrect

    VotedPrediction for Kreditwrdig-keit - % Incorrect Nein8,4040115,111809,1750211,71935Ja21,5035011,8007024,8251717,91958

  • *

  • *

  • *Eine Alternative: ROC Kurven

    (Receiver Operating Characteristic)Sensitivitt t = Richtig PositiveRichtig Positive + Falsch NegativeSpezifitt = Richtig NegativeRichtig Negative + Falsch Positive

  • *PrediktorKriteriumrichtig positivenfalsch positivenfalsch negativerichtig negativeangenommenabgelehnterfolgreichnicht-erfolgreich50505050

  • *Nachdenken, was die erzielten Ergebnisse bedeuten!!

  • *Vorbereitung:

    Zunchst mssen wir gemeinsam unsere Rechner vorbereiten, um die Einstellungen des SPSS so zu konfigurieren, dass der automatisch generierte Programmiercode auch gefunden und genutzt werden kann.

    Zugleich bentigt jeder von Ihnen einen eigenen Ordner im Verzeichnis Komplexe Daten auf dem Laufwerk N:\.

    Diese beiden Einstellungen mssen wir nun vornehmen.

  • *Der Speicherort des Syntax- Journals finden Sie unter: Bearbeiten Optionen/Options File LocationsSie knnen alle im Programm auf der Windows-Oberflche durchgefhrten Arbeiten in einem Journal aufzeichnen lassen. Dazu stehen zwei Optionen zur Verfgung. berschreiben oder Anhngen

  • *DatenSelektierteDatenSelektionVorverarbeitungVorbereiteteDatenErster Teil:Es gibt verschiedene Mglichkeiten:

    Datenbanken, Abfrage und Zusammenstellung mit SQL (Structured Query Language) Nutzung von Syntax- und Macro-Prozeduren, bspw. aus SPSS heraus Die Vorteile/Nachteile: SQL ist oft schneller, mchtiger. Hat aber Einschrnkungen, weniger Transparenz Syntax, Macros erlauben mehr Operationen, geben Einblick in Zwischenresultate; sind entsprechend aufwndiger und (etwas) langsamer, erfordern Zwischenschritte

  • *

  • *

  • *DatenSelektierteDatenSelektionVorverarbeitungVorbereiteteDatenDie hier favorisierte Alternative, Variante: Zusammenfhren und -fgen der Arbeitsdatenstze mit Hilfe von Syntax- und Macro-Prozeduren aus verschiedenen DatenstzenDatenSelektierteDatenSelektion & VorverarbeitungVorbereiteteDatenSyntax- und Macro-Prozeduren

  • *Einige Vorteile dieser Variante:

    Grere bersichtlichkeit, die Ergebnisse der Arbeits- schritte lassen sich einfach berprfen Die Makros knnen als eine Art von Projekt abgespeichert werden Verschiedenste Bearbeitungen lassen sich recht einfach kopieren und in fr andere Zwecke einfgen Der Umfang an Berechnungs- und Editieroptionen ist in (nahezu) allen Fllen grer

  • *Schritte im Datenmanagement:Doch bitte beachten:Nicht alle dieser Schritte knnen im Rahmen dieser Veranstaltung behandelt werden!!

  • *Ziel fr (nahezu) alle Tabellen ist folgendes Format, folgende Struktur:Jede Zeile stellt einen Fall dar

    CaseVariable_01 (Prdiktor1)Variable_02(Prdiktor2)Variable_03(Prdiktor3)Variable_04(Prdiktor4)..Abhngige Variable(n)

  • *Aufbau der Datenmatrix, um einen Kausalbaum, eine Kreuztabelle zu erstellen:

    V1V2V3V4V5V6Person/BedingungVgut_schlecht345232234336767787AG564887236454454BG345665897454CS789123567DS345459456EG234981345FS234438341GG657345656HS447IS

  • *Aufbau der Datenmatrix, um eine Korrelationsanalyse zu erstellen:

    V1V2V3: Gefahrene KilometerV4: GartengreV5: WohnraumV6: Gehalt345232234336767787564887236454454345665897454789123567345459456234981345234438341657345656447

  • *Ein (sehr) kurzer Blick auf einige Probleme:

    Probleme aufgrund von Missing Data (MD) Viele statistische und Data-Mining-Verfahren bentigen vollstndige Daten, etwa die Korrelations- und Regressionsanalyse oder Neuronale Netze MD vermindern die Datenbasis und damit die statistische Aussagekraft der Ergebnisse Bei systematischen MD werden Ergebnisse verflscht bzw. verzerrt Beim Einsatz von Filterfunktionen mssen die als Filter genutzten Werte vollstndig sein

  • *Verlauf ber die ZeitLeistungen in Klasse A und in Klasse BABAAAAAAAAAAABBBBBBBBBBBBB

  • *Verlauf ber die ZeitLeistungen in Klasse A und in Klasse BABAAAAAAAAAAABBBBBBBBBBBBB

  • *Verlauf ber die ZeitLeistungen in Klasse A und in Klasse BABAAAAAAAAAAABBBBBBBBBBBBBAusreier

  • *Leistungen in Klasse BAAAAAAAAAAAABse Falle Null:Missing Value: Fr eine Person liegen keine Angaben zu der Leistung in Klasse B vor0Leistungen in Klasse A

  • *Beachten Sie den Korrelationsquotienten!

  • *Beachten Sie den Korrelationsquotienten!

  • *Welche Mglichkeiten des Umgangs mit fehlenden Werten gibt es?Bei kategorialen Merkmalen hufigste Ausprgung der k nchsten NachbarnBei metrischen Merkmalen durchschnittlicher Wert der k nchsten NachbarnAber auch: Missing Values rauswerfen!

  • *Ein erster Schritt: Dateien ffnen:

    Der Befehl sieht wie folgt aus

    GET FILE='N:\Daten\D_Zwei\Daten-Mi-10.sav'.

    Wichtig sind die Anfhrungszeichen! Wichtig ist der Punkt am Schluss!!

    Wenn Sie nicht alle Variablen des Datensatzes einlesen mchten was sehr oft vorteilhaft ist knnen Sie folgende Zusatzbefehle einfgen:

    GET FILE='N:\Daten\D_Zwei\Daten-Mi-10.sav /KEEP = var001, var002 .

    Oder

    GET FILE='N:\Daten\D_Zwei\Daten-Mi-10.sav /DROP = var009, var010 .

  • *GETGET FILE='file' [LOCK={YES**}]{NO }[/KEEP={ALL** }] [/DROP=varlist]{varlist}[/RENAME=(oldvarnames=newvarnames)...][/MAP]

    **Default if the subcommand is omitted.

    Release HistoryRelease 17.0 LOCK keyword introduced on the FILE subcommand.

    ExampleGET FILE='/data/empl.sav'.Ausschnitt aus:

    Hilfe SPSS Command Syntax Reference GET FILE

  • *Ausschnitt aus:

    Hilfe SPSS Command Syntax Reference GET DATA

  • *Ein Beispiel fr einen einfach unvollstndigen Datensatz: Es wurde nur einmal am Anfang jeden Falles der Name, das Datum, die Zeit und eine Id eingegeben

  • *Wie lassen sich in solchen Fllen die fehlenden Werte fr jeden Fall einfgen?

    Auf die dumme Art: Jede Variable in die Hand nehmen Auf die kluge Art: ein kleines Programm schreiben

    Dazu beginnen wir zunchst mit dem Einlesen der Datei Daten-Mi-10.savUm ohne Wissen ber die Programmiersprache diese Aufgabe lsen zu knnen, laden wir die Datei per Maus und schauen dann in die Journal-Aufzeichnung

  • *Wichtig ist es jetzt, sich so genau wie nur mglich ber die Aufgabenstellung Gedanken zu machen:

    In jede leere Zeile der Variable ID soll der Wert eingetragen werden, der am Anfang eines Falles steht. Dabei muss beachtet werden, wo und wie ein neuer ID-Fall anfngt, bzw. wo ein alter aufhrt!

  • *Dazu ist es wichtig, die Funktionen Lag und Lead einzufhren: Bitte schauen Sie sich die folgende Darstellung genau an. In der Tabelle sind Werte einer Variable X eingetragen. Daneben sehen Sie das sog. Lag und das sog. Lead von X. Das Lag gibt immer den vor dem Wert in der Reihe stehenden Wert wieder; das Lead den jeweils nachfolgenden Wert.

    Bitte beachten Sie, dass fr den ersten Wert der Variable X kein Lag berechnet werden kann und ein sog. Missing Value (.) produziert wird!!

    XLagLead198.220220198305305220470470305

  • *Lassen Sie uns den Befehl einmal ausprobieren!

    ffnen Sie dazu bitte eine neue Datei, geben Sie einer Variable den Namen X und tragen Sie einfach ein paar Werte ad libitum ein.

    Jetzt mssen Sie, falls nicht bereits geschehen, eine neu Syntax ffnen und dort den folgenden Befehl eingeben:

    CREATE y = LAG(x, 1) .EXECUTE .

  • *Sie haben gesehen, wie der Befehl funktioniert. Um mit diesem Befehl unsere Aufgaben zu lsen, mssen noch zwei Probleme angegangen werden:

    Das Programm muss mit der ersten Zeile etwas anfangen knnen Dem Programm muss vorgeben werden, bei einem neuen Fall auch den dann neue ID-Wert zu nehmen Das Programm fhrt keine Berechnungen aus, wenn in den Spalten Missing Values stehen

  • *Erluterung: die sog. Caseummer, in der Befehlssyntax als $casenum ansprechbar

  • *Diese Probleme lsen wir wie folgt:

    RECODE ID (MISSING=0) .EXECUTE .

    IF ((Zeile > 0) & ($casenum > 1)) Id = Id + Lag(Id, 1) .EXECUTE .

    Mit dem ersten Befehl Recodieren wir alle Werte der Variable ID, die ein Missing Value beinhalten, in den Wert 0. Mit dem zweiten Befehl erstellen wir eine konditionale Bedingung an die Berechnung des LAGs Id: Nur wenn der Wert der Variable Zeile grer als Null ist und der Case (Fall) grer als Eins.

  • *Exkurs I

  • *Irrtumswahrscheinlichkeit:

    Ein p = 0,03 bedeutet:Die Wahrscheinlichkeit, dass unter der Annahme, die Nullhypothese sei richtig, das gegebene Untersuchungsergebnis oder ein noch extremeres auftritt, betrgt 0,03.Signifikanzstufen

    p

  • *Ergebnis einer hypothetischen Studie, in der die Ausbildung von Paaren verglichen wird (aus: Sedlmeier & Renkewitz 2008, 370):Es finden sich somit 7 positive Vorzeichen.

    Ist das Ergebnis auf dem 5% Niveausignifikant?

    Wie hoch ist die Wahrscheinlichkeit fr 0, 1, 2 etc. positive Vorzeichen?Vorzeichentest nach Fischer

    PartnerPartnerinVorzeichenStudiumRealschule+GymnasiumRealschule+RealschuleGymnasium-+-+=-+++

  • *

  • *

  • *Daten im *.txt - FormatDaten im *.sav - FormatDaten im *.sta - FormatEinlesen,Variablenspezifikation,Zusammenstellen,Variablenmodifikationeinesneuen, auf die Fragestellung zugeschnittenen DatensatzesDaten im *.dat - Format

  • *ffnen Sie dazu bitte unter Datei Textdaten einlesen, markieren Se die Datei School performence Klasse_A und Sie erhalten diese Dialogbox

  • *Besonders wichtig ist diese Dialogbox. Hier muss gut durchdacht und berlegt werden, welche Trennungszeichen die Werte der einzelnen Variablen trennen. In dem gezeigten Beispiel ist Leerzeichen und Komma markiert, was zu einer Trennung bspw. des Wertes 98,655 in zwei verschiedene Variablen fhrt. Um dies zu verhindern whlen Sie die auf der folgenden Seite gezeigte Einstellung

  • *Sie knnen jetzt erkennen, dass der Wertes 98,655 durch die Markierung der Trennungszeichen Tabulator und Leerzeichen nun richtig einer einzigen Variablen zugewiesen wird.

  • */* Syntax zum Einlesen der Beispieldateien

    GET DATA /TYPE = TXT /FILE = N:\Komplexe Daten\School performance_Klasse_A.txt' /DELCASE = LINE /DELIMITERS = "\t " /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = V1 F7.2 V2 F7.2 V3 F7.2 V4 F7.2 V5 F7.2 V6 F7.2 V7 F7.2 V8 F7.2 .CACHE.EXECUTE.SAVE OUTFILE=N:\Komplexe Daten\School performance_Klasse_A.sav' /COMPRESSED.EXECUTE .So sieht die dabei im Hintergrund erzeugte Syntax des Einlesens dieser Daten aus

  • *Variablen fr School performance Klassen A/B/C

    GEOMETRY READING GRAMMAR DRAWING CALCULUS HISTORY WRITING SPELLING

    Wie lassen sich diese Variablennamen in den Datensatz einlesen?

  • */* Syntax zum Einlesen der Beispieldateien

    GET DATA /TYPE = TXT /FILE = N:\Komplexe Daten\School performance_Klasse_A.txt' /DELCASE = LINE /DELIMITERS = "\t " /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = V1 F7.2 V2 F7.2 V3 F7.2 V4 F7.2 V5 F7.2 V6 F7.2 V7 F7.2 V8 F7.2 .CACHE.EXECUTE.

    RENAME VARIABLES (V1=GEOMETRY) (V2=READING) (V3=GRAMMAR) (V4=DRAWING) (V5=CALCULUS) (V6=HISTORY) (V7=WRITING) (V8=SPELLING) .EXECUTE .

    SAVE OUTFILE=N:\Komplexe Daten\School performance_Klasse_A.sav' /COMPRESSED.EXECUTE .Neue Befehlszeile! Mit diesen Befehlen werden die Variablen- namen V1 etc. in GEOMETRY etc. umbenannt

  • */* Syntax zum Einlesen der Beispieldateien

    GET DATA /TYPE = TXT /FILE = 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE'+ '_Komplexe_Daten\School performance_Klasse_A.txt' /DELCASE = LINE /DELIMITERS = "\t " /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = V1 F7.2 V2 F7.2 V3 F7.2 V4 F7.2 V5 F7.2 V6 F7.2 V7 F7.2 V8 F7.2 .CACHE.EXECUTE.SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\School performance_Klasse_A.sav' /COMPRESSED.EXECUTE .Das sind die variablen Teile des Programms

  • *Bitte erstellen Sie nun die folgende Kreuztabelle mit den Daten aus der Datei Titanic.sav:Sie sehen die Abhngigkeit des berlebens von der gebuchten Schiffskabinen-Klasse. Bitte ffnen Sie jetzt das Syntax- Journal-Fenster und kopieren Sie den Inhalt in Bezug auf die Erstellung dieser Kreuztabelle in IhrSyntax-Fenster.

  • *FILE=N:\Komplexe Daten\Titanic.sav'.DATASET NAME DatenSet1 WINDOW=FRONT.CROSSTABS /TABLES=class BY survival /FORMAT= AVALUE TABLES /STATISTIC=CHISQ /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .

    Die Datei enthlt noch weitere Variablen mit den kategorialen Werten zu age gender Setzen Sie jetzt bitte diese Variablen-Namen an die Stelle von class und starten Sie die Syntax mit dem Befehl EXECUTE .

  • *Ein Makro macht nun nichts anderes, als einfach gesprochen an die Stelle der Platzhalter in Listen eingetragene Werte oder Zeichen in das Programm einzusetzen.

    Der groe Vorteil besteht bei ihrem Einsatz darin, dass nur noch neue oder vernderte Listen an das Programm bergeben werden mssen, der Ablauf erfolgt dann in rasender Geschwindig- keit mit allen in den Listen genannten Zeichen/Werten.

    Damit sind verschiedene Einsatzzwecke gegeben:

    Automatisierung von Routineanalysen Aufzeichnung aller fr eine Analyse durchgefhrten Schritte, die sich jederzeit mit Vernderungen wiederholen lassen Besonders interessant ist der Makroeinsatz, wenn aus einer Vielzahl von Datenstzen mit bestimmten Abschnitte, Variablen vergleichende Analysen gerechnet werden sollen

  • *SPSS Makros: Allgemeiner Aufbau

    Makroprogramm und erster Aufruf

    DEFINE !freq1 () . descriptives var = alter fameink . !ENDDEFINE . !freq1 .Mit diesem Aufruf kann immer wieder an beliebigen Stellen in einem Syntax-Programm das gesamte Makroprogramm in Gang gesetzt werden

  • *SPSS Makros Struktur

    Makro(grob)strukturBedeutung, Funktion

    DEFINE !freq1 () .Anfang der Makrodefinition mit Name !FREQ1 und Argument () .

    descriptivesMakroinhalt var = alter fameink . !ENDDEFINE .Ende der Makrodefinition !freq1 .Makroaufruf

  • *Die variablen Teile des Programms werden in einem Makro durch Platzhalter markiert und am Ende des Programms wird in der sog. Makroexpansion festgelegt, welche Werte die Platzhalter in dem jeweiligen Programmdurchlauf annehmen sollen./* MAKRO zum Einlesen der Beispieldateien

    DEFINE !EINLESENUEBUNGSTXT (PFAD = !charend ('')/KLASSE = !charend('')/PLATZ = !charend ('') ) .

    GET DATA /TYPE = TXT /FILE = !QUOTE (!PFAD) /DELCASE = LINE /DELIMITERS = "\t " /ARRANGEMENT = DELIMITED /FIRSTCASE = 1 /IMPORTCASE = ALL /VARIABLES = V1 F7.2 Name des Makros: MAKRO_Einlesen_UebungsDateien.sps

  • *!ENDDEFINE .

    !EINLESENUEBUNGSTXT PFAD = C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\School performance_Klasse_A.txt KLASSE = 'A' PLATZ = C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\School performance_Klasse_A.sav .

    An Ende des Programmaufrufs werden die Werte, die durch Platzhalter beim Programmdurchlauf einnehmen sollen definiert.Name des Makros: MAKRO_Einlesen_UebungsDateien.sps

  • *Was bedeutet TOKENS? (engl. Zeichen)

    Mit der Option !TOKENS werden die nchsten n Tokens im Makroaufruf dem Argument bzw. den Argumenten zugewiesen.Als Elemente zhlen Variablen, Zahlen, Strings usw.:

    BeschreibungBeispieleAnzahl Tokens und ErluterungenVariablenlisteVar1 Var2 Var33 (jeder Variablenname zhlt als ein einzelnes Token)Werteliste2 5 5.22 0.0054 (jede Zahl zhlt als einzelnes Token)Zeichenliste und KommasA , b3 (ein Komma wird als separates Token gezhlt; Gro-/Kleinschreibung ist unerheblich)

  • *Bei !TOKENS sind das Ausrufezeichen und die Anzahl n in einer Klammer wichtig. n entspricht positiven ganzzahligen Werten. Die Option !TOKENS-Option ist also ntzlich, wenn die Anzahl der Token bekannt und konstant ist. Bei der Festlegung der Anzahl der Token sind Besonderheiten bei der Zhlweise von Token zu bercksichtigen:

    BeschreibungBeispieleAnzahl Tokens und ErluterungenAnfhrungs-zeichenAlter .. cc 00 cd2 (Inhalte zwischen paarigen Anfhrungszeichen bzw. Hoch-kommatas zhlen als ein Token)Zeichen-kombinationen11A2 (Zahl vor String)A111 (String vor Zahl)

  • *In dem Beispiel Makro MACRO_Einfaches_Beispiel wird nach den Namensargumenten Var1 und Var2 unmittelbar nach einem notwendigen =-Zeichen die Option !TOKENS(1) angegeben. Whrend der sog. Makro- expansion greift !AUSWERTUNG auf die Vorgaben zurck, die durch dieses Argument festgelegt wurden, nmlich eine Variable Var1 und eine Variable Var2 bereitzustellen.Die Information ein Zeichen wird daher mit der Zu- weisung zur gleichen Anzahl an Variablen zum Argument im Makroaufruf fr die Analyse verknpft.

  • */* Einfaches erstes Beispiel fr eine Makro-Programmierung

    DEFINE !Auswertung (VAR1 = !TOKENS(1)/ VAR2 = !TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    GRAPH /SCATTERPLOTT(BIVAR)= !VAR1 WITH !VAR2 .

    !ENDDEFINE .

    !AUSWERTUNG VAR1=alter VAR2= kinder .!AUSWERTUNG VAR1=alter VAR2= zeitung .!AUSWERTUNG VAR1=einkom91 VAR2= alter .

    /* GRAPH/* /SCATTERPLOT(BIVAR)=alter WITH kinder/* /MISSING=LISTWISE .

    Name des Macros: MACRO_Einfaches_BeispielEin Beispiel:

  • *In diesem Makro MACRO_Einfaches_Beispiel wird oben fest- gelegt, dass den beiden Platzhaltern VAR1 und VAR2 Zeichen im Umfang von einem Zeichen zugeordnet werden. In den Befehl zum Erstellen eines Scatterplotts werden dann keine Variablennamen, sondern nur die Platzhalter gesetzt./* Einfaches erstes Beispiel fr eine Makro-Programmierung

    DEFINE !Auswertung (VAR1 = !TOKENS(1)/ VAR2 = !TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    GRAPH /SCATTERPLOTT(BIVAR)= !VAR1 WITH !VAR2 .

    !ENDDEFINE .

    !AUSWERTUNG VAR1=alter VAR2= kinder .!AUSWERTUNG VAR1=alter VAR2= zeitung .!AUSWERTUNG VAR1=einkom91 VAR2= alter .

    /* GRAPH/* /SCATTERPLOT(BIVAR)=alter WITH kinder/* /MISSING=LISTWISE .

    Was an Stelle der Platzhalter bei jedem Durchlauf gesetzt werden soll, wird an dieser Stelle fest- gelegt.

  • *!CHAREND (Zeichen) Listen durch ein einzelnes Zeichen

    Mittels !CHAREND werden alle Tokens bis zu einem explizit festzulegenden Zeichen in einem Makroaufruf dem Argument zugewiesen und ausgefhrt.Bei diesem Zeichen muss es sich um ein einzelnes Zeichen (String mit der Lnge 1) handeln, das zwischen Hochkommata und in Klammern steht. Im Prinzip kann jedes beliebige Zeichen als Trennzeichen eingesetzt werden. Die SPSS Command Syntax Reference (2004) verwendet z.B. einen sog. Slash /, um eine Trennung zu signalisieren.Dieser Slash hat also nichts mit dem Trennungszeichen zu tun, das zwischen zwei Argumentdefinitionen stehen muss; um eine Verwechslung zu vermeiden, wird empfohlen, als Zeichen keinen Slash, sondern ein beliebiges anderes Zeichen zu nehmen, bspw. .

  • *Bei !CHAREND-Trennungszeichen ist ihre richtige Position absolut entscheidend. Eine falsche Position fhrt dazu, dass diese Positions- oder auch Namensargumente beim Aufruf des Makros falsche Token-Zusammenstellungen an SPSS ber- geben. !CHAREND-Optionen sind v.a. bei positionalen Argumenten ntzlich, knnen jedoch auch bei Namens- argumenten eingesetzt werden.DEFINE !Beispiel1 (key1 = !CHAREND () / key2 = !CHAREND () ).

    frequencies var = !key1 . descriptives var = !key2 .

    !ENDDEFINE . !Beispiel1 KEY1=familienstand ausbild abschluss geschl KEY2=alter .

  • */* Einfaches zweites Beispiel fr eine Makro-Programmierung

    DEFINE !Auswertung1 (VAR1 = !TOKENS(1)/ VAR2 = !TOKENS(1)/VAR3 =TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    CROSSTABS /TABLES= !VAR1 BY !VAR2 BY !VAR3 /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .!ENDDEFINE .

    !AUSWERTUNG1 VAR1= famstand VAR2 = leben VAR3 = ethgr .

    Name des Macros: MACRO_Einfaches_Beispiel2Ein Beispiel dazu:

  • *Eine weitere Mglichkeit die hier Erwhnung finden soll ist die Verwendung sog. positionaler Argumente.Dabei wird, wie in dem folgenden Beispiel gezeigt, durch den Befehl !POS und dem Zusatz !TOKENS die Mglichkeit geschaffen, durch die Benennung der Platzhalter in Form von !1 oder !2 etc. das Programm anzuweisen, den ersten Wert (durch !1), den zweiten Wert (durch !2) etc. aus der Reihe der aufgelisteten Tokens in das Programm aufzunehmen.

  • */* Ein drittes Beispiel fr eine Makro-Programmierung

    DEFINE !Auswertung1 (!POS = !TOKENS(1)/ !POS = !TOKENS(1)/!POS = !TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    CROSSTABS /TABLES= !1 BY !2 BY !3 /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .!ENDDEFINE .

    !AUSWERTUNG1 famstand leben ethgr .!AUSWERTUNG1 famstand todesstr ethgr . !AUSWERTUNG1 famstand todesstr sternzei .

    Name des Macros: MACRO_Einfaches_Beispiel3

  • *Die bislang vorgestellten Optionen erforderten es, dass die Anzahl und/oder Stellung der Platzhalter in der Definition festlag und bekannt war.

    Eine oft sehr ntzliche Alternative zu dieser Option stellt der Befehl !CHAREND dar. Ein Beispiel fr diesen bereits erluterten Befehls folgt in dem nchsten Makro.

    Das besondere und neue an diesem nchsten Beispiel ist jedoch die Einfhrung von einer Schleife, einem sog. Loop. Was bewirken bzw. knnen solche Loops? Whrend in den bisherigen Beispielen fr jeden Durchlauf des gestarteten Makros die dabei einzusetzenden Variablenwerte festgelegt werden mussten, werden bei einem Loop, genauer mit Hilfe eines sog. List-Processing-Loops eine (nahezu unbegrenzte) Menge von Werten vorgegeben, die dann auto- matisch der Reihe nach eingesetzt werden.

  • *Schematisch lsst sich das Ganze so darstellen: Am Anfang eines solchen Loops steht der Befehl !DO gefolgt von der Bezeichnung des Platzhalters der einzusetzenden Variablen, bspw. !VAR, dann folgt der Befehl !IN und schlie- lich wird der Platz angegeben, an dem die einzusetzenden Werte oder Zeichen stehen, bspw. (LISTE). Das Ende der Schleife, des Loops wird durch den Befehl !DOEND ange- geben:

    !DO !VAR !IN (LISTE)

    Befehle

    !DOEND

  • *!DO !VAR !IN (LISTE)

    Select if (ALTER > !VAR) CROSSTABS /TABLES= Gehalt BY Hausbesitz /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .

    !DOENDLISTE = 30 40 50 60In dieser schematischen Darstellung wrden also alle vier Werte aus der Liste automatisch nacheinander in die Berechnung ein- gesetzt werden.

  • */* Ein fnftes Beispiel fr eine Makro-Programmierung mit einer Schleife/* SET PRINTBACK=ON MPRINT=ON .

    DEFINE !Auswertung3 (LISTE1 = !CHAREND ('/')/ VAR1 = !TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    !DO !WERT1 !IN (!LISTE1) .

    CROSSTABS /TABLES= !WERT1 BY !VAR1 /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .

    !DOEND .

    !ENDDEFINE .

    !AUSWERTUNG3 LISTE1 = famstand beschft partei sternzei / VAR1 = todesstr .Name des Macros: MACRO_Einfaches_Beispiel5

  • */* Ein fnftes Beispiel fr eine Makro-Programmierung mit einer Schleife/* SET PRINTBACK=ON MPRINT=ON .

    DEFINE !Auswertung3 (LISTE1 = !CHAREND ('/')/ VAR1 = !TOKENS(1)) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav'.EXECUTE .

    !DO !WERT1 !IN (!LISTE1) .

    CROSSTABS /TABLES= !WERT1 BY !VAR1 /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .

    !DOEND .

    !ENDDEFINE .

    !AUSWERTUNG3 LISTE1 = famstand beschft partei sternzei alterhei geschw kinder alter gebmonat sternzei ausbild abschlus vaterab mutterab geschl ethgr einkom91 einkbefr region ort einwohn partei wahl92 einstell todesstr waffen gras religion leben kindid pille sexualkd prgel sterbehi zeitung tvstunde bigband blugrass country blues musicals klassik folk jazz opern rap hvymetal sport kultur tvshows tvnews tvpbs wissen4 partner sexfreq wohnen soi gebjahr fameink schulab altergr politik region4 verheira classic3 jazz3 rap3 blues3 /VAR1 = todesstr .

    Name des Macros: MACRO_Einfaches_Beispiel5a

  • *Was zunchst sehr kompliziert zu klingen scheint ist jedoch in den meisten Fllen eher einfach und sehr ntzlich: Es lassen sich (nahezu) unbegrenzt viele Schleifen miteinander verschachteln:LOOP ILOOP IIDas nchste Makro demonstriert diese Mglichkeit. Zuerst wird das erste Zeichen der Liste1 eingesetzt, dann das erste Zeichen der Liste2, dann das zweite Zeichen der Liste2 usw. Sind alle Zeichen der Liste2 durch, wird das zweite Zeichen der Liste1 eingesetzt usw. usw.

  • */* Ein viertes Beispiel fr eine Makro-Programmierung mit zwei ineinander /* verschachtelten Schleifen/* SET PRINTBACK=ON MPRINT=ON .

    DEFINE !Auswertung3 (LISTE1 = !CHAREND ('/')/ LISTE2 = !CHAREND ('')) .

    GET FILE='C:\Programme\SPSS\1993 US Sozialerhebung (Teilmenge).sav' .EXECUTE .

    !DO !WERT1 !IN (!LISTE1) .

    !DO !WERT2 !IN (!LISTE2) .

    CROSSTABS /TABLES= !WERT1 BY !WERT2 /FORMAT= AVALUE TABLES /CELLS= COUNT EXPECTED ROW COLUMN TOTAL /COUNT ROUND CELL .

    !DOEND .

    !DOEND .

    !ENDDEFINE .

    !AUSWERTUNG3 LISTE1 = famstand beschft partei / LISTE2 = todesstr sternzei .Name des Macros: MACRO_Einfaches_Beispiel4

  • *Eine weitere Mglichkeit der Schleifenkonstruktion ist die eines sog. Index-Loop. Beim Index-Loop wird bei einem Zhler mit dem Wert 1 gestartet und im Allgemeinen in n+1-Schritten solange wiederholt, bis ein bestimmter (Index-) Wert erreicht ist.

    !DO !var = (Anfang) !TO (Ende) [optional: !BY (Schritt)] Befehle -!DOEND

    Das folgende Makro zeigt ein Beispiel fr einen solchen Index- Loop, mit dem sechs zustzliche Variablen mit den Namen neu1var bis neu6var generiert werden:Im Anschluss an dieses Beispiel wird der bislang noch nicht eingefhrte Befehl !CONCAT erlutert.

  • */* Ein sechstes Beispiel fr eine Makro-Programmierung mit einer Index-Schleife/* SET PRINTBACK=ON MPRINT=ON .

    DEFINE !LOOP1 (key1 = !TOKENS(1)/key2 = !TOKENS(1)) .

    !DO !i = !KEY1 !TO !KEY2 .

    COMPUTE !CONCAT (neu, !i, var) = normal (1) .

    !DOEND .

    !ENDDEFINE .

    !LOOP1 Key1 = 1 Key2 = 6 .

    Name des Macros: MACRO_Einfaches_Beispiel6

  • *Stringfunktionen und einige ihrer Variationsmglichkeiten

    Syntax fr StringsFunktion, Rckmeldung und Beispiel!LENGTH (String)Lnge des angegebenen Strings. Bsp.: !LENGTH(Hello). Ergebnis: 5!CONCAT (String1, String2, )Aneinanderkettung der zusammenzu- fhrenden Strings. Bsp.: !CONCAT(hel, lo). Ergebnis: Hello!QUOTE (String)Das Argument wird in Anfhrungs- zeichen gesetzt. Bsp.: !QUOTE(Hello). Ergebnis: Hello!SUBSTR (String, FROM, [Lnge])Abschnitt des Strings, der ab FROM startet und bei nicht festgelegter Lnge bis zum Stringende gehtBsp.: !SUBSTR(Hello, 3) Ergebnis: LLO

  • *Eine weitere Anwendung von Makros:

    Das Zusammenfhren von ausgesuchten Variablen aus verschiedenen Dateien:

    Dazu mssen die einzelnen Dateien nacheinander aufgerufen werden Dabei werden nur die Variablen geladen, die von Interesse sind Die Auswahl der Variablen wird in einer (Zwischen-)Datei abgelegt Der nchste Datensatz wird aufgerufen, die Variablen ausgesucht etc. Der Datensatz wird mit den Daten in der Zwischendatei verbunden Wenn alle Datei durchkmmt sind, ist der Datensatz fertig

    Beispiel:

  • */* Ein siebentes Beispiel fr eine Makro-Programmierung zum Zusammenfgen verschiedener Datenstze/* SET PRINTBACK=ON MPRINT=ON .

    GET FILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\1991 US Sozialerhebung.sav' /KEEP = kinder .EXECUTE .

    COMPUTE YEAR = 1991 .FORMATS YEAR (F 1.0) .EXECUTE .

    SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER01.sav' .EXECUTE .

    DEFINE !Zusammen1 (PFAD = !CHAREND ('/')/ WERT1 = !CHAREND ('')) .

    GET FILE= !QUOTE(!PFAD)/KEEP = kinder .EXECUTE .

    COMPUTE YEAR = !WERT1 .FORMATS YEAR (F 1.0) .EXECUTE .

    ADD FILES /FILE=* /* Alternative: MATCH/FILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER01.sav' . EXECUTE .SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER01.sav' .EXECUTE .

    !ENDDEFINE .

    !Zusammen1PFAD = C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\1993 US Sozialerhebung (Teilmenge).sav / WERT1 = 1993 .

    !Zusammen1PFAD = C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\Mehl Fake.sav / WERT1 = 2000 .

    Name des Macros: MACRO_Einfaches_Beispiel7

  • */* Ein achtes Beispiel fr eine Makro-Programmierung zum Berechnen des Mittelwertes /* SET PRINTBACK=ON MPRINT=ON .

    GET FILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER01.sav' .EXECUTE .

    SELECT IF (YEAR = 2000) .EXECUTE .

    COMPUTE Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .EXECUTE .CREATE SUMChild = CSUM(Kinder) .EXECUTE .SORT CASES BY SUMfall (D) .SELECT IF ($casenum = 1) .COMPUTE MEANChild = SUMChild/SUMFall .EXECUTE .

    RENAME VARIABLES (MEANChild = MEANChild2000) .EXECUTE .

    SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER02.sav' / KEEP= MEANChild2000 .EXECUTE .

    /* HIER BEGINNT DAS MAKRO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Name des Macros: MACRO_Einfaches_Beispiel8; Fortsetzung nchste Seite

  • *DEFINE !Mittelwerte1 (LISTE1 = !CHAREND ('/')) . !DO !Jahr !IN (!LISTE1) .

    GET FILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER01.sav' .EXECUTE .

    SELECT IF (YEAR = !Jahr) .EXECUTE .

    COMPUTE Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .CREATE SUMChild = CSUM(Kinder) .SORT CASES BY SUMFall (D) .SELECT IF ($casenum = 1) .COMPUTE MEANChild = SUMChild/SUMFall .EXECUTE .

    RENAME VARIABLES (MEANChild = !CONCAT(MEANChild, !Jahr)) .EXECUTE .

    MATCH FILES /FILE=*/FILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER02.sav' /DROP = Fall, SUMFall, SUMChild, YEAR, Kinder .EXECUTE .SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER02.sav' . EXECUTE .

    !DOEND .

    SAVE OUTFILE='C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\SE_Komplexe_Daten\SPEICHER02.sav' . EXECUTE .

    !ENDDEFINE .

    !Mittelwerte1 LISTE1 = 1993 1991 / .

  • *

    Auswahl relevanter VariablenBerechnungen

    Auswahl relevanter VariablenBerechnungenDie schematische Logik dieser Variante:Ursprungs-Datei Datei als ZwischenablageZiel-Datei

    Auswahl relevanter VariablenBerechnungenAddMatch

    1234567898765432

    1234567898765432

  • *Wie lassen sich nun aus diese Art und Weise zusammengestellte Dateien weiterverarbeiten?

    Eine Mglichkeit, die ausfhrlicher, d.h. nicht mit der maximal mglichen Eleganz vorgestellt wird (weil noch zu komplex), ist das Berechnen von Mittelwerten:

    aller Werte : Anzahl der Werte

    Dazu ist es wichtig, die Funktionen Lag und Lead einzufhren:

    XLagLead198.220220198305305220470470305

  • *COMPUTE Fall = 1 .EXECUTE .

    /* ALTERNATIVE: COMPUTE Fall = $casenum ./* SELECT IF (Kinder = 4) .

    IF ($casenum >1) Fall = Lag(Fall, 1) + Fall .EXECUTE .

    SORT CASES BY Fall (D) . /* ALTERNATIV: (A)EXECUTE .

    SELECT IF ($casenum = 1) .EXECUTE .

    COUNT Anzahl_2 = var001 (2) .EXECUTE .

    Name der Syntax: Syntaxbeispiel_Zhlen_Sortieren_AuswhlenAnmerkungen:

    Bitte vergleichen mit create $casenum verweist auf die Fallnummern am linken Rand der Datenmaske Lag(XYZ, 1) = die Zahl gibt den Abstand an: 1 = nchste Zeile; 2 = bernchste Zeile D = downA = up Setzt in eine Variable Anzahl_2 die Anzahl der Werte 2 der Variable var001 ein(siehe auch Syntax Befehlsdefinitionen)

  • *Hufigkeiten zhlen mit dem Befehl COUNT:

    Allgemeine Syntax: COUNT Zielvariable = Quellvariable(n) (Werteliste)

    Zu zhlende WerteBeschreibungEinzelwerte1 2 3 4 5 Alle fehlenden WertemissingSystemdefinierte fehlende WertesysmisWertebereiche: bis 5 thru 10Wertebereiche: kleinster bis lowest thru 0Wertebereiche: bis grter Wert100 thru highest

  • *CREATEFunction keywords:

    CSUM Cumulative sumDIFF DifferenceFFT Fast Fourier transformIFFT Inverse fast Fourier transformLAG LagLEAD LeadMA Centered moving averagesPMA Prior moving averagesRMED Running mediansSDIFF Seasonal differenceT4253H SmoothingACHTUNG, ganz WICHTIG!!!

    CREATE bezieht sich wie folgt auf die Spalten:

  • *ACHTUNG, ganz WICHTIG!!!

    COMPUTE bezieht sich dagegen fast aber leider nicht immer wie folgt auf die Zeilen:Befehl

    COMPUTE

  • *COMPUTE

    COMPUTE target variable=expression

    ExampleCOMPUTE newvar1=var1+var2.COMPUTE newvar2=RND(MEAN(var1 to var4).COMPUTE logicalVar=(var1>5).STRING newString (A10).COMPUTE newString=CONCAT((RTRIM(stringVar1), stringVar2).Functions and operators available for COMPUTE are described in Transformation Expressionson p. 44.ABS(arg) Absolute value. ABS(SCALE) is 4.7 when SCALE equals 4.7 or 4.7.RND(arg) Round the absolute value to an integer and reaffix the sign. RND(SCALE) is5 when SCALE equals 4.7.TRUNC(arg) Truncate to an integer. TRUNC(SCALE) is 4 when SCALE equals 4.7.MOD(arg,arg) Remainder (modulo) of the first argument divided by the second. When YEARequals 1983, MOD(YEAR,100) is 83.SQRT(arg) Square root. SQRT(SIBS) is 1.41 when SIBS equals 2.EXP(arg) Exponential. e is raised to the power of the argument. EXP(VARA) is 7.39when VARA equals 2.LG10(arg) Base 10 logarithm. LG10(VARB) is 0.48 when VARB equals 3.LN(arg) Natural or Naperian logarithm (base e). LN(VARC) is 2.30 when VARC equals10.LNGAMMA(arg) Logarithm (base e) of complete Gamma function.ARSIN(arg) Arcsine. (Alias ASIN.) The result is given in radians. ARSIN(ANG) is 1.57when ANG equals 1.ARTAN(arg) Arctangent. (Alias ATAN.) The result is given in radians. ARTAN(ANG2) is0.79 when ANG2 equals 1.SIN(arg) Sine. The argument must be specified in radians. SIN(VARD) is 0.84 whenVARD equals 1.COS(arg) Cosine. The argument must be specified in radians. COS(VARE) is 0.54 whenVARE equals 1.

  • *SUM(arg list) Sum of the nonmissing values across the argument list.MEAN(arg list) Mean of the nonmissing values across the argument list.SD(arg list) Standard deviation of the nonmissing values across the argument list.VARIANCE(arg list) Variance of the nonmissing values across the argument list.CFVAR(arg list) Coefficient of variation of the nonmissing values across the argument list.The coefficient of variation is the standard deviation divided by the mean.MIN(arg list) Minimum nonmissing value across the argument list.MAX(arg list) Maximum nonmissing value across the argument list.

    COMPUTE - BefehleThe following arithmetic operators are available:+ Addition Subtraction* Multiplication/ Division** Exponentiation

  • *Aufgabe 1:

    Stellen Sie eine neue Datei zusammen, die Variablen enthlt, die die Anzahl von 1, 2 und 3 Kindern in den Dateien 1991 US Sozialerhebung.sav 1993 US Sozialerhebung (Teilmenge).sav Mehl Fake.sav

    wiedergeben: oder:

    Ein_Kind_1991Zwei_Kind_1991Drei_Kind_1991.29434

    JahrEin_KindZwei_KinderDrei_Kinder1991294341993

  • *Probleme: Wie muss die Grobstruktur des Programms aussehen?Makrodefinition(2 Loops)Zweite Schleife (Anzahl Kinder) Variablenauswahl, Werteselektion Berechnen Sortieren Renamen Matchen (Variablen hinzufgen) Im Zwischenspeicher ablegen

    Ende der ersten SchleifeErste Schleife (Jahr) Adden (cases hinzufgen) Um cases erweiterte Datei ablegen Ende der zweiten SchleifeMakroende

  • *Regeln fr die Vergabe von Variablennamen:

    Variablennamen knnen aus Buchstaben und Ziffern gebildet werden. Erlaubt sind ferner die Sonderzeichen _ (underscore), . (Punkt) sowie die Zeichen @, #, $ Nicht erlaubt sind Leerzeichen sowie spezifische Zeichen, wie !, ?, und *. Der Variablenname muss mit einem Buchstaben beginnen. Erlaubt ist ferner das Sonderzeichen @. Das letzte Zeichen darf kein Punkt und sollte kein _ (underscore) sein, um Konflikte mit speziellen Variablen, die von SPSS-Prozeduren angelegt werden, zu vermeiden.Der Variablenname darf (ab der Version 12) max 64 Zeichen lang sein. Variablennamen sind nicht case-sensitive, d.h. die Gro- und Kleinschreibung ist nicht relevant. Variablennamen drfen nicht doppelt vergeben werden. Reservierte Schlsselwrter knnen nicht als Variablennamen verwendet werden. Zu den reservierten Schlsselwrtern zhlen: ALL, AND, BY, EQ, GE, GT, LE, LT, NE, NOT, OR, TO, WITH.Beispiele fr ungltige Variablennamen: 1mal1Bhl&ZfelStand 94Wagen!

  • *Kommen wir jetzt auf das Eingangs-Beispiel d - Test zurck:

    Wie lsst sich fr jedes Feld der %-Anteil einer fehlerhaften Bearbeitung berechnen? Ein erster Schritt wre es, eine Datei mit allen Fllen der einzelnen Dateien zusammenzustellen, die vollstndige Ids enthlt Dann, Spalte fr Spalte, alle Zeilen einzeln aller Bearbeitungen zu betrachten und zusammenzuzhlen, wie oft dort eine 1 (fehlerfrei) oder eine 2 (Fehler) ein- getragen wurde. Schlielich wird die Summe aller Werte > 1 und die Summe aller Werte = 2 ermittelt Auf dieser Grundlage ergibt sich dann der %-Anteil

  • */* Makro zum Ersetzen/Ausfllen der Id-Nummern/* SET PRINTBACK=ON MPRINT=ON .

    CD 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\D_Zwei' . ERASE FILE = 'SPEICHER01.sav' .

    DEFINE !Vervollstaendigen (LISTE = !CHAREND ('/')) .

    !DO !Datei !IN (!LISTE) .

    GET FILE= !Datei .EXECUTE .

    RECODE ID (MISSING=0) .EXECUTE .

    IF ((Zeile > 0) & ($casenum > 1)) Id = Id + Lag(Id, 1) .EXECUTE .

    ADD FILES /FILE=*/FILE='SPEICHER01.sav' .EXECUTE .SAVE OUTFILE= 'SPEICHER01.sav' . EXECUTE .

    !DOEND .

    !ENDDEFINE .

    !VervollstaendigenListe = 'Daten-Mi-10.sav' 'Daten-Mi-11.sav' 'Daten-Mi-12.sav' 'Daten-Mi-13.sav' 'Daten-Mi-14.sav' 'Daten-Mi-15.sav' 'Daten-Mi-16.sav' 'Daten-Mi-17.sav' 'Daten-Mi-18.sav' 'Daten-Mo-01.sav' 'Daten-Mo-02.sav' / .

  • *Anhand dieser Datei aller Bearbeitungen gilt es jetzt eine Struktur wie die folgende zu erstellen:Spalte S_01, Zeile 1 des ersten TestteilnehmersSpalte S_01, Zeile 1 des zweiten TestteilnehmersSpalte S_01, Zeile 1 des letzten TestteilnehmersDatei der Daten aller Bearbeitungen

  • *Sind auf diese Art und Weise die Werte Zeile 1, Spalte S_01 zusammengestellt, gilt es die Werte 1 und 2 zu erfassen und zusammenzuzhlen, etwa auf diesem Weg: COUNT F_S = S_01 (2) .EXECUTE .COUNT R_S = S_01 (1) .EXECUTE .COUNT O_S = S_01 (0) .EXECUTE .

    S_01F_SR_SO_S0..11.1.0..121..

  • *Um die Summe der F_S, R_S und O_S zusammenzuaddieren gibt es wie immer verschiedene Wege. Zunchst mssen die Missing Values in die Werte 0 umkodiert werden:

    RECODE F_S R_S O_S (MISSING=0) .EXECUTE .

    Dann kann mit dem Befehl:

    CREATE Fall = CSUM(Fall) .CREATE F_S = CSUM(F_S) .CREATE R_S = CSUM(R_S) .CREATE O_S = CSUM(O_S) .EXECUTE .

    oder

  • *Mit der Anweisung:

    IF ($casenum > 1) F_S = LAG(F_S, 1) + F_S .EXECUTE .

    gearbeitet werden. Ihnen ist sicher das Aufaddieren einer Variablen Fall aufgefallen die zuvor auf den Wert 1 gesetzt wurde. Diese Variable dient dazu, die letzte Zeile in der Datei zu bestimmen, um den Sortierbefehl richtig anwenden zu knnen. Dieser Befehl lautet:

    S_01F_SR_SO_S0..11.1.0..121..

  • *SORT CASES BY Fall (D) .SELECT IF ($casenum = 1) .EXECUTE .

    Mit der ersten Zeile werden die Werte von Fall absteigend (D) sortiert, so dass die hchsten Werte alle in der ersten Zeile stehen. Dann wird die erste Zeile ausgewhlt die anderen sind in diesem Moment verschwunden!

    Die gewnschte Berechnung erfolgt durch diesen Befehl:

    COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) .EXECUTE .

    Damit haben wir den Prozentanteil der Fehler beim Bearbeiten der ersten Zeile der Spalte S_01 berechnet.

  • *Damit ist aber noch nicht das Ende erreicht. Um zu markieren, welchen Wert wir jetzt berechnet haben, nennen wir die Variable Proz_F um in die Variable ProzF_S_01 die Variable Proz_F ist damit nicht mehr im Bestand der Datei!!Schlielich speichern wir in einer Zwischendatei den berechneten Wert und werfen mit DROP alle Variablen raus, die wir nicht bentigen:

    RENAME VARIABLES (Proz_F = !CONCAT(ProzF_, !Spalte)) .EXECUTE .

    MATCH FILES /FILE=*/FILE='SPEICHER02.sav' /DROP = Id, Fall, R_S, O_S, F_S, !Spalte .EXECUTE .SAVE OUTFILE='SPEICHER02.sav' . EXECUTE .

  • *

  • *

  • *

  • *

  • *

  • *

  • *Variablen: Marker = M: Outermarker = 2; Middlemarker = 3 Hhe = MSL (Mean Sea Level) oder AGL = (Above Ground Level)

  • *Aufgabe:

    Einlesen von *.log resp. *.txt Dateien Abspeichern in *.sav Dateien Berechnung der Mittelwerte Hhe (MSL) bei berflug eines Markers (Outer-Marker und Middle-Marker) Vergleich der Mittelwerte bei Vpn. und Flgen [Vergleich Kaffee an bestimmten Tagen, zu bestimmten Zeiten, zwischen bestimmten Zeiten] und dann: Berechnung des hchsten MSL-Wertes und des niedrigsten MSL-Wertes beim berflug OM + MM

  • *Vorsicht! Es gibt auch Marker beim Abflug aus Hamburg-Finkenwerder, die registriert werden. Also: Abschnitte bestimmen, der relevant ist, bspw. mit Hilfe LAT/LON (Positionsangaben), siehe Scatterplott .

  • *CD 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\Komplexe Daten' .

    GET FILE = 'MEHL---EDHI23-EDDH15---90001.sav' /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = 2 & LON > 9.87) .EXECUTE .

    Eine von vielen Vereinfachungsmglichkeiten:

    Da ein Dateibezug beim Einlesen der Dateien oft sehr lang und umstndlich ist (siehe unsere bisherigen Dateien), kann ein Programm sehr schnell unber- sichtlich werden.Abhilfe (1): CD legt das aktuelle Arbeitsverzeichnis fest, mit dem in allen weiteren Schritten gearbeitet wird. Bei allen nachfolgenden Befehlen wird direkt auf dieses Verzeichnis zugegriffen.

  • *Eine weitere Mglichkeit (2):FILE HANDLE quelle01 /NAME = 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\Komplexe Daten\MEHL---EDHI23-EDDH15---90001.sav ' .

    GET FILE = quelle01 /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = 2 & LON > 9.87) .EXECUTE .

    .Mit dem Befehl FILE HANDLE wird ein frei whlbarer Kurzname festgelegt, der in allen folgenden Befehlen als Ersatzbezeichnung fr die ursprngliche, vollstndige, lngere Angabe des Arbeits- verzeichnisses und des Dateinamens genutzt werden kann.

  • *Die folgenden Seiten zeigen zur bersicht und zum Vergleich drei Berechnungsvarianten:

  • */* MACRO Berechnen_01_Einfach Berechnen von Mittel-Werten innerhalb bestimmter Abschnitte mit Vereinfachungen

    CD 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\Komplexe Daten' .

    GET FILE = 'MEHL---EDHI23-EDDH15---90001.sav' /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = 2 & LON > 9.87) .EXECUTE .

    COMPUTE Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .EXECUTE .CREATE SUMMSL = CSUM(MSL) .EXECUTE .SORT CASES BY SUMfall (D) .SELECT IF ($casenum = 1) .COMPUTE MeanMSL = SUMMSL/SUMFall .EXECUTE .

    SAVE OUTFILE='SPEICHER01.sav' /DROP = Fall, SUMFall, SUMMSL, M, AGL, MSL, LAT, LON .EXECUTE .

    DEFINE !Berechnen1 (PLATZ = !charend ('') ) .

    GET FILE = !QUOTE(!PLATZ) /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = 2 & LON > 9.87) .EXECUTE .

    - Nchste Seite -

    Variante Save: Daten werden zunchst abgespeichert (erster Durchgang) um die Datei sicher nur mit den errechneten Daten zu fllen. Erst danach beginnt das MACRO

  • *- Fortsetzung -

    COMPUTE Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .EXECUTE .CREATE SUMMSL = CSUM(MSL) .EXECUTE .SORT CASES BY SUMfall (D) .SELECT IF ($casenum = 1) .COMPUTE MeanMSL = SUMMSL/SUMFall .EXECUTE .

    ADD FILES /FILE=*/FILE= 'SPEICHER01.sav' /DROP = Fall, SUMFall, SUMMSL, M, AGL, MSL, LAT, LON .EXECUTE .SAVE OUTFILE='SPEICHER01.sav' . EXECUTE .

    !ENDDEFINE .

    !Berechnen1 PLATZ = MEHL---EDHI23-EDDH15---90002.sav .

    !Berechnen1 PLATZ = MEHL---EDHI23-EDDH15---90003.sav .

    !Berechnen1 PLATZ = GPEL---EDHI23-EDDH15---01.sav .

    !Berechnen1 PLATZ = GPEL---EDHI23-EDDH15---02.sav .

    !Berechnen1 PLATZ = GRN---EDHI23-EDDH15---01.sav .

  • */* MACRO Berechnen_02_ mit Fehler!!!! Berechnen von Mittel-Werten innerhalb bestimmter Abschnitte mit VereinfachungenSET PRINTBACK=ON MPRINT=ON .

    DEFINE !Berechnen1 (PLATZ = !CHAREND ('')/ LISTE1 = !charend ('')/LISTE2 = !charend ('') ) .

    CD 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\Komplexe Daten' .

    !DO !ORT !IN (!PLATZ) .

    !DO !MARKER !IN (!LISTE1) .

    GET FILE = !ORT /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = !MARKER & LON > 9.87) .EXECUTE .

    COMPUTE Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .EXECUTE .CREATE SUMMSL = CSUM(MSL) .EXECUTE .SORT CASES BY SUMFall (D) .SELECT IF ($casenum = 1) .COMPUTE MeanMSL = SUMMSL/SUMFall .EXECUTE .

    RENAME VARIABLES (MeanMSL = !CONCAT(MEAN_, !MARKER)) .EXECUTE .

    ADD FILES /FILE=*/FILE= 'SPEICHER01.sav' /DROP = Fall, SUMFall, SUMMSL, M, AGL, MSL, LAT, LON .EXECUTE .SAVE OUTFILE = 'SPEICHER01.sav' . EXECUTE .

    !DOEND .!DOEND .

    !ENDDEFINE .

    !Berechnen1 PLATZ = 'MEHL---EDHI23-EDDH15---90001.sav' 'MEHL---EDHI23-EDDH15---90002.sav' 'MEHL---EDHI23-EDDH15---90003.sav' 'GPEL---EDHI23-EDDH15---01.sav' 'GPEL---EDHI23-EDDH15---02.sav' 'GRN---EDHI23-EDDH15---01.sav' LISTE1 = 2 3 LISTE2 = OUTERMARKER MIDDLEMARKER . Variante Unsave (zudem mit Fehler): MACRO beginnt sofort, Probleme entstehen, wenn Datei fr Speicher bereits besteht und mglicherweise Daten enthlt, da dann diese dort noch vorhandenen Daten mit aufgenommen werden.Also Vorsicht!!! Zuvor Dateien lschen!!

  • */* MACRO Berechnen_02_Ohne Fehler von Mittel-Werten innerhalb bestimmter Abschnitte mit Vereinfachungen

    /* ACHTUNG! ACHTUNG! ACHTUNG! /* (1) Die Dateien Speicher01 und Speicher02 drfen zu Beginn nicht vorhanden sein!!! /* (2) Die ausgewhlten Bereiche mssen vorhanden sein, sonst doppelte Werte!!!

    /*SET PRINTBACK=ON MPRINT=ON .

    DEFINE !Berechnen1 (PLATZ = !CHAREND ('')/ LISTE1 = !charend ('')/LISTE2 = !charend ('') ) .

    CD 'C:\Dokumente und Einstellungen\Klaus Mehl\Eigene Dateien\Daten\Komplexe Daten' .

    !DO !ORT !IN (!PLATZ) .

    !DO !MARKER !IN (!LISTE1) .

    GET FILE = !ORT /KEEP = M, MSL, AGL, LAT, LON, vp, flug .EXECUTE.

    SELECT IF (M = !MARKER & LON > 9.87) .EXECUTE .

    COMPUTE Fall = 1 .EXECUTE .

    - Nchste Seite -

    Variante Unsave (diesmal ohne Fehler): MACRO beginnt sofort, Probleme entstehen, wenn Datei fr Speicher bereits besteht und mglicherweise Daten enthlt, da dann diese dort noch vorhandenen Daten mit aufgenommen werden.Also Vorsicht!!! Zuvor Dateien lschen!!

  • *- Fortsetzung -

    CREATE SUMFall = CSUM(Fall) .EXECUTE .CREATE SUMMSL = CSUM(MSL) .EXECUTE .SORT CASES BY SUMFall (D) .SELECT IF ($casenum = 1) .COMPUTE MeanMSL = SUMMSL/SUMFall .EXECUTE .

    RENAME VARIABLES (MeanMSL = !CONCAT(MEAN_, !MARKER)) .EXECUTE .

    MATCH FILES /FILE=*/FILE= 'SPEICHER01.sav' /DROP = Fall, SUMFall, SUMMSL, M, AGL, MSL, LAT, LON .EXECUTE .SAVE OUTFILE = 'SPEICHER01.sav' . EXECUTE .

    !DOEND .

    ADD FILES /FILE=*/FILE= 'SPEICHER02.sav' .EXECUTE .SAVE OUTFILE = 'SPEICHER02.sav' . EXECUTE .

    !DOEND .

    !ENDDEFINE .

    !Berechnen1 PLATZ = 'MEHL---EDHI23-EDDH15---90001.sav' 'MEHL---EDHI23-EDDH15---90002.sav' 'MEHL---EDHI23-EDDH15---90003.sav' 'GPEL---EDHI23-EDDH15---01.sav' 'GPEL---EDHI23-EDDH15---02.sav' 'GRN---EDHI23-EDDH15---01.sav' LISTE1 = 3 2 LISTE2 = OUTERMARKER MIDDLEMARKER .

  • *Ein wichtiges Problem, dass unbedingt Beachtung bentigt, kann entstehen, wenn aufgrund nicht vorhandener Daten keine Berechnungen durchgefhrt werden knnen, zugleich durch den MATCH-Befehl, in Kombination mit den SAVE-Befehl die Zwischenspeicherdatei aber belegt werden soll. Es wird dann a) keine Berechnung durchgefhrt, weil keine Daten vorhanden sind b) die in der Speicherdatei gelisteten Werte werden erneut gespeichert und schlielich c) durch den ADD-Befehl als vermeintliche Berechnung des neuen Falles abgespeichert.

    Was ist zu tun?Wichtig ist die Prfung auf vorhandene Daten in der jeweiligen Datei, bspw. durch den Befehl:

    FREQUENCIES VARIABLES=M /STATISTICS=SUM /ORDER= ANALYSIS .

    der zuverlssig die Anzahl der Werte (hier die der Variable M) zhlt.

  • *Eine andere Option ist die folgende: COMPUTE Fall = 0 .EXECUTE .

    IF (M = 2) Fall = 1 .EXECUTE .

    CREATE SUMFall = CSUM(Fall) .SORT CASES BY SUMFall (D) .SELECT IF ($casenum = 1) .EXECUTE . Hier passiert folgendes: Die Variable FALL, mit der die Anzahl vorhandener Werte gezhlt werden soll, wird zunchst auf 0 gesetzt. D.h. wenn die aufgerufene Datei berhaupt vorhanden ist, gibt es so immer eine Variable mit den Werten 0. Jetzt wird durch IF (M=2) FALL = 1 . fr die Flle, bei denen die zu zhlende Variable den Wert 2 aufweist, der Wert der Variable FALL auf 1 gesetzt und kann dann im nchsten Schritt gezhlt werden. Wenn kein Wert 2 der Variablen M vorhanden ist, ergibt sich beim Zusammenzhlen 0. Wrde man hier mit SELECT IF (M=2) . arbeiten, konnten keine Berechnungen vorgenommen werden, wenn der Wert M=2 im Datensatz nicht vorhanden ist.

  • *Was den Ort des COMPUTE Fall = 0 . angeht, so muss er unbedingt vor jedem SELECT IF eingefgt werden, um seine eben beschriebene Funktionalitterfllen zu knnen.

    Ersichtlich ist die eben besprochene Gefahr dadurch, dass in hintereinander liegenden Fllen exakt die selben Werte stehen. Wenn Sie so etwas bemerken: Kontrollieren!

  • *Bitte beherzigen Sie den zentralen Leit- und Merksatz:

    Garbage in, Garbage out

  • *TransformationData MiningInterpretationVorbereiteteDatenTransformierteDatenMusterWissen/ ModelleWie geht Erkenntnisgewinn?

    Ein erster, flchtiger Blick

  • *Fisher (1936) Irisdaten: Lnge und Breite von Blttern und Kelchen fr 3 Iristypen

    KelchlngeKelchbreiteBlattlngeBlattbreiteIristyp153,31,40,2Setosa26,42,85,62,2Virginic36,52,84,61,5Versicol46,73,15,62,4Virginic56,32,85,11,5Virginic64,63,41,40,3Setosa76,93,15,12,3Virginic86,22,24,51,5Versicol95,93,24,81,8Versicol104,63,610,2Setosa116,134,61,4Versicol1262,75,11,6Versicol136,535,22Virginic145,62,53,91,1Versicol156,535,51,8Virginic165,82,75,11,9Virginic176,83,25,92,3Virginic185,13,31,70,5Setosa195,72,84,51,3Versicol206,23,45,42,3Virginic217,73,86,72,2Virginic226,33,34,71,6Versicol236,73,35,72,5Virginic247,636,62,1Virginic254,92,54,51,7Virginic

  • * Kategoriale Werte (gut/schlecht) Metrische Werte (1, 2, 3, 4, ..) [Nominale, Ordinale Werte]Split:Welche Variable trennt am besten bei welchem Wert?CART (classification and regression trees)

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *

  • *Fehlklassifikationsmatrix Lernstichprobe (Irisdat) Matrix progn. (Zeile) x beob. (Spalte) Lernstichprobe N = 150Prognost. Klasse x Beob. Klasse n's (Irisdat) Matrix progn. (Zeile) x beob. (Spalte) Lernstichprobe N = 150

    Klasse - SetosaKlasse - VersicolKlasse - VirginicSetosa00Versicol04Virginic02

    Klasse - SetosaKlasse - VersicolKlasse - VirginicSetosa5000Versicol0484Virginic0246

  • *Split-Bedingung (Irisdat) Split-Bedingung je Knoten

    Split - Konst.Split - Variable1-2,09578Blattlnge23-1,64421Blattbreite

  • *

  • *

  • *

  • *Aufbau der Datenmatrix, um einen Kausalbaum, eine Kreuztabelle zu erstellen:

    V1V2V3V4V5V6Person/BedingungVgut_schlecht345232234336767787AG564887236454454BG345665897454CS789123567DS345459456EG234981345FS234438341GG657345656HS447IS

  • *Aufbau der Datenmatrix, um eine Korrelationsanalyse zu erstellen:

    V1V2V3: Gefahrene KilometerV4: GartengreV5: WohnraumV6: Gehalt345232234336767787564887236454454345665897454789123567345459456234981345234438341657345656447

  • *Zwei, von vielen Problemen: Feature Choise Overfitting, Underfitting

  • *Zwei, von vielen Problemen: Feature Choise Overfitting, Underfitting

  • *abKategoriale Splits< 0,5> 0,5< 0,5> 0,5, < 1,8> 1,8Bivariate SplitsMultivariate Splits

  • *Phasen des Data Mining

  • *

  • *

  • *Daten

    DatenteilenTrainings-daten

    Validierungs-daten

    Modell- bewertung

  • *

    Disagreement table for observed variable (Compute Best Predicted Classification from all Models) Observed variable: KreditwrdigkeitPMML_GDA3Pred for Kreditwrdig-keit - % IncorrectPMML_CTrees4Pred for Kreditwrdig-keit - % IncorrectPMML_CCHAID5Pred for Kreditwrdig-keit - % Incorrect

    VotedPrediction for Kreditwrdig-keit - % Incorrect Nein8,4040115,111809,1750211,71935Ja21,5035011,8007024,8251717,91958

  • *

  • *

  • *

    Disagreement table for observed variable (Compute Best Predicted Classification from all Models) Observed variable: KreditwrdigkeitPMML_GDA3Pred for Kreditwrdig-keit - % IncorrectPMML_CTrees4Pred for Kreditwrdig-keit - % IncorrectPMML_CCHAID5Pred for Kreditwrdig-keit - % Incorrect

    VotedPrediction for Kreditwrdig-keit - % Incorrect Nein8,4040115,111809,1750211,71935Ja21,5035011,8007024,8251717,91958

  • *

  • *

  • *Auf den folgenden Folien wird exemplarisch (bitte nicht blind als Rezept fr alle anderen Vorgehensweisen benutzen!!) eine Analyse anhand der Daten Speicher02.por Schritt fr Schritt in einer von vielen mglichen Varianten vorgefhrt. Dabei werden die (relativ) wenigen Daten durch ein sog. Stratified Random Sampling auf jeweils annhrend 50 Flle fr die Variable gut/schlecht durch mehrfaches Ziehen aus dem Datensatz aufgestockt.

    Danach wird der Datensatz zu jeweils 50% in einen Teil fr das Training der Modelle und in einen zur Validierung unter- teilt.

    Nach der Berechnung eines Klassifikationsbaumes (es knnten in derselben Manier x-weitere berechnet werden) erfolgt eine Bewertung des (hier nur einen) Modells.

  • *So sieht als ein Beispiel die zu generierende Workflow-Oberflche aus.

    Die Daten sind im Knoten ganz links und mssen hinsichtlich abhngiger und unabhngiger (numerischer oder kategorialer) Variablen zugeordnet werden.Teilergebnis auf Folien 162 und 164Teilergebnis auf Folien 163

  • *In diesem Knoten werden fr das Sampling jeweils 50 Flle festgelegt.

  • *Wollen Sie sich das Resultat an dem Daten-Zwischen-Knoten anschauen, so mssen Sie bspw. wie hier gezeigt ein Balkendiagramm mit Hilfe des entsprechenden Knotens aus dem Node Browser einfgen.

  • *

  • *

  • *Mit Hilfe dieses Knotens wird der Sampling-Datensatz zu jeweils 50%/50% in einen Datensatz fr das Training des Klassifikators und in einen fr die Validierung unterteilt. Alternativ lsst sich auch die Anzahl der Flle angeben.

  • *Wichtig ist hier, die bereits durch den Training/Testing-Knoten festgelegte, Spezifikation dieses Datensatzes als for deployed project!!!!. Sollte Sie in anderen Fllen, unter einem anderen Projektaufbau keinen Knoten Test/Training verwenden, dann mssen Sie vor einer Aktivierung einer Bewertung diese kleine Box markieren!!

  • *

  • *

  • *

  • *

  • *

  • *

  • *Hinweise, Verweise, Datenquellen:

    http://www.diw.de/deutsch/sop/index.html (daten des socio-economic panel) http://stats.oecd.org/wbos (Bildungsdaten, bspw. PISA Daten) StatSoft.deStatSoft.com SPSS.deSPSS.com

    *