Prüfungen

<< Click to Display Table of Contents >>

Navigation:  Arbeit mit GESStabs > Protokolle und Prüfungen >

Prüfungen

StrictVarList

Syntax:

STRICTVARLIST = [ YES | NO ];

Dies ist ein Schalter, der zum sicheren Programmieren einlädt. Setzt man STRICTVARLIST auf YES, wird bei
RECODE
VARTITLE
VARTEXT
VALUELABELS
ein Fehler ausgegeben, wenn man Syntaxvarianten ohne explizite Variablennennung benutzt. Zum Beispiel:

COMPUTE f222 = Q17_1;

VARTITLE = "ehemals Q17_1";

Das '=' hinter VARTITLE würde die Fehlermeldung auslösen. Zum Hintergrund:

Anweisungen wie z.B. RECODE 7:88 = 4;stehen oft nach einem COMPUTE, das die zu rekodierende Variable erzeugen soll. In der Regel funktioniert dieser Bezug auch so, wie vom Scripter gemeint. Es kann aber vorkommen, dass die zu erzeugende und befüllende Variable, (f222) an der Stelle im Script schon existiert - sei es, dass sie aus einem SPSS-SAV-File gelesen wurde, mit einem SINGLEQ-Statement oder implizit mit einem COMPUTE oder IF erzeugt wurde. Syntaktisch ist dies eine „leere Variablenliste“, die GESStabs durch die zuletzt erzeugte Variable ersetzt (siehe Kontext). Das ist zwar irgendwie praktisch, aber hoch fehleranfällig. Denn wenn f222 bereits besteht, ist sie nicht die zuletzt generierte Variable, sondern irgendeine andere, und die ursprüngliche Information geht verloren. Im Ergebnis sind dann zwei Variablen verunreinigt. Guter Programmierstil ist, diese alte Syntax-Konvention (ohne Variablenbenennung) nicht zu verwenden. Durch diesen Schalter kann man das erzwingen.


CheckRecodes

Syntax:

CHECKRECODES = [ YES | NO };

Bei YES werden vorhandene RECODE-Befehle daraufhin überprüft, ob die definierten Obergenzen größer als/gleich die definierten Untergrenzen sind.


CountValid

Syntax:

COUNTVALID  <resultvars> = <varlist>;

Dieses Statement zählt, wie viele gültige Werte in einer Mehrfachnennungsvariablen (MultiQ) enthalten sind, und schreibt den Wert in eine oder mehrere neue Variablen (resultvars).

Beispiel: "mmm" sei eine VarFamily, die maximal 20 Werte enthalten kann. Wenn diese die Werte 1, 4, 5 und 22 enthält, dann sind hier 4 von 20 möglichen Codes enthalten. Nach der Anweisung

COUNTVALID  mmm_nvalid = mmm;

enthält die neu generierte Variable "mmm_nvalid" den Wert 4 (Anzahl der Nennungen).

Im Standardfall werden nur die unterschiedlichen Nennungen gezählt, d.h. jeder Code wird nur einmal pro Fall ausgezählt. "mmm_nvalid" würde also auch den Wert 4 erhalten, wenn mmm die Werte 1, 4, 1, 4, 5 und 22 enthielte. Mit EVALFAMVALONCE kann man dieses Verhalten anpassen.


IgnoreMultiQOverflow

Syntax:

IGNOREMULTIQOVERFLOW = [ YES | NO ];

Variablen vom Typ MultiQ bzw. VARFAMILY haben eine maximale Anzahl von Werten, die sie aufnehmen können. Wenn mehr Werte in einer MultiQ gespeichert werden sollen, als es der in der Familiendefinition oder dem Dateninput definierten maximalen Belegung entspricht, wird der Programmlauf mit einem Runtime-Error abgebrochen.

Mit der Schalterstellung YES kann eingestellt werden, dass diese Grenzüberschreitung stillschweigend ignoriert wird.


If... Print

