Werken met syntax in SPSS

Inhoud:
Verkrijgen en uitvoeren van syntax
Commentaar toevoegen in het syntaxbestand
Het syntaxbestand bewaren
Verkrijgen van syntax via de help-functie

Bij BS heb je alle commando's in SPSS uitgevoerd via de menustructuur. In SPSS is het echter ook mogelijk om de commando's als tekstregels op te geven. Deze uitgetypte commando's heten syntax in SPSS. Deze syntax kun je zien als een soort programmeertaal, waarmee je SPSS een hele reeks commando's in één keer kunt laten uitvoeren. De syntax kan opgeslagen worden als een soort tekstbestand, het zogenoemde syntaxbestand dat in SPSS de extensie .sps heeft.

Het heeft een aantal voordelen om met syntaxbestanden te werken:

  1. Het werken met een syntaxbestand helpt je tot systematisch en georganiseerd werken.
    Je kunt in het syntaxbestand commentaar zetten waarmee je duidelijk maakt waarom je bepaalde bewerkingen en commando's hebt uitgevoerd. Zo kun je achteraf nog nagaan hoe je een bepaalde analyse precies hebt uitgevoerd.
  2. Je kunt zelf altijd controleren of je alle bewerkingen en analyses goed hebt uitgevoerd en gerapporteerd.
    Je kunt met letterlijk één druk op de knop het hele syntaxbestand opnieuw laten uitvoeren zodat je alle resultaten opnieuw krijgt. Dat is niet alleen handig wanneer je je resultaten per ongeluk hebt weggegooid of niet hebt bewaard, maar het is ook handig wanneer je achteraf nog een foutje in je gegevensbestand vindt of nog wat extra gegevens wilt toevoegen.
  3. Je kunt omslachtige werkzaamheden, zoals hercoderingen, gemakkelijk herhalen door de syntax te kopiëren uit een eerder syntaxbestand.
    Dit is handig wanneer je uitgebreide hercoderingen (met Recode) maakt of ander tijdrovend werk, zoals het invullen van labels bij de waarden van variabelen (value labels). Als je eenmaal zo'n hercodering hebt gemaakt en bewaard hebt in een syntaxbestand, kun je het uit dit bestand kopiëren wanneer je het opnieuw nodig hebt, gewoon door te knippen en plakken.

Verkrijgen en uitvoeren van syntax

Vrijwel alle syntax-commando's kan je verkrijgen door via het menu de analyse te specificeren en in plaats van OK op PASTE te drukken.

Wanneer er nog geen syntaxbestand open is, opent SPSS automatisch een nieuw syntaxbestand, en plakt het commando daarin. Je kunt een bestaand syntaxbestand, bijvoorbeeld een bestand dat je zelf eerder hebt gemaakt en bewaard, openen via het commando Syntax in het menu File>Open van SPSS.

