460 likes | 757 Views
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.
E N D
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
Ú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)
Ú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.
Labelování (popisky) v syntaxu Popisky (labely) jsou mezi uvozovkami " " nebo apostrofech ' '. Popisek k názvu proměnné (label) VARIABLE LABEL vekkat "Věkové kategorie". Popisky názvů hodnot (label) VALUE LABEL vekkat 1 "do 35let" 2 "36-55" 3 "nad 56". • Popisky nemusí být u všech hodnot (např. u ordinálních znaků stačí krajní hodnoty). • Hodnoty lze labelovat pro vícero proměnných se stejnými kategoriemi najednou. VALUE LABEL Spok1 Spok2 1 "Nespokojen" 2 "Spokojen". Popisky hodnot lze také přidat (původní zůstanou/stejné se přepíší): ADD VALUE LABELS vekkat 4 “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
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
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 VALUES V 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).
Nastavení chybějících hodnot MISSING VALUESVar1pří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
Identifikace a označení chybějících hodnot.Příklad „věk studentů VŠ“ 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) FREQUENCIESvek. 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ě:FREQUENCIESvek. 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).
Identifikace a označení chybějících hodnot.Příklad „věk studentů VŠ“, pokračování 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 HIGHEST12).
„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.
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).
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 THRUHIGHEST). Můžeme jednu diskrétní hodnotu (zde 16) a rozsah MISSING VALUES vek (16, 60 THRU HIGHEST). Vypnutí uživatelských missingů → prázdná závorka. MISSING VALUES vek ( ).
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
RECODE • Příkazem RECODE měníme hodnoty proměnné podle určitého předpisu. Nejčastější použití: • slučování hodnot • kategorizování číselných–kardinálních 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
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é → INTOjmé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).
RECODE: Input/output keywords LOneboLOWEST → (od) nejnižší hodnoty HIneboHIGHEST → (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
Princip RECODE – základní zadání • RECODEpů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) INTOVAR1r. → 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 - příklady RECODE vek (MISSING = 999) (LOWESTTHRU 29 =1) (29 THRU 55 = 2) (55 THRUHIGHEST = 3) INTOvek3k. 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.
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. RECODE VAR1$ ('A','B','C' ='prvni') ('D','E','F' ='druhy') (' '='nic') (ELSE=' '). • Pokud do nové proměnné, takta musí být předem vytvořena a definována jako stringová(a mít správně nastavenou délku řetězce)→ STRINGjméno proměnné (A2). STRING stat2 (A2). RECODE stat1 ('CR' = 'Česká republika') (ELSE = COPY) INTO stat2. • Rekódem lze převést stringovou proměnnou na numerickou. RECODE pohlavi$ ('Z' = 1) ('M' = 2) INTO pohlavi.
Rekódování stringových proměnných • CONVERTpř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. RECODE VAR1$ (' ' = 9) (CONVERT) ('-' = 98) INTO VAR1.
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é.
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).
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
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: COMPUTEnová proměnná = původní proměnná/é (nebo konstanta většinou doplněno o nějakou funkci či operaci).
COMPUTE – základní zadáníPříklady aritmetických funkcí COMPUTE Var3 = Var1 + Var2. → součet Var1 a Var2 COMPUTE Var2 = 30 – Var1. → od Var1 odečte konstantu 25 COMPUTE Var3 = (Var1 / Var2) * 100. → procento Var1 z Var2
Příklady COMPUTE: aritmetické funkce COMPUTE Var3 = ABS(Var1 – Var2). → absolutní hodnota rozdílu Var1 a Var2 COMPUTE Var2 = RND((Var1 / Var2)*100). → zaokrouhlené procento Var1 z Var2 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
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
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 – 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. • FunkceSUM 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, MAXatd.). 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.
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 …
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 • Konverze stringového/numerického formátu: STRING, 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é): VALUELABEL Podtrženy jsou frekventovaně používané funkce.
Základní operátory a funkce příkazů COMPUTE a IF Aritmetické operátory + sčítání - odečítání *násobení / dělení ** mocnina ( ) závorky Relační operátory EQ rovná se NEnerovná se LTmenší než < LEmenší nebo rovno <= GTvětší než > GEvětší nebo rovno >= Logické operátory AND 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ýrazu Numerické funkce ABSabsolutní hodnota TRUNC celá část čísla RNDzaokrouhlení na celé číslo MOD10zbytek podělení 10 SQRT druhá odmocnina EXP exponenciální funkce LG10 logaritmus při základu 10 LN přirozený logaritmus Funkce pro vynechané hodnoty VALUEuživatelsky vynechávané hodnoty přebírá do výpočtu SYSMIS má hodnotu 1, je-li argument systémový missing MISSING= 1, je-li argument uživat. nebo systémový missing Zdroj: [Bártová, Řehák 1993: 51]
Vybrané další operátory a funkce příkazů COMPUTE a IF Funkce převádějí hodnoty z jiných případů LAGpřebírá hodnotu předchozího případu u dané proměnné Funkce generování náhodných čísel UNIFORMgeneruje pseudonáhodné číslo mezi nulou a danou hodnotou NORMALgeneruje 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é číslo YRMODA vrací pořadové číslo zadaného dne (první den podle Gregoriánského kalendáře, tj. YRMODA (1582, 10, 15)=1).
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: COUNTnová 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
COUNT: příklady COUNT Var2 = Var1 (2). → za výskyt hodnoty 2 u Var1 bude ve Var2 „1“ (v podstatě rekód). COUNT Var4 = Var1 Var2 Var3 (1, 4, 7). COUNT PocDeti = Dite1vek, Dite2vek, Dite3vek (LOW THRU HIGH). COUNT PobPraha = Pobyt1, Pobyt2, Pobyt3 („Praha“). → počet pobytů v Praze ze stringových proměnných. COUNT Var6 = Var1 TO Var5 (SYSMIS). → počet syst. missingů u proměnných Var1 až Var5 (SYSMIS nebo MISSING – bere jak SYSMIS tak i uživatelské missingy)
Užitečné drobnosti v SPSS (zobrazení, nastavení, …)
DISPLAY DICTIONARY DISPLAY DICTIONARY. *vypíše info o proměnných a jejich hodnotách, formátu, missings atd.→ codebook
Jak vypnout možnost mít otevřeno více datových souborů v SPSS • Suppressing Multiple Datasets • V menu: Edit → Options... • Na kartě General zaškrtněte Open only one dataset at a time. Více k ovládání DATASETů v presentaciData management v SPSS/PSPP (2) http://metodykv.wz.cz/SPSS_navod2_datamanag.ppt Nebo v syntaxu: SET Unicode=No CCC='-,,,' CCE='-,,,' FUZZBITS=6 OLang=English RNG=MC CCB='-,,,' Epoch=Automatic Small=0 CCD='-,,,' Format=F8.0 CCA='-,,,'.
Nastavení outputu SPSS Praktická úprava výstupů se zobrazováním hodnot a názvů proměnných (oproti továrnímu nastavení, kde jsou pouze labely)
Nastavení labelů při zobrazování tabulek v outputu SET TNumbers=Both ONumbers=Both CCC='-,,,' CCE='-,,,' CCB='-,,,' OVars=Both CCD='-,,,' TVars=Both CCA='-,,,'. NEW FILE.
Nastavení labelů při zobrazování tabulek v outputu • Bez názvu proměnné a hodnot kategorií(původní tovární nastavení) → vhodné pro finální prezentaci v textu • S názvem proměnné a hodnotami kategorií(naše nastavení)→ vhodnější pro analýzy
Zobrazování labelů/hodnot v outputu lze spustit pomocí skriptu v Syntaxu *NASTAVENI Labelů v OUTPUTU SPSS (funguje od verze 16). *vypnutí hodnot kategorii v tabulkách a grafech, tj. jen labels bez jmen proměných. SET TNumbers=Labels ONumbers=Labels CCC='-,,,' CCE='-,,,' CCB='-,,,' OVars=Labels CCD='-,,,' TVars=Labels CCA='-,,,'. *zapnuti hodnot kategorii v tabulkách a grafech, tj. hodnoty+labels a jména proměnných. SET TNumbers=Both ONumbers=Both CCC='-,,,' CCE='-,,,' CCB='-,,,' OVars=Both CCD='-,,,' TVars=Both CCA='-,,,'. *Zobrazování jména proměnných (místo VAR labelů) v seznamu při vstupu do analýz. SET TNumbers=Both ONumbers=Both CCC='-,,,' CCE='-,,,' CCB='-,,,' OVars=Both CCD='-,,,' TVars=Both CCA='-,,,'.
Reference • Bártová, I. Řehák, J. 1993. Základy SPSS/PC+. Praha: Univerzita Karlova. • SPSS Inc. 1990. SPSS Reference Guide.