Data management v SPSS/PSPP Základní transformace dat: Rekódování a vytváření nových proměnných UK FHS Historická sociologie, Řízení a supervize (LS 2012+) AKD I./II./III. a Praktikum elem analýzy dat Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 10/3/2015 (21/4/2014)
UK FHS Historická sociologie, Řízení a supervize (LS 2012, 2013, 2014). Data management v SPSS/PSPP. Základní transformace dat: Rekódování a vytváření nových proměnných. Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 21/4/2014. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Data management v SPSS/PSPP
Základní transformace dat: Rekódování a vytváření
nových proměnných
UK FHSHistorická sociologie, Řízení a supervize
(LS 2012+)AKD I./II./III. a Praktikum elem analýzy dat
Jiří Šafrjiri.safr(AT)seznam.cz
Poslední aktualizace 10/3/2015 (21/4/2014)
2
Úprava dat v Menu SPSS (agregování, filtrování, rekódování, …)
→ příkazy v sekcích hlavního menu Data a Transform (nebo přímé zadání pomocí příkazového řádku v Syntaxu – viz dále)
3
Úpravy dat v Syntaxu: přímé zadání pomocí příkazového řádku
Výhodou je, že sekvenci příkazů můžeme uložit (soubor s koncovkou *.sps) a kdykoliv se k ní vrátit, případně měnit vstupní proměnné. V případě úpravy dat poskytuje kontrolu operací a umožňuje úpravy sdílet.
Syntax lze u každé operace (analýzy či úpravy dat) vygenerovat při zadávání z menu pomocí tlačítka Paste. Podobně lze do syntaxu vkládat jména proměnných.
4
Labelování (popisky) v syntaxuPopisky (labely) jsou mezi uvozovkami " " nebo apostrofech ' '.Popisek k názvu proměnné (label)
Popisky hodnot lze také přidat (původní zůstanou/stejné se přepíší):ADD VALUE LABELS vekkat4 “nad 70”.
Chybějící hodnotyMISSING VALUES
nastavení v SPSS
K jejich identifikaci a případné analýze viz Analýza chybějících hodnot (missing values)
http://metodykv.wz.cz/AKD2_missing2.ppt
6
Chybějící hodnoty - MISSING VALUES
• V SPSS rozlišujeme dva typy chybějících hodnot (systémový):
• systémový → SYSMIS (prázdná datová buňka)
• uživatelsky definovaný → MISSING (k určité hodnotě je přiřazena informace – nepočítat s ní v analýze (zůstává ale v datech a lze je . Toto nastavení lze vypnout/zapnout
7
Existují dva druhy missingů (v SPSS):
1. Systémové = SYSMIS (v datech: „ . “)
Jde o základní formu označení chybějící hodnoty, ale v podstatě zde není žádná informace proč chybí. Nejčastěji záznam v datech nebyl u dané proměnné vůbec proveden, nebo se proměnná daného případu (respondenta) netýká (např. rok rozvodu u svobodných/ženatých).
Máme-li např. z dotazníku k dispozici podrobnější informaci (například „Netýká se“, „Odmítl odpovědět“, „Neví“) můžeme mít navíc také
2. Uživatelsky definované = MISSING VALUESV datech je označujeme hodnotami „mimo“ rozsah standardních kategorií, např. : „9“ nebo „99“ a často je i labelujeme, např. 8 = Odmítl odpovědět, 9 = Neví.
Tyto hodnoty pak nebudou obsaženy v základní části analýz (pokud jejich označení jako MISSING VALUES nevypneme, což můžeme podle potřeby využívat).
8
Nastavení chybějících hodnot
MISSING VALUES Var1 případně další Var2 Var3 …(0 8 9).
→ označit lze až tři hodnoty, které budou vyloučeny ze základu analýz.
nebo: (LOWEST THRU 5). či (8 THRU HIGHEST).
lze i kombinaci intervalu a jedné hodnoty:
(5 8 thru Highest).Lze zadat i přes Data editor,
ale syntax zaručuje kontrolu a dokumentaci manipulace s daty
9
Identifikace a označení chybějících hodnot.Příklad „věk studentů VŠ“
FREQUENCIES vek.12 a 92 jsou z hlediska věku posluchačů kurzu AKD „nesmyslné“ hodnoty, proto je označíme jako chybějící. Pomocí příkazu v syntaxu:
MISSING VALUES vek (12 92).Nebo v data editoru (klikem myši přes menu)
Zároveň vidíme, že v datech zatím žádné uživatelské missingy nebyly definovány (jsou zde pouze 2 případy systémových SYSMIS).
Poznámka: Po zadání MV, se zdánlivě nic nestane, pouze jsme v datech označili MV, proto je dobré vytisknout si opět tabulku třídění 1.stupně:
FREQUENCIES vek.
10
Označení rozsahu MV: od zvolené hodnoty do Maxima nebo od hodnoty do Minima + lze přidat ještě jedna hodnota.
• od minima do zvolené hodnoty.MISSING VALUES vek (LOWEST THRU 20).
• od zvolené hodnoty do maxima.MISSING VALUES vek (50 THRU HIGHEST).
• a přidat můžeme i jednu hodnotu navíc.MISSING VALUES vek (50 THRU HIGHEST 12).
Identifikace a označení chybějících hodnot.Příklad „věk studentů VŠ“, pokračování
11
„Vypínání“ a „zapínání“ Missingů v Syntaxu
• Missingy "vypneme" - odznačíme pokud závorka bude prázdná.
MISSING VALUES vek ( ).
FREQUENCIES vek.Nyní budou všechny hodnoty součástí analýzy (pochopitelně neplatí pro systémové missingy ty zůstávají vyloučeny)
a opět můžeme „zapnout“.
MISSING VALUES vek (12 92).
FREQUENCIES vek.
12
Poznámky k Missing Values• Pokud se u dané proměnné v datech zadané chybějící hodnoty ve
skutečnosti nevyskytují, pak se v tabulce tř. 1.stupně (Frequencies) v sekci Missing neobjeví (zobrazuje se jen skutečný výskyt, hodnota je nicméně stále jako Missing nastavena). Zobrazit informaci o nastavení missing values lze pomocí DISPLAY.
DISPLAY DICTIONARY /VARIABLES = vek.
• Pozor také na situaci, kdy se v tabulce Frequencies objeví určitá hodnota několikrát, např.: 1 1 1 je ve skutečnosti, např. 0,9 a 0,6 a 1 (0,9 a 0,6 se zaokrouhlí na 1, ale zobrazí se při formátu bez desetinných míst jako unikátní hodnota 1) → změníme formát zobrazení FORMATS vek (F8.1).
13
Uživatelsky definované chybějící hodnoty → MISSING VALUES: příklady
• Pomocí MISSING VALUES → můžeme uživatelsky definovat max. 3 hodnoty nebo rozpětí.MISSING VALUES Var1 (9).MISSING VALUES Var1 (8 9).MISSING VALUES Var1 (5 THRU 10).MISSING VALUES Var1 (LOWEST THRU 1).MISSING VALUES Var1 (8 THRU HIGHEST).
Můžeme jednu diskrétní hodnotu (zde 16) a rozsahMISSING VALUES vek (16, 60 THRU HIGHEST).
Vypnutí uživatelských missingů → prázdná závorka.MISSING VALUES vek ( ).
14
Transformace dat• Operace, kdy z existujících proměnných
vznikají nové nebo se tyto proměnné systematicky podle zadaného předpisu mění.
• Již v přípravné fázi výzkumu často počítáme s tím, že z primárních dat se budou vytvářet nové proměnné.
• SPSS má základní funkce: COMPUTE, RECODE, IF, RANK, AUTORECODE
Zdroj: [Bártová, Řehák 1993: 51]
Rekódování hodnot
pomocí příkazu
RECODE
16
RECODE
• Příkazem RECODE měníme hodnoty proměnné podle určitého předpisu.
proměnných (vytváření intervalů)– změna pořadí kategorií (např. otočení škály)– vyloučení některých kategorií z analýz
17
RECODE – principy rekódování• Hodnoty jsou v závorkách: • původní hodnota(y) = nová hodnota(y)• Nezmíněné/vynechané hodnoty budou automaticky
systémové missingy (SISMIS).• POZOR: hodnoty, které byly definovány jako uživatelsky
vynechané (příkazem MISSING VALUES) nebudou automaticky missingy, ale platná hodnota. Na to pozor při překopírování všeho ostatního: (ELSE = COPY)). Proto je musíme poté znovu nově označit nebo v rekódu označit jako SYSMIS.
• Hodnoty se rekódují postupně z leva doprava. Proto lze: (1 THRU 3 =1) (3 THRU 5 =2) a „zbylé hodnoty“ (ELSE = hodnota) musí být až na konci.
Rekódování do nové proměnné → INTO jméno nové proměnnéTa bývá nová, ale lze i do již existující, pak u případů, kde se
hodnoty neměnily zůstanou původní hodnoty.To někdy s výhodou používáme, ale pozor může to být nebezpečné, pokud se
např. rekód nepovede správně napoprvé a my novu proměnou před opravením příkazu nesmažeme (mohou zůstat špatně vytvořené hodnoty).
• Rekódovat lze více proměnných najednou (podle stejného klíče).
18
RECODE: Input/output keywords
LO nebo LOWEST → (od) nejnižší hodnoty
HI nebo HIGHEST → (do) nejvyšší hodnoty
THRU → až do (od hodnoty do hodnoty)
MISSING → označuje uživatelské i systémové chybějící hodnoty. Pozor, funguje pouze pro původní hodnoty (tj. pouze pro načtení).
SYSMIS → načte/vytvoří systémový missing (funguje jak pro původní tak pro nové hodnoty)
ELSE → platí pro ostatní (neuvedené hodnoty)
COPY → zkopíruje původní hodnoty
19
Princip RECODE – základní zadání• RECODE původní proměnná (původní
hodnota/y = nová hodnota/y) (původní hodnota/y = nová hodnota/y) INTO nová proměnná.(pokud vynecháme INTO NováProměnná provede se rekód v původní proměnné, ale POZOR pak původní hodnoty ztratíme a je také třeba změnit Labely hodnot)
RECODE VAR1 (1 2 =1) (3 4 =2) INTO VAR1r. → sloučení hodnot do nové proměnné.
RECODE VAR1 (1=3) (2=2) (3=1).→ otočení škály, přepíše hodnoty v původní proměnné.
RECODE VAR1 (1=3) (2=2) (3=1) (ELSE=COPY) INTO VAR1r. /* zbytek hodnot se zkopíruje.
RECODE VAR1 TO VAR3 (1=3) (2=2) (3=1) INTO VAR1r VAR2r VAR3r. /*případné další hodnoty → SYSMIS.
RECODE VAR1 (0.5, 1, 3, 7 =1) (2, 2.5, 4, 5 =2) (6 =3). * Pozor zde bez INTO, tzn. přepíší se hodnoty v původní proměnné (a tak ztratíme původní informaci).Čárka odděluje hodnoty (ale nemusíme používat, stačí mezera), tečka je desetinnou čárkou.
• RECODE lze také kombinovat s různými podmínkami a smyčkami (např. DO IF).
DO IF vek GE 18. /* Rekód proběhne jen u lidí starších 17-ti let.RECODE VAR1 (1=3) (2=2) (3=1) INTO VAR1r.END IF.
21
Rekódování stringových proměnných • Rekódovat lze i „slovní“ řetězcové - string proměnné.• Hodnoty (znaky/slova) jsou v uvozovkách („CR“)
nebo ('CR').• Prázdná hodnota, tj. nic (blank) je významově znak.
• Pokud do nové proměnné, tak ta musí být předem vytvořena a definována jako stringová (a mít správně nastavenou délku řetězce) → STRING jméno proměnné (A2).
• Rekódem lze převést stringovou proměnnou na numerickou.RECODE pohlavi$ ('Z' = 1) ('M' = 2) INTO pohlavi.
22
• CONVERT převede hodnoty čísel ze stringového formátu (zaznamenané ale jako písmena) na číselný.
• Missingy v stringových proměnných nejsou vidět (prázdná buňka je totiž „nic“ tj. znak), ale po rekódu na numerickou, pokud neurčíme jinak, budou v SYSMIS.
AUTORECODE• AUTORECODE převádí hodnoty stringových a
numerických proměnných na po sobě jdoucí celá čísla (pořadí) do nové proměnné.
• Výhodné pro jednoduché vytvoření numerické proměnné ze stringové.
• Použití nalezne také při převodu spojitých nepřetržitých hodnot s desetinnými čísly, např. faktorové skóre, na celá čísla, což některé procedury vyžadují a šetří se tím výpočtový čas.
• Value labels původní proměnné nebo u stringových proměnných jejich hodnoty jsou automaticky použity jako value labels v nové proměnné.
24
AUTORECODE: příklad převodu stringového na numerický formát
• AUTORECODE kraj$ /INTO kraj /PRINT.Prázdná buňka ve stringovém znaku má hodnotu „“ (tj. není automaticky SYSMIS).
25
Visual Binding
• Visual Binding – nástroj pro snadné rekódování (pro spojité-kardinální znaky např. dle percentilů).
• Dostupné bohužel pouze v některých vyšších verzích SPSS.
Vytváření nových proměnných
pomocí příkazů
COMPUTE, COUNT
27
COMPUTE
• Příkaz COMPUTE vytváří novou proměnnou (v numerickém formátu), pomocí matematických, statistických, logických aj. funkcí a operátorů, případně takto modifikuje hodnoty existující numerické i stringové proměnné.
• Princip: COMPUTE nová proměnná = původní proměnná/é (nebo konstanta většinou
doplněno o nějakou funkci či operaci).
28
COMPUTE – základní zadáníPříklady aritmetických funkcí
COMPUTE Var3 = TRUNC(Var1 / Var2).→ hodnota na celá čísla z podílu Var1 a Var2
COMPUTE Var3 = SQRT(Var1 * Var2).→ odmocnina z násobku Var1 a Var2
30
Příklady COMPUTE: statistické funkce
COMPUTE Var3 = SUM(Var1, Var2).→ součet Var1 a Var2
COMPUTE Var4 = MIN(Var1, Var2, Var3).→ nejnižší hodnota z Var1, Var2, Var3
COMPUTE Var4 = MAX(Var1, Var2, Var3).→ nejvyšší hodnota z Var1, Var2, Var3
COMPUTE Var4 = MEAN(Var1, Var2, Var3).→ průměrná hodnota z Var1, Var2, Var3
31
Příklady COMPUTE
COMPUTE Var5 = RND(MEAN(var1 TO var4)). → zaokrouhlený průměr z proměnných 1 až 4.
COMPUTE Var2 = Var1.→ zkopíruje hodnoty proměnné Var1 do Var2.
COMPUTE Var1 = 1.→ konstanta 1 (u všech případů bude hodnota 1).
COMPUTE: součty apod. proměnných
řešení pro missingy
Pokud provedeme prostý součet (rozdíl apod.) COMPUTE var3 = (var1+var2),
pak se sečtou jen případy se všemi platnými hodnotami (příkaz nesečte ty případy, kde je
alespoň jeden missing).
33
COMPUTE – statistické funkce: podmíněnost počtem validních hodnot
COMPUTE PrijDomc = prijOtec + prijMatk + prijOst. → součet příjmů za domácnost → novou proměnnou bude mít jen ten případ, kde budou uvedeny všechny tři příjmy, u ostatních, kde je min.1x syst./uživatel. missing bude SISMIS.
• Funkce SUM narozdíl od sčítání umožňuje specifikovat, u kolika proměnných může být missing a přesto se daný řádek-případ sečte/zpracuje (platí i pro funkce MEAN, MIN, MAX atd.).
COMPUTE PrijDomc = SUM(prijOtec, prijMatk, prijOst).→ u těchto statistických funkcí je defaultně 1, tj. stačí validní hodnota u jedné z proměnných a na ní bude spočítán výsledek pro novou proměnou (tj. zde min. jeden příjem s validní hodnotou).
COMPUTE PrijDomc = SUM.2(prijOtec, prijMatk, prijOst). →"tečka" a číslo za SUM říká, že musí být min. 2 proměnné
validní (zde ze 3), aby vznikla hodnota na nové proměnné (tj. zde aby byly uvedeny alespoň 2 ze 3 příjmů).
• U postupu se sčítáním/odčítáním pomocí +/- (aj. operací) musí mít všechny proměnné platné hodnoty, jinak je u daného případu v nové proměnné chybějící hodnota.
34
COMPUTE: řešení pro missingy pomocí VALUE
• Příklad: Celkový příjem jako součet hlavního a vedlejšího příjmu (který ale každý nemá a na hlavní ne všichni odpoví).COMPUTE PrijemCelk = VALUE(PrijHlav) + VALUE(PrijVedl).
• Indikace missingu (systémový i uživatelský) v nové binární proměnné.IF (SYSMIS Var1) Var1Miss =1.
35
Další využití COMPUTE• příkaz COMPUTE lze kombinovat s
různými podmínkami a smyčkami. Např.:DO IF EkAktiv = 1.COMPUTE MzdaRok = Prijem * 12.ELSE.COMPUTE MzdaRok = 0.END IF.
→ Proměnná mzda za rok se spočítá jako 12-ti násobek měsíčního příjmu jen u ekonomicky aktivních (ostatní mají hodnotu 0).
• A příkaz COMPUTE toho umí mnohem více …
36
Přehled funkcí COMPUTE• Aritmetické: např. ABS, RND, TRUNC, MOD, SQRT, EXP, LG10,
LN • Statistické: SUM, MEAN, SD, VAR, CFVAR, MIN, MAX• Stringové: např. ANY, CONCAT, INDEX, LAG,LPAD, LTRIM,
NUMBER• Datum a čas: např. YRMODA, CTIME.DAYS, DATE.YMD• Náhodné proměnné a distribuční funkce: UNIFORM,
NORMAL, CDFNORM, PROBIT• Chybějící hodnoty - Missing Value: VALUE, MISSING,
SYSMIS, NMISS, NVALID• Logické: RANGE, ANY• Cross-case (převod hodnot z předchozího případu): LAG• Value Label (kopie labelů do stringové proměnné): VALUELABELPodtrženy jsou frekventovaně používané funkce.
37
Základní operátory a funkce příkazů COMPUTE a IF
Zdroj: [Bártová, Řehák 1993: 51]
Aritmetické operátory+ sčítání - odečítání * násobení / dělení ** mocnina ( ) závorkyRelační operátoryEQ rovná se NE nerovná se LT menší než < LE menší nebo
rovno <= GT větší než > GE větší nebo rovno >=Logické operátoryAND obě relace musí být pravda OR jedna relace může být pravda NOT obrací výsledek nepravda/nepravda následujícího výrazuNumerické funkceABS absolutní hodnota TRUNC celá část číslaRND zaokrouhlení na celé číslo MOD10 zbytek podělení 10SQRT druhá odmocnina EXP exponenciální funkceLG10 logaritmus při základu 10 LN přirozený logaritmusFunkce pro vynechané hodnotyVALUE uživatelsky vynechávané hodnoty přebírá do výpočtuSYSMIS má hodnotu 1, je-li argument systémový missingMISSING = 1, je-li argument uživat. nebo systémový missing
38
Funkce převádějí hodnoty z jiných případůLAG přebírá hodnotu předchozího případu u dané
proměnnéFunkce generování náhodných číselUNIFORM generuje pseudonáhodné číslo mezi
nulou a danou hodnotouNORMAL generuje pseudonáhodné číslo z
normálního rozložení o průměru 0 a standardní odchylce rovné argumentu
Funkce převádějící datum na pořadové čísloYRMODA vrací pořadové číslo zadaného dne
(první den podle Gregoriánského kalendáře, tj. YRMODA (1582, 10, 15)=1).
Vybrané další operátory a funkce příkazů COMPUTE a IF
39
COUNT• Počet výskytů určité hodnoty v daném seznamu
proměnných → načítání („bodování“) za výskyt vymezených hodnot do nové proměnné.
• Funguje i pro stringové proměnné.
• Princip: COUNT nová proměnná = původní proměnná/é ( její hodnoty ).
• Počáteční hodnota nové proměnné je 0.• Použít můžeme klíčová slova: LOWEST,
HIGHEST, THRU, SISMIS, MISSING
40
COUNT: příkladyCOUNT Var2 = Var1 (2).→ za výskyt hodnoty 2 u Var1 bude ve Var2 „1“ (v podstatě rekód).