Zur Erleichterung der Suche nach inkonsistenten Daten bzw. Datenfehlern gibt es ein selektives Druck-Kommando, mithilfe dessen Fehlerhinweistexte und/oder die Inhalte von Variablen ausgegeben werden können.

Syntax:

IF <log. Bedingung> PRINT "ErrorText" <Varlist> [ GOTO <varname> ];

oder

IF <log. Bedingung> PRINT PRINTFILE <filename> <varlist> ;

Beispiel für erste Variante:

IF ( Alter LT 17 AND Schulbildung GE 3 )

OR ( Alter LT 6 AND Schulbildung GT 0 )

PRINT "Unplausibler Ausbildungsgrad" Alter Schulbildung;

Die Meldungen erscheinen entweder im INPUT-DATA-ERROR-Fenster in der GESStabs-Oberfläche oder ggf. im LISTFILE.

Die zweite Syntax-Variante erzeugt eine Ausgabe in eine eigene, zugeordnete Datei. In diesem Fall wird eine Überschriftszeile mit den Variablennamen erzeugt. Die Variablen in der "varlist" müssen in diesem Fall aber von Typ SingleQ (einfache VARIABLE) sein.

Die mittels IF <bedingung> PRINT angeforderten Werte können auch im CSV-Format abgelegt werden. Jedem IF ... PRINT-Statement enstpricht eine CSV-Datei, die in der ersten Zeile die Namen aller ausgegebenen Variablen enthält.

Syntax:

IF <bedingung> PRINT CSVEXPORT [VALUELABELS] <filename> <varlist>;

"varlist" kann atomare Variablen, MultiQ oder DichoQ enthalten.

Für jede atomare Variable wird eine Spalte angelegt. Im Standardfall werden die numerischen Codes ausgegeben, bei atomaren Variablen vom Typ ALPHA allerdings abweichend die Texte. Über das Schlüsselwort LABELS bzw. VALUELABELS kann man für diese Datei die Ausgabe der vorhandenen Labeltexte verlangen.

MISSING Values werden als leere Strings ausgegeben. In der ersten Spalte wird entweder der Fallzähler (CASECOUNT) oder die Fallnummer (CASENUMBER) ausgegeben, wenn ein CASENUMBER-Statement vorher im Script gestanden hat.


[No]Noise

Syntax:

NOISE = <value>;

Mit NOISE kann man alle bekannten Variablen eines Datensatzes mit Zufallszahlen "verrauschen". VALUE gibt einen Anteilswert an, wie viele der Messpunkte durch Zufallswerte ersetzt werden. Mit value=1 entsteht eine völlig zufällige Verteilung. Als Wertebereich gilt die Menge der bekannten Labels bzw. die Unter- und Obergrenze, wie sie in RANGE definiert ist. Ist beides nicht bekannt, bleibt der Variablenwert unverändert.

Man kann hiermit einmal Testdatensätze erzeugen, die in der Besetzung dem Spalten- und Labelplan entsprechen (value=1), oder man kann die Stabilität von Zusammenhänge gegenüber Messfehlern abschätzen.

Es werden alle bekannten atomaren Variablen verrauscht, wenn man sie nicht durch das NONOISE-Statment davon ausnimmt: NONOISE <varlist> = YES;


Prüfungen für bestimmte Datenformate

SPSS: SuppressSPSSWarnings

Syntax:

SUPPRESSSPSSWARNINGS = [ ALPHA | VARLABEL | VALUELABELS ] ;

GESStabs generiert beim Einlesen mehrerer SAV-Files Warnungen, wenn sich der ALPHA-Status, das VARLABEL oder ein VALUELABEL ändert. Diese Warnungen können mit SUPPRESSSPSSWARNINGS abschalten werden.

SUPPRESSSPSSWARNINGS = ALPHA VARLABEL VALUELABELS; 

schaltet z.B. alle diesbezüglichen Warnungen ab.

Spaltenfixierte Datensätze: StrictInputCheck

Siehe Anhang