220 likes | 381 Views
Semináře ke kurzu Analytické metody výzkumu Jindřich Krejčí. Transformace dat: používání syntaxe v SPSS. Základy psaní syntaxe, základní příkazy (opakování) Formáty dat, algoritmy a funkce Operace s textovými proměnnými Uzavřené posloupnosti příkazů, cykly a složitější konstrukce
E N D
Semináře ke kurzu Analytické metody výzkumu Jindřich Krejčí Transformace dat:používání syntaxe v SPSS
Základy psaní syntaxe, základní příkazy (opakování) • Formáty dat, algoritmy a funkce • Operace s textovými proměnnými • Uzavřené posloupnosti příkazů, cykly a složitější konstrukce • Znalost syntaxe bude ověřena v testu !
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, modifikovat pro různé úlohy nebo předat jiným uživatelům • možnosti editace příkazů • efektivní řešení podobných nebo opakujících se transformací • uspořádání práce, úspora prostoru (netřeba nahrávat rozpracované datové soubory) • nutnost: • některé úlohy nelze realizovat pomocí oken, např. pokud vyžadují posloupnost více příkazů • specifická zadání analýz
help - slovník příkazů spustit označené příkazy (od tečky do tečky) aktivní okno dat syntaxové okno SPSS 20.0
syntaxové okno cca do verze SPSS 15: nápověda spustit syntax seznam proměnných undo poslední použité příkazy v menu
Základy psaní syntaxe • tlačítko PASTE v oknech vloží odpovídající syntax do syntaxového okna • struktura příkazů je dostupná v nápovědě SPSS • syntax lze ukládat v prostém textovém formátu a lze ho kopírovat, => lze editovat ve Wordu avyužít editační funkce: kopírování bloků, vyhledávání, vícenásobná záměna, ... • soubory se syntaxí se vyplatí ukládatlze je znovu použít, upravovat/opravovat a slouží jako dokumentace práce • není třeba ukládat upravená data, ale pouze syntax
příkaz začíná klíčovým slovem a končí vždy tečkou • příkazy lze (obvykle)zkrátit na tři písmenavariable labels AGE „Vek respondenta“. odpovídá:var lab AGE „Vek respondenta“. • a další zjednodušení - např.: • FREQUENCIES VARIABLES=q1 /ORDER= ANALYSIS.odpovídá: fre q1. • CROSSTABS /TABLES=q1 BY q2a /FORMAT= AVALUE TABLES /CELLS= COUNT /COUNT ROUND CELL .odpovídá: cro tab=q1 by q2a. • řazení příkazů stejného druhu pomocí lomítka, např.:var lab q1 "Otazka 1" / q2 "Otazka 2". • předem definované proměnné lze vkládat přes menu Utilities-Variables-PASTE • popis pomocí komentářů(komentář začíná hvězdičkou, nezapomínat na tečku na konci) • delší syntaxe pro přehlednost upravujeme graficky (nové řádky, odsazení, vynechané řádky...)
Otevření datového souboru • příkaz GET • GET SAS, GET CAPTURE, ... • KEEP, DROP, RENAME, MAP • příkazy NEW FILE a IMPORT (*.por) • příkaz DATA LIST (importdat, ascii, fixed/free organisation, No. of records, summary table...)DATA LIST FILE = ‘\\data\data.dat’ /ID 1-3 AGE 4-5 SEX 6 (A) Q1 to Q5 8-12. • BEGIN DATA - END DATA. DATA LIST /ID 1-3 AGE 5-6 SEX 8 (A) Q1 to Q510-14.BEGIN DATA001 25 m 12212002 48 f 23112003 32 f 31112...END DATA. • MATRIX DATA - obd. DATA LIST
Ukládání souboru dat • SAVE [OUTFILE..] - uloží data ve form. SPSS, možno uspořádat • /RENAME - přejmenování proměnnýchSAVE 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í • EXPORT [OUTFILE...], WRITE [OUTFILE...], SAVE TRANSLATE... Popis souboru, smazání datového souboru • FILE LABEL • DOCUMENT - DROP DOCUMENTS • ERASE
Získání informací o struktuře souboru • deskriptivní statistiky: frekvence, průměry, odchylky, minima, maxima, čtvercové tabulky • příkaz DISPLAY - slovník proměnných • /DICTIONARY - kompletní „dictionary“ • /LABELS - var.names, positions, var.labels • /NAMES - var.names (/INDEX - var. names, position) • /MACROS - definovaná makra • SYSFILE INFO - informace o souboru včetně • CODEBOOK - informace o souboru, obd. DISPLAY, od SPSS 17.0)
Vymazání / 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.
Spojování souborů, rozdělení do skupin, agregace • ADD FILES - přidá případy • MATCH FILES - přidá proměnné • SORT CASES - seřadí podle určené proměnné(-ých) • SPLIT FILE - porovnávání skupin/výstupy po skupinách při analýze • AGGREGATE - agreguje případy do skupin a vytvoří nový soubor
Proměnné • 8 míst; první písmeno; na konci ne tečka nebo podtržítko; ne jako příkazy; ne #, $ na první pozici (scratch/system variables) • založit novou, přejmenovat • DATA LIST, MATRIX DATA (vytvoří datový soubor nebo načte data) • NUMERIC, STRING: NUMERIC V1 V2 (F4.0). STRING V3 (A2). • COMPUTE, COUNT, RECODE ... INTO • RENAME VARIABLES: RENAME VARIABLES (AGE EDUC=VEK VZDEL). • TO: compute V1 TO V100=0; recode V1 to V100 (1=2) • ._ #$@: pomocné znaky, ne jako první • FORMAT - nastvení formátu numerických proměnnýchFORMAT AGE (F2.0). • 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í labelyADD VAL LAB VZDEL 3 ‘stredni’. • APPLY DICTIONARY - kopírování celého slovníku do dalších souborů
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žeif (MARITAL ne 1)SPWRKST=0.(*jestliže ‘rodinný status‘ je < > 1 ‘ svobodný, nemá partnera’ ‚ ‘ ekonomický status partnera‘ = 0 ‘ not applicable’). • EXECUTE - reálné provedení příkazů.COMPUTE V1=1. EXE. (*založí se proměnná V1 a naplní se jedničkami.)
Chybějící hodnoty při transformacích • sysmis - systémová chybějící hodnota (tečka, čárka) • hodnoty označené jako chybějící • MISSING VALUES - chybějící hodnotymis val SPWRKST (0). • při operacích: • u numerických operací, když v jedné proměnné v transformaci chybí hodnota, také výsledkem je obvykle chybějící hodnota • záleží na povaze, např. a=1, b=sysmis, MIN(a,b)=1 • u některých funkcí (SUM, MEAN, MIN, MAX, SD, VARIANCE...) lze určit max. dovolený počet hodnot pomocí .nCOMPUTE FACTOR = SUM.2 (Q1 to Q5). • analýzy: LISTWISE, PAIRWISE
Aritmetické a 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 = lowerRECODE (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), • LAG (arg, n) hodnota před n-případů
Ukončené posloupnosti více příkazů DO IF - END IF. • 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 - 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.
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.
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.
LOOP - END LOOP • uzavřený cyklus (obd. DO REPEAT - END REPEAT), který opakuje stejnou operaci vícekrát nebo na více proměnných • používá se na proměnných se jmény se stejným základem, které volá pořadovým číslem • v příkazu LOOP jsou zastoupeny tzv. „skrečovou proměnnou“ (začíná # a neukládá se do datového souboru) • (zpravidla) se nejprve definují pomocí příkazu VECTOR • VECTOR propojuje nebo hromadně vytváří proměnné se stejným základem jména, lišící se číslicí na konci, např. VECTOR EDUC (5). vytvoří proměnné EDUC1, EDUC2, EDUC3, EDUC4, EDUC5. • cykly LOOP - END LOOP, lze vzájemně vnořovat, nesmějí se prolínat • lze upřesnit splněním podmínky, předčasně ukončit při splnění podmínky nebo příkazem BREAK uvnitř DO IF - END IF • příklad použití - zpracování otázek typu „MULTIPLE RESPONSE“
Př.: Chybějící hodnoty nahrazeny průměremCOMPUTE prumer=MEAN(v1 to v8).VECTOR v=v1 TO v8.LOOP #I=1 TO 8.IF (MISSING(V(#I)))V(#I)=prumer.END LOOP.EXECUTE. • Př.: LOOP, jestliže X nenabývá chybějící hodnotyVECTOR v=v1 TO v8.LOOP #I=1 TO 8 IF NOT MISSING(X). COMPUTE V(#I)=V(#I)+X.END LOOP.EXECUTE. • Př.: LOOP, dokud Y nepřekročí hodnotu 100.VECTOR v=v1 TO v8. LOOP #I=1 TO 8.COMPUTE V(#I)=V(#I)+X.END LOOP IF (X GE 100).execute.
Operace s textovými proměnnými • STRING name (A6). COMPUTE name = 'Pavel'.založí textovou proměnnou o 6 znacích a přiřadí hodnotu Pavel • funkce: • LOWER(arg), UPCASE(arg), RTRIM(a1,a2), LTRIM(a1,a2), SUBSTR(a1,a2,a3), CONCAT(arg list), • INDEX(a1,a2,a3), LENGTH(arg), MIN(arg), MAX(arg), RINDEX(a1,a2,a3) • konverze: NUMBER (arg, format), STRING (arg, format), RECODE (CONVERT)