De analyse is nu nog niet uitgevoerd! Je kunt het commando laten uitvoeren door in het menu van de syntax editor "RUN" te kiezen. Je hebt de keuze om de hele syntax (alle commando's) uit te voeren, alleen het commando waar de cursor staat uit te voeren of alleen de geselecteerde commando's uit te voeren.

Je kunt ook direct in de syntax editor commando's tikken of wijzigen. Zorg wel dat je de syntax goed begrijpt (zie de paragraaf "Verkrijgen van syntax via de help-functie"). Alle tekst in hoofdletters dien je niet te wijzigen.

Bijvoorbeeld: we hebben via PASTE het commando verkregen voor de hercodering van een variabele genaamd dem56.

RECODE
dem56
(1=3) (2=2) (3=1) (ELSE=SYSMIS) INTO dem56r .
EXECUTE .

We kunnen nu eenvoudig variabelen toevoegen die we op dezelfde wijze willen hercoderen.

RECODE
dem56 dem57 dem58
(1=3) (2=2) (3=1) (ELSE=SYSMIS) INTO dem56r dem57r dem58r.
EXECUTE .

We kunnen zelfs variabelen toevoegen die we op een andere wijze willen hercoderen.

RECODE
dem56 dem57 dem58
(1=3) (2=2) (3=1) (ELSE=SYSMIS) INTO dem56r dem57r dem58r
/ dem72
(1=4) (2=3) (3=2) (4=1) (ELSE=SYSMIS) INTO dem72r .
EXECUTE .

Let er wel op dat je altijd het commando met een punt afsluit!

Commentaar toevoegen in het syntaxbestand

Het is erg belangrijk dat je de verschillende stappen in je analyse, dus de opeenvolgende onderdelen van je syntaxbestand voorziet van een toelichting. Wat ga je in de volgende stap doe en waarom doe je het op deze manier?

Het syntaxbestand is een doodgewoon tekstbestand, waarin je zelf dingen kunt typen. Maar aangezien SPSS zal proberen om alles wat er getypt is te vertalen naar commando's die het kent, moet je je commentaar op een bijzondere manier toevoegen.

  1. Begin de regel met het woord COMMENT. Alles wat er tussen COMMENT en de eerstvolgende punt (.) staat, vat SPSS op als commentaar in plaats van een commando.
    NB binnen het commentaar mogen er dus geen punten voorkomen, anders denkt SPSS dat daar het commentaar al stopt en probeert SPSS de rest van je commentaar als een commando uit te voeren.
  2. Begin de regel met het teken *. Alles wat er tussen * en de eerstvolgende punt (.) staat, vat SPSS op als commentaar in plaats van een commando.
    Ook hier geldt dat je geen punten binnen het commentaar moet zetten.
    In versie 17 van SPSS kun je een getypte regel ook omzetten in commentaar met de knop /* op de menubalk.
  3. Zet je commentaar tussen /* en */. Alles wat tussen dergelijke combinaties van symbolen staat, wordt door SPSS opgevat als commentaar.

Je ziet ook hier weer dat het werken met een afsluitende punt erg belangrijk is. Wanneer je je commentaar niet met een punt afsluit, zal SPSS alles wat erop volgt tot de eerstvolgende punt opvatten als commentaar dat overgeslagen kan worden. Meestal is dit het eerstvolgende echte commando dat SPSS eigenlijk wel moet uitvoeren.

Het syntaxbestand bewaren

Voordat je SPSS afsluit, moet je het syntaxbestand bewaren. Geef het syntaxbestand een duidelijke naam, bijvoorbeeld syntax.opgave2.1.sps en bewaar het op een plaats zodat je er later nog bij kunt. Bewaar het dus NIET op de harde schijf van een PC aan de universiteit, want die wist alle bestanden wanneer je uitlogt.

Leer jezelf aan om alle overbodige commando's direct uit het syntaxbestand te verwijderen. Het komt vaak voor dat je een commando via het menu opbouwt en dan in het syntaxbestand plakt (paste) dat toch niet precies blijkt te doen wat je wilt. Verwijder het uit het syntaxbestand voordat je het commando opnieuw gaat opbouwen via het menu van SPSS.

We zullen soms bij de practicumtoetsen vragen om de syntax in te leveren, zodat we kunnen controleren of de juiste SPSS-commando's zijn gebruikt. Wanneer het opnieuw uitvoeren van het syntaxbestand dan andere resultaten oplevert dan de juiste, zullen we het antwoord fout rekenen. Zorg dus voor goede syntaxbestanden en controleer of de syntax de juiste en alleen maar de juiste resultaten oplevert door de syntax zelf een keer te laten uitvoeren (run) voordat je de syntax inlevert.

Verkrijgen van syntax via de help-functie

Je kunt ook via de helpfunctie opzoeken hoe de commando-syntax eruit ziet. Als je dat doet is het handig om de schrijfwijze van de commando's te begrijpen.

Volgens de helpfunctie ziet de syntax voor het definiëren van missende waarde er als volgt uit.

MISSING VALUES
{varlist(value list)[[/]varlist ...]}
{ALL(value) }

" Alle kernwoorden (commando's) staan in hoofdletters.
" Alles wat in kleine letters staat aangegeven dien je als gebruiker te specificeren. Bijvoorbeeld "varlist" betekent dat je de lijst met variabelen moet intikken en "value list" betekent dat je een lijst met waarden moet intikken.
" Alle elementen die tussen [] staan zijn optioneel.
" Alle elementen die tussen {} staan zijn elementen waaruit je kunt kiezen.
" Het commando sluit je altijd af met een punt.

Eerst tik je het commando MISSING VALUES.
Vervolgens heb je de keuze uit twee mogelijkheden:
" {varlist(value list)[[/]varlist ...]} òf
" {ALL(value) }.

De eerste mogelijkheid is om na het commando MISSING VALUES de lijst te tikken met variabelen waarvoor je dezelfde waarden als missing wilt definiëren (varlist). Vervolgens tussenhaakjes de waarden die je voor deze variabelen als missing wilt definiëren (valuelist). Het commando sluit je altijd af met een punt. Het commando voor missing values ziet er dus bijvoorbeeld als volgt uit:

MISSING VALUES dem56 dem57 dem58 ( 8, 9 ).

Bij de eerste mogelijkheid kunnen we ook nog een optioneel element gebruiken: [[/]varlist ...]. Dit betekent dat we optioneel ook nog andere lijsten met variabelen en waarden kunnen toevoegen. Bijvoorbeeld:

MISSING VALUES dem56 dem57 dem58 ( 8, 9 )
/dem42 (13,98,99).

De tweede mogelijkheid is om na het commando MISSING VALUES voor alle variabelen (ALL) dezelfde waarden als missing te definiëren:

MISSING VALUES ALL ( 8, 9 ).