Semináře ke kurzu Analytické metody výzkumu Jindřich Krejčí Transformace dat: používání syntaxe v SPSS Ovládání SPSS: okna v uživatelském menu SPSS syntax (*.sps) SPSS visual basic: makro jazyk - SPSS script (*.sbs) Proč SPSS syntax: obratnost: možnost opakování celé posloupnosti příkazů možnost uložit posloupnost příkazů a používat je později, upravovat nebo předat jiným uživatelům možnosti editace příkazů uspořádání práce, úspora prostoru - netřeba nahrávat rozpracované datové soubory některá zadání nelze realizovat pomocí oken např. pokud vyžadují posloupnost více příkazů Str. 2 1
Základy psaní syntaxe: otevřít syntaxové okno: FILE - NEW -... tlačítko PASTE v oknech menu vloží odpovídající syntax do syntaxového okna syntax je ve formátu ASCII text - lze ho připravit, otevřít a editovat v jakémkoliv editoru (např. ve Wordu) => lze využít editační funkce - kopírování bloků, vyhledávání, záměna,... v SPSS při psaní syntaxe lze používat elektronickou nápovědu soubory se syntaxí se vyplatí ukládat - lze je znovu použít, upravovat a slouží jako dokumentace práce často není třeba ukládat upravená data, ale pouze syntax Str. 3 Základy psaní syntaxe: příkaz začíná klíčovým slovem a končí vždy tečkou struktura jednotlivých příkazů je dostupná v elektronické nápovědě příkazy syntaxe lze obvykle zkrátit na tři písmena variable labels AGE Vek respondenta. odpovídá: var lab AGE Vek respondenta. již definované proměnné lze vkládat přes menu: Utilities-Variables-PASTE syntax lze popsat pomocí komentářů - komentář začíná hvězdičkou Str. 4 2
syntaxové okno v SPSS 10: nápověda spustit syntax proměnné undo poslední použité příkazy v menu Str. 5 Otevření datového souboru příkaz GET příkaz IMPORT Získání informací o struktuře souboru deskriptivní statistiky: frekvence, průměry, odchylky, minima, maxima, čtvercové tabulky příkaz DISPLAY - informace ze slovníku proměnných: /DICTIONARY - kompletní dictionary /LABELS - var.names, positions, var.labels /NAMES - var.names (/INDEX - var. names, position) /MACROS - definovaná makra Str. 6 3
Logické operátory a funkce: EQ nebo = equal to NE nebo <> not equal to LT nebo < less than LE nebo <= less than or equal to GT nebo > greater than GE nebo >= greater than or equal to AND, OR THRU, HI = higher, LO = lower RECODE (lo thru 0 = sysmis) (1 thru 3 = 1) (4 thru hi = 2). ABS (arg) absolutní hodnota z argumentu RND (arg) zaokrouhlení TRUNC (arg) truncate - umaže desetinná místa LN (arg), LG10 (arg) logaritmy MIN (arg list), MAX (arg list), SUM (arg list), MEAN (arg list), SD (arg list), VARIANCE (arg list), Str. 7 Základní transformace proměnných COMPUTE - založí novou numerickou proměnnou. COMPUTE AGE = 100 - S01. (*věk=100-rok narození.) RECODE - překódování proměnné RECODE AGE (18 thru 29=1)(30 thru 44=2)(45 thru 59=3)(60 thru hi=4)(else=sysmis). IF - jestliže if (MARITAL ne 1)SPWRKST=0.(*jestliže rodinný status je < > 1 svobodný, nemá partnera ekonomický status partnera = 0 not applicable ). MISSING VALUES - chybějící hodnoty mis val SPWRKST (0). EXECUTE - spouštění příkazů. COMPUTE V1=1. EXE. (*založí se proměnná V1 a naplní se jedničkami.) Str. 8 4
Označení proměnných FORMAT - nastvení formátu numerických proměnných FORMAT AGE (F2.0). RENAME VARIABLES - přejmenování proměnných RENAME VARIABLES (AGE EDUC=VEK VZDEL). VARIABLE LABELS - přidělí label (popisný název) VARIABLE LABELS VEK Respondent: vek /VZDEL Respondent: vzdelani. VALUE LABELS - přidělí označení hodnot proměnné VAL LAB VZDEL 1 zakladni 2 vyucen 3 maturita 4 VS. VAL LAB V1 TO V10 1 ano 2 ne. ADD VALUE LABELS - přidá nebo změní labely ADD VAL LAB VZDEL 3 stredni. Str. 9 Ukládání souboru dat: SAVE - uloží data ve formátu SPSS - datový soubor možno uspořádat. Specifikace SAVE: /RENAME - přejmenování proměnných SAVE OUTFILE= C:\eko.sav /RENAME (AGE=VEK) (SEX=POHL). /DROP - vypuštění proměnných /KEEP - uložení pouze uvedených proměnných, a to v uvedeném pořadí. SAVE TRANSLATE - uložení ve formátu pro SPSS/PC. SAVE TRANSLATE OUTFILE= C:\eko.sys /TYPE=PC. Str. 10 5
Vypuštění části souboru z analýzy select if (arg). SELECT IF (sex EQ male ). vybere pouze muže, ostatní data ze souboru definitivně vymaže kombinace příkazů temporary a select if vymaže data pouze pro bezprostředně následující analýzu. TEMPORARY. SELECT IF (sex EQ male ). FRE /VAR=educ. spočte frekvence vzdělání pouze pro muže filter by prom. filter off. - dočasná selekce dat. COMPUTE filter=(sex EQ male ). VALUE LABELS filter 0'Not Selected' 1'Selected'. FILTER BY filter.... FILTER OFF. Str. 11 Ukončené posloupnosti více příkazů DO IF, DO REPEAT, LOOP: oddělené úseky programu, které musí být ukončeny příslušným příkazem, END IF, END REPEAT, END LOOP uvnitř úseku mohou být pouze příkazy pro transformace, nikoliv statistické analýzy DO IF - END IF. DO IF - END IF - podmíněné přiřazení: blok příkazů mezi DO IF a END IF se provede pouze za podmínky definované v příkazu DO IF. Příklad: datový soubor spojený ze dvou výzkumů v roce 1991 a 1995, kategorizace vzdělání je v jednotlivých letech rozdílná, ale je uvedena ve stejné proměnné VZDEL. DO IF (rok = 1991). RECODE VZDEL (1=1)(2 3=2)(4=3)(5=4) (else=99). END IF. Str. 12 6
DO REPEAT - END REPEAT DO REPEAT - END REPEAT - uzavřený cyklus, který opakuje stejnou operaci na více proměnných: blok příkazů mezi DO REPEAT a END REPEAT se provede opakovaně na všech proměnných definovaných v příkazu DO REPEAT. Příklad 1: zjednodušení při definování baterie proměnných. DO REPEAT v = vzdel1 to vzdel4. compute v = 0. END REPEAT. Str. 13 DO REPEAT - END REPEAT Příklad 2: rozkódování tabulky v dotazníku. * v datech SOCOWRK.SAV zkonstruujte promennou s informaci o nezamestnanosti hlavy domacnosti: compute HHUNEMP=0. var lab HHUNEMP 'Head of household unemployed in last 5 yrs?'. val lab HHUNEMP 1 'yes' 2 'no'. * pomocne promenne: * numb = poradove cislo respondenta v otazce Q1 * unemp = udaj o nezamestnanosti. DO REPEAT numb = number1 TO number6 / unemp = unemp1 TO unemp6. IF(numb = 1)HHUNEMP=unemp. END REPEAT. fre var=hhunemp. Příklad 3 samostatně: v datech socowrk.sav zkonstruujte proměnnou věk hlavy domácnosti. Str. 14 7
LOOP - END LOOP VECTOR propojuje proměnné pojmenované jmény se stejným základem nebo hromadně vytváří proměnné se stejným základem jména, lišící se číslicí na konci VECTOR EDUC (5). vytvoří proměnné EDUC1, EDUC2, EDUC3, EDUC4, EDUC5. LOOP - END LOOP je podobně jako DO REPEAT - END REPEAT uzavřený cyklus, který opakuje stejnou operaci vícekrát nebo na na více proměnných, používá se ovšem na proměnných se jmény se stejným základem (obvykle) se proměnné nejprve definují pomocí příkazu VECTOR a pak jsou v příkazu LOOP volány jejich pořadovým číslem proměnné jsou v příkazu LOOP zastoupeny tzv. skrečovou proměnnou (začíná znajkem #), která se neukládá do datového souboru Příklad použití - zpracování otázek typu MULTIPLE RESPONSE Str. 15 8