Automatisierte Datenreinigung: Do Repeat, Platzhalter, u.a.

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
Misio
Beiträge: 3
Registriert: 23.08.2013, 10:44

Automatisierte Datenreinigung: Do Repeat, Platzhalter, u.a.

Beitrag von Misio »

Hallo,

ich arbeite neu mit SPSS und stehe vor der Aufgaben für einen Datensatz mit ca. 5000 Variablen und 12.000 Fällen eine Syntax für Plausibilitätskontrollen zu schreiben. Das muss bei der Variablen- und Fallzahl alles so automatisiert wie möglich erfolgen.

Zunächst möchte ich auf Werte prüfen, die außerhalb des zulässigen Bereichs liegen, d.h. eine Check-Prozedur für alle Variablen mit der gleichen Skala. Mein Ziel ist es, für jede Variable im Rahmen einer Schleife temporär eine binäre Check-Variable zu generieren, die 1 wird bei unzulässigen Werten auf der gecheckten Variable. In die Ausgabe sollen dann die IDs der Fälle geschrieben werden, die auf Check eine 1 haben. Ansonsten soll in dem Output möglichst nichts stehen, da es sonst unnötig aufgebläht und unübersichtlich wird. Das kann ich über SET RESULTS steuern.

1. Ich habe angefangen über DO REPEAT Variablenlisten zu bestimmen und die Check-Variablen zu generieren. Das funktioniert. Was nicht funktioniert, ist, mir die IDs für Check=1, bspw. über FREQ, ausgeben zu lassen, da statistische Analysen unter DO REPEAT nicht zulässig sind (warum???). Gleiches gilt für LOOP. Gibt’s da Alternativen?

2. Es ist auch nicht möglich unter DO REPEAT und LOOP, die Inhalte des Platzhalters (also der Name der Variable, für die die gegenwärtig die Check-Prozedur durchgeführt wird) für ECHO zu verwenden. Das würde ich gerne machen, um jede Auflistung der ‚fehlerhaften‘ IDs pro Variable im Output mit einer Überschrift zu versehen, damit ich dort noch nachvollziehen kann, welche Variable gerade gecheckt wurde. Wie kann ich das lösen?

3. Alternativ könnte die Check-Variable das auch indizieren, indem ich sie so benenne wie die gecheckte Variable mit dem Anhang: _check. Leider kann ich aber unter COMPUTE auch keinen Platzhalter vor dem Gleichheitszeichen verwenden. Ich habe auch mit CONCAT rumprobiert, aber das kann ich nur für Variablenwerte benutzen und nicht für Variablennamen. Hierfür irgendwelche Ideen?

4. Schlussendlich werde ich noch das Probleme haben, dass die Variablen mit gleicher Skala nicht immer nebeneinander stehen im Datensatz. Gibt es eine Möglichkeit die Prozeduren nur für Variablen durchzuführen, die ein bestimmtes Format bzw. Skalenniveau haben (if-Bedingung)? Hier habe ich noch gar keine Idee zu.

Ich habe mir die Syntaxstruktur ungefähr so wie unten stehend vorgestellt (enthält sicher noch Grammatikfehler) bin aber allen Ansätzen gegenüber offen. Mir geht es ja um das Ziel und nicht um den Weg.

Oben Stehendes beruht natürlich nur auf meinem begrenzten Verständnis von SPSS; ich lasse mich da gerne korrigieren.

Ich hoffe ich konnte mich klar verständlich machen und bin für jeden Hinweis dankbar, weil ich mich jetzt länger mit dem Problem befasst habe und noch keinen Ausweg gefunden habe.

Danke
Misio



DO REPEAT var = var1 to var4000.
COMPUTE `var’_check = 0.
IF (var = …) var_check = 1.
TEMPORARY.
SELECT IF (var_check=1).
SET RESULTS ON.
ECHO „Folgende IDs haben unzulässige Werte auf `Var‘:“.
FREQ ID.
SET RESULTS OFF.
DROP `var’_check.
END REPEAT.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

wie sinnvoll der Ansatz bei 5.000 Variablen und 12.000 Fällen (also 840.000.000 Einzelvergleichen) ist, sei dahingestellt.

Der Ansatz enthält eine ganze Reihe von Fehlern, hier nur einige:

Es fehlt die Prüfung, wie soll überhaupt geprüft werden?

Falsches Repeat, statt dessen:

Do Repeat #i = var1 to var5000.
compute #i = .... .
end repeat.
exe.

Prozeduren können nicht in repeat Schleifen integriert werden. Dafür entweder Makros verwenden oder Python einsetzen. Erst prüfen, ob das überhaupt notwendig ist.

Skalierungen können nur mit Python ausgelesen werden.
drfg2008
Misio
Beiträge: 3
Registriert: 23.08.2013, 10:44

Beitrag von Misio »

Es soll geprüft und mir angezeigt werden, welche Fälle auf welchen Variablen unzulässige Werte haben. Ich will nicht einfach blind überschreiben, sondern im Einzelfall auch gezielt nachschauen können, was da vielleicht falsch gelaufen ist. Das kann natürlich bei der Zahl von Vergleichen 'unhandlich' werden, aber ich rechne mit sehr wenigen unzulässigen Werten. Mal sehen... notfalls kann ich die Syntax immer noch anpassen.

Ich habe das auf jeden Fall alles jetzt so hinbekommen wie geplant mit Hilfe von Makros, die erlauben ja doch etwas mehr Flexibilität bei der Automatisierung von Prozessen.
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten