1 / 77

Text eines Diktats:

Die folgenden Folien beinhalten Erläuterungen, die einen Inhalt des Seminars ‚Fehler in der Schule – Schülerfehler‘ unterstützen sollen: Die Frage, wie sich systematisch auftretende Fehler erkennen lassen.

hila
Télécharger la présentation

Text eines Diktats:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Die folgenden Folien beinhalten Erläuterungen, die einen Inhaltdes Seminars ‚Fehler in der Schule – Schülerfehler‘ unterstützensollen: Die Frage, wie sich systematisch auftretende Fehler erkennen lassen. Bei Klassengrößen zwischen 25 und 30, und vier bis sechs zu betreuenden Klassen, dürfte es kaum möglich sein, die Fehler, die jede einzelne Schülerin, jeder Schüler macht, im Blick zu behalten. Damit liegt es nahe, rechnergestützte Analyseverfahren zu nutzen unddamit zugleich einen Blick auf die angewandten wissenschaftlichen Methoden psychologisch-pädagogischer Fehlerforschung zu richten. Die Folien sollen dabei behilflich sein, in Eigenarbeit die imSeminar besprochenen und erprobten Rechnen- und Analyseschrittenach zu vollziehen.

  2. Ein erster, wichtiger Schritt der systematischen Analyse von Fehlernbesteht in der Erfassung auftretender Fehler.Die detaillierte Feinauflösung dieser Erfassung kann nur gegenstands-,bzw. fachspezifisch diskutiert und erläutert werden.Im Prinzip gilt es, auftretende Fehler, unterschieden nach unter-schiedlichen Fehlerarten (siehe dazu Weimer 1925), möglichst genau,bezogen auf den Ort ihres Auftretens, zu erfassen. Um dies an einem einfachen Beispiel kurz zu demonstrieren, wird auf der nächsten Folie ein Text vorgestellt, der als Diktat vorgegeben wird.Die hier nicht geleistete Aufgabe bestünde bei der Konzeption desTextes darin, unterschiedliche Komma-Setz-Regeln (der aktuelle Duden behandelt dieses Thema in den § 71 bis 79) an verschiedenen Stellendes Textes, idealer Weise möglichst mehrfach, einzubauen. Das mehrfache Auftreten erlaubt Hinweise auf irrtümliche Annahmen,wenn auf inkonsistente Art und Weise mit der Kommasetzung unge-gangen wird.

  3. Beispiel für einen zu analysierenden Text; der Fokus soll hier auf der Analyse von Komma-Fehlern liegen Text eines Diktats: „Peter, ein Junge aus der Nachbarschaft, traf seine Freundin Inge. Inge war gerade auf dem Weg zum Freibad,obwohl es regnete, recht kalt war und das Wetter damit nicht gerade zum Baden einlud. Peter, der einen dicken Pullover unter einer Regenjacke trug, fand das Badengehendaher auch eine recht merkwürdige Idee. Er schlug statt dessen vor, ins Kino zu gehen. Doch er wollte, sie nicht. […..]“

  4. Die im Text zu analysierenden Fehler müssen in einem ersten Schritt markiert werden. EineMöglichkeit wäre es, einfach alle erforderlichen Kommata durchzunummerieren. Wichtig ist es,ein möglichst einfach und sicher handhabbares Verfahren anzuwenden. Im Anschluss wird eine Datenmatrix erstellt, bspw. so wie in der folgenden Tabelle dargestellt.Für jede Schülerin und jeden Schüler wird mit Hilfe einer festzulegenden Codierung eingetragen, ob das erforderliche Komma richtig oder falsch gesetzt wurde oder ob die Passagegar nicht geschrieben wurde. • Codierung: • 0 = Nicht bearbeitet • 1 = Richtig • 2 = Fehler

  5. Wie lassen sich diese Daten nun auswerten? Zunächst ist zu betonen, dass es ganz unterschiedliche Fragen gibt, die an diese Daten gestellt werden können. Entsprechend gibt esmehr als eine Antwort auf die Frage nach der Vorgehensweise einerAuswertung. Hier wird eine dieser Fragen in einem exemplarischen Sinne hervor-gehoben, um die Vorgehensweise vorzustellen und zu erläutern. Diese Frage lautet: Wie häufig tritt bei einem einzelnen Schüler/Schülerin ein bestimmterFehler auf. Oder anders formuliert: Wie verteilen sich die Fehler-häufigkeiten bezogen auf die Schüler/Schülerinnen und die verschiedenen Anlässe, einen Fehler zu machen?

  6. Vorgestellt wird die Vorgehensweise an einem Datensatz, der (auch) imSeminar erhoben wurde: Daten des d2 Aufmerksamkeits-Belastungstests(Brickenkamp 1981; 2002). Vereinfacht sind in diesem Satz die dabei erhobenen Daten wie folgt codiert: • 0 = Nicht bearbeitet • 1 = Richtig • 2 = Fehler Für jede der 14 Zeilen und allen Spaltendes Tests wird eingetragen, ob das Zeichen richtig (= 1), fehlerhaft (= 2) odergar nicht (= 0) bearbeitet wurde. Wie man sieht, wurden in dem hier gezeigten Abschnitt alle Zeichen richtigangestrichen.

  7. Die Daten jedes Testbogens sind hier durch eine Leerzeile vonein-ander getrennt. Die hier gestellte Aufgaben lautetdamit genauer: Wie häufig werden die Zeichen inder Zeile 1 und in der Spalte 1fehlerhaft markiert? Wie häufig werden die Zeichen inder Zeile 2 und in der Spalte 1fehlerhaft markiert? Etc.

  8. Die Vorgehensweise zur Beantwortung dieser Frage lässtsich schematisch wie folgt darstellen: Gesamtdatensatz Gib mirnur die Datender zweiten Zeile,erste Spalte Gib mirnur die Datender zweiten Zeile,erste Spalte Gib mirnur die Datender ersten Zeile,erste Spalte Aus dem Gesamtdaten-satz werden nacheinanderTeildatensätze gebildet, diejeweils nur die Daten einerZeile und einer Spalteenthalten. Teildatensatz

  9. SPSS/PASW bietet dafür unter Daten die Option Fälle auswählen

  10. Klicken Sie diese Option an, öffnet sich das folgende Dialogfenster.Dort klicken Sie das Feld Falls Bedingung zutrifft Falls an, woraufdas nächste Dialogfenster geöffnet wird, in dem Sie Zeile = 1eingeben.

  11. Die Datei sieht nun wie folgt aus: Es gibt nur noch die Daten aller Zeilen 1 und der Spalte 1 (S_01). Wie kann jetzt ermittel werden,wie oft in der Variable S_01 die Werte0, 1 und 2 vorkommen?Dazu gibt es einen Befehl:

  12. Unter Transformieren findet sich die Option Werte in Fällen zählen

  13. Auf die bis zum diesem Punkt erläuterte Art und Weise ließensich jetzt alle Spalten, aller Zeilen nacheinander analysieren. Doch: bei 14 Zeilen à 47 Spalten müsste 658 mal dieselbe Prozedurmit Mausklick und entsprechenden Eingaben durchgeführt werden— eine extrem mühsame ‚Eselsarbeit‘ . Doch SPSS/PASW bietet, wie fast alle anderen Programme auch, Automatisierungsoptionen in Form sog. Syntax-Prozeduren oderMakros. Im folgenden wird die Nutzung dieser Optionen erläutert. Kurz: fürjede Spezifikation per Mausklick und Tastatur wird im Hintergrundein Programmier-Code generiert, der für gewöhnlich ‚unsichtbar‘bleibt. Um diesen Code zu sehen müssen folgende Einstellungenvorgenommen werden:

  14. Unter Bearbeiten finden Sieganz unter die Option Optionen. Diese klicken Sie an.

  15. Dann weiter zu Datei-Speicherstellen. Dort findet sich das FeldSitzungs-Journal.

  16. Hier kann die Option Syntax in Journal aufzeichnen aktiviert werden, wodurch automatisch im Hintergrund der Programmier-Code (nahezu) aller Arbeitsschritte aufgezeichnet wird. Ein Stufe tiefer kann festgelegtwerden, ob die Aufzeichnung jeweils an die bereits vorhandenen Auf-zeichnungen angehängt werden sollen, oder ob bei jedem Neustart des Programms die vorherigen Eintragungen gelöst und eine neueAufzeichnung erstellt wird. Hier gilt es zu bedenken, dass bei Anhängenund komplexen Programmen relativ schnell vorhandene Speicher-kapazitäten erreicht werden können, die Software dann auf unterschied-liche Speicherorte zugreift, was die Rechengeschwindigkeit erheblichreduzieren kann.Zu guter Letzt muss der Speicherort der Datei und der Name derJournal-Datei festgelegt werden – sofern nicht die Voreinstellungakzeptiert wird.

  17. Um alle verfügbaren Befehle und Optionen, inklusive ihrer Spezifikationen, zu sehen und erläutert zu bekommen, findet sich unterHilfe die Rubrik Befehlssyntax-Referenz.

  18. Die folgenden Seiten erläutern nun Schritt für Schritt den Inhalt einerSyntax, mit der die Berechnungen der Fehlerhäufigkeit in Prozentenaller bearbeiteten Spalten und Zeilen durchgeführt werden kann. Die Befehle können dabei a) als solche direkt in das Programm eingegeben werden – was die Kenntnis dieser Befehle und ihrer Spezifikationen erfordert, oder b) die Befehle können per Mausklick und Tastatureingaben, wie weiter oben erläutert, so lange eingegeben werden, bis das Resultat den gewünschten Zielen entspricht, um dann den Programmier-Code aus dem Journal heraus zu kopieren und in das Programm einzufügen.

  19. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Dieser Befehlsbereichöffnet die in Anführungszeichengesetzte Datei und listet dabeidurch den Zusatz KEEP nur dienach dem Gleichheitszeichenaufgeführten Variablen.

  20. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Durch diesen Befehl SELECT IFalle Fälle aus der Datei entfernt, bei denen die Variable Zeilenicht den Wert 1 aufweist.

  21. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . In diesem Block werden durchden Befehl COUNT zunächst neue Variablen generiert, dieden nach COUNT eingetragenenNamen erhalten. Hier also F_S (soll für Fehler in der Spaltestehen) R_S (richtig in der Spalte)und O_S (ohne Bearbeitung). Nach dem Gleichheitszeichen wird die Variable aufgeführt, in der die in Klammern stehendenWerte gezählt werden sollen.

  22. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Der Befehl RECODE codiert inallen nachstehend aufgeführtenVariablen, hier F_S, R_S und O_S,die in der nachfolgenden Klammer stehenden Werte um.In dem hier gezeigten Fall werdenaus fehlenden Werten (MISSING)der Wert Null.Der Sinn dieses Befehls bestehtdarin, sicher zu stellen, dass keine fehlenden Werte vorliegen, weil in einem solchen Fall das gleich folgende Aufaddieren derWerte einer Spalte genau voreinem fehlenden Wert stoppenwürde.

  23. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . In diesem Block sind zwei Befehleenthalten: COMPUTE undCREATE CSUM.Mit COMPUTE wird eine neue Variable generiert,die den Namen Fall erhält. Durch das Gleichheitszeichen wirdallen Fällen dieser neuen Variableder danach angegebene Wert, hier 1, zugewiesen. Mit CREATE und CSUM werdenalle Werte einer Spalte auf-addiert. Direkt nach CREATE wirddie Zielvariable des Aufaddierensangeben.

  24. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Nach dem Gleichheitszeichensteht CSUM für den Befehl Aufaddieren. Dahinter wird inKlammern die Variable angegeben, deren Werte auf-addiert werden sollen. Wie hier gezeigt, können die Werte einer Variable auch inderselben Variable aufaddiertwerden. Zu beachten ist hier, dass dadurch die zuvor in derVariable enthaltenen Werteüberschrieben werden und damitnicht mehr vorhanden sind!

  25. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Mit SORT CASES BY werdenanhand der nachfolgend genannten Variable, hier Fall, alleFälle der Datei sortiert.Die Sortierung kann in zweiverschiedenen RichtungenVorgenommen werden. Das in Klammern stehende Dsteht für descend (absteigend),ein A (arise) bewirkt eine auf-steigende Sortierung. Mit SELECT IF (siehe oben) wirdhier durch $casenum auf die ganzlinks stehenden, automatisch generierten Zeilennummernabgehoben. Kurz: Es wir der erste,höchste Werte beibehalten.

  26. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . COMPUTE ist quasi der Universal-befehl für die unterschiedlichsten Berechnungen. Auch hier wird wieder direkt nach dem Befehl die Zielvariable angegeben, in die die zu berechnenden Werteeingetragen werden sollen (hierProz_F). Dann wird die Berechnugnach dem Gleichheitszeichen an-gegeben: 100 mal F_S, geteiltdurch F_S plus R_S. Der einfacheDreisatz zur Berechnung der Fehlerprozente.

  27. GET FILE='SPEICHER01.sav' /KEEP= Zeile, S_01 . EXECUTE . SELECT IF (Zeile = 1) . EXECUTE . COUNT F_S = S_01 (2) . EXECUTE . COUNT R_S = S_01 (1) . EXECUTE . COUNT O_S = S_01 (0) . EXECUTE . RECODE F_S R_S O_S (MISSING=0) . EXECUTE . COMPUTE Fall = 1 . CREATE Fall = CSUM(Fall) . CREATE F_S = CSUM(F_S) . CREATE R_S = CSUM(R_S) . CREATE O_S = CSUM(O_S) . EXECUTE . SORT CASES BY Fall (D) . SELECT IF ($casenum = 1) . EXECUTE . COMPUTE Proz_F = (100 * F_S) / (F_S + R_S) . EXECUTE . Auf Basis der bisherigen Erklärungenkönnten jetzt für jede einzelne Berechnungdie jeweils zu verändernden Werte – per Hand! – eingesetzt werden. Bspw. an diesen Stellen. Dies wäre etwas komfortabler, als mit Maus undTastatur, aber immer noch recht mühsam. Die Lösung: Nutzung von Makros

  28. SPSS Makros Struktur Makro(grob)struktur Bedeutung, Funktion DEFINE !freq1 () . Anfang der Makrodefinition mit Name „!FREQ1“ und Argument „()“ . descriptives Makroinhaltvar = alter fameink .!ENDDEFINE . Ende der Makrodefinition!freq1 . Makroaufruf

  29. Die variablen Teile des Programms werden in einem Makrodurch „Platzhalter“ markiert und am Ende des Programmswird in der sog. Makroexpansion festgelegt, welche Wertedie „Platzhalter“ in dem jeweiligen Programmdurchlaufannehmen 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

  30. An Ende des Programmaufrufs werden die Werte, die durch „Platzhalter“ beim Programmdurchlauf einnehmen sollendefiniert. !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 § . Name des Makros: MAKRO_Einlesen_UebungsDateien.sps

  31. Was bedeutet „TOKENS“? (engl. „Zeichen) Mit der Option !TOKENS werden die nächsten n Tokensim Makroaufruf dem Argument bzw. den Argumentenzugewiesen. Als Elemente zählen Variablen, Zahlen, Strings usw.:

  32. Bei !TOKENS sind das Ausrufezeichen und die Anzahln in einer Klammer wichtig. n entspricht positivenganzzahligen Werten. Die Option !TOKENS-Option istalso nützlich, wenn die Anzahl der Token bekannt undkonstant ist. Bei der Festlegung der Anzahl der Tokensind Besonderheiten bei der „Zählweise“ von Token zu berücksichtigen:

  33. In dem Beispiel Makro MACRO_Einfaches_Beispiel wird nachden Namensargumenten Var1 und Var2 unmittelbarnach einem notwendigen =-Zeichen die Option!TOKENS(1) angegeben. Während der sog. Makro-expansion greift !AUSWERTUNG auf die Vorgaben zurück, die durch dieses Argument festgelegt wurden,nämlich eine Variable Var1 und eine Variable Var2bereitzustellen. Die Information „ein Zeichen“ wird daher mit der Zu-weisung zur gleichen Anzahl an Variablen zumArgument im Makroaufruf für die Analyse verknüpft.

  34. Ein Beispiel: /* Einfaches erstes Beispiel für 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_Beispiel

  35. In diesem Makro „MACRO_Einfaches_Beispiel“ wird oben fest-gelegt, dass den beiden Platzhaltern VAR1 und VAR2 Zeichenim Umfang von einem Zeichen zugeordnet werden. In den Befehl zum Erstellen eines Scatterplotts werden dannkeine Variablennamen, sondern nur die Platzhalter gesetzt. /* Einfaches erstes Beispiel für 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 derPlatzhalter bei jedemDurchlauf gesetztwerden soll, wird andieser Stelle fest-gelegt.

  36. !CHAREND („Zeichen“) – Listen durch ein einzelnes Zeichen Mittels !CHAREND werden alle Tokens bis zu einem explizitfestzulegenden Zeichen in einem Makroaufruf dem Argumentzugewiesen und ausgeführt. Bei diesem Zeichen muss es sich um ein einzelnes Zeichen (String mit der Länge 1) handeln, das zwischen Hochkommataund in Klammern steht. Im Prinzip kann jedes beliebige Zeichenals Trennzeichen eingesetzt werden. Die SPSS CommandSyntax Reference (2004) verwendet z.B. einen sog. Slash ‚/‘, umeine Trennung zu signalisieren. Dieser Slash hat also nichts mit dem Trennungszeichen zu tun,das zwischen zwei Argumentdefinitionen stehen muss; um eineVerwechslung zu vermeiden, wird empfohlen, als Zeichen keinenSlash, sondern ein beliebiges anderes Zeichen zu nehmen, bspw. ‚§‘.

  37. Bei !CHAREND-Trennungszeichen ist ihre richtige Position absolut entscheidend. Eine falsche Position führt dazu, dassdiese Positions- oder auch Namensargumente beim Aufruf desMakros falsche Token-Zusammenstellungen an SPSS über-geben. !CHAREND-Optionen sind v.a. bei positionalen Argumenten nützlich, können 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 § .

  38. Ein Beispiel dazu: /* Einfaches zweites Beispiel für 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_Beispiel2

  39. Eine weitere Möglichkeit die hier Erwähnung finden soll ist dieVerwendung sog. positionaler Argumente. Dabei wird, wie in dem folgenden Beispiel gezeigt, durch denBefehl !POS und dem Zusatz !TOKENS die Möglichkeitgeschaffen, 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 Reiheder aufgelisteten Tokens in das Programm aufzunehmen.

  40. /* Ein drittes Beispiel für 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

  41. Die bislang vorgestellten Optionen erforderten es, dass die Anzahlund/oder Stellung der Platzhalter in der Definition festlag und bekannt war. Eine oft sehr nützliche Alternative zu dieser Option stellt der Befehl !CHAREND dar. Ein Beispiel für diesen bereits erläuterten Befehls folgt in dem nächsten Makro. Das besondere und neue an diesem nächsten Beispiel ist jedochdie Einführung von einer Schleife, einem sog. Loop. Was bewirkenbzw. können solche Loops?Während in den bisherigen Beispielen für jeden Durchlauf desgestarteten Makros die dabei einzusetzenden Variablenwertefestgelegt werden mussten, werden bei einem Loop, genauermit Hilfe eines sog. List-Processing-Loops eine (nahezu unbegrenzte) Menge von Werten vorgegeben, die dann auto-matisch der Reihe nach eingesetzt werden.

  42. Schematisch lässt sich das Ganze so darstellen:Am Anfang eines solchen Loops steht der Befehl !DO gefolgtvon der Bezeichnung des Platzhalters der einzusetzendenVariablen, 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 derSchleife, des Loops wird durch den Befehl !DOEND ange-geben: • !DO !VAR !IN (LISTE) • Befehle – • !DOEND

  43. !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 . !DOEND LISTE = 30 40 50 60 In dieser schematischen Darstellung würden also alle vier Werteaus der „Liste“ automatisch nacheinander in die Berechnung ein-gesetzt werden.

  44. /* Ein fünftes Beispiel für 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 beschäft partei sternzei / VAR1 = todesstr . Name des Macros: MACRO_Einfaches_Beispiel5

  45. /* Ein fünftes Beispiel für 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 beschäft 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 prügel 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

  46. Was zunächst sehr kompliziert zu klingen scheint ist jedochin den meisten Fällen eher einfach und sehr nützlich: Es lassensich (nahezu) unbegrenzt viele Schleifen miteinanderverschachteln: Das nächste Makrodemonstriert diese Möglichkeit. Zuerstwird das erste Zeichender Liste1 eingesetzt,dann das erste Zeichender Liste2, dann daszweite Zeichen derListe2 usw. Sind alleZeichen der Liste2 durch, wird das zweiteZeichen der Liste1eingesetzt usw. usw. LOOP II LOOP I

  47. /* Ein viertes Beispiel für 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 beschäft partei / LISTE2 = todesstr sternzei § . Name des Macros: MACRO_Einfaches_Beispiel4

More Related