Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 25/6/2014 UK FHS Historická sociologie Analýza kvantitativních dat III. – praktické aplikace vícerozměrných statistických metod Restrukturace dat (aneb jak udělat „z osob domácnosti“) Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 25/6/2014
Restrukturace dat (varianta 1): Případy na proměnné (Cases to Variables) Situace: informace o jednom případu máme ve více datových řádcích, typicky informaci o domácnosti (rodině) máme v řádcích pro jednotlivé členy. → Chceme aby v jednom datovém řádku byl jen jeden případ, tj. jedna domácnost. Existují ale i jiné situace – varianty organizace a restrukturace dat (např. obrácená situace). Možnosti řešení v SPSS: Příkaz VECTOR a AGGREGATE Příkaz CASESTOVARS (Sada nových proměnných (pomocí DO IF) a AGGREGATE, to ale pouze pro neměnný počet rolí osob =1, např. osob v domácnosti) Vždy data nejprve seřadit podle proměnné identifikující případy (SORT CASES).
Příklad: Osoby v domácnosti v datech VŠPS ID byt cisdomb pocosb vzOcD5 pohl vek vzd4 zamISCO 1 124771 1 2 1 1 84 2 . 2 124771 1 2 5 1 26 3 74122 3 124772 1 2 1 1 81 1 . 4 124772 1 2 3 1 62 3 33220 6 124774 1 3 1 1 37 2 83439 7 124774 1 3 2 2 28 2 94112 8 124774 1 3 3 2 3 . . 10 124776 1 4 1 1 34 4 14111 11 124776 1 4 2 2 31 3 . 12 124776 1 4 3 2 4 . . 13 124776 1 4 3 2 2 . . 15 177772 1 1 1 2 87 3 . 16 177773 1 1 1 1 69 3 . 20 288771 1 3 1 1 51 4 13212 21 288771 1 3 2 2 53 4 24131 22 288771 1 3 3 2 24 3 23530 23 288772 1 2 1 1 88 3 . 24 288772 1 2 3 1 50 3 44150 25 288773 1 3 1 1 45 3 72320 26 288773 1 3 2 2 41 3 32211 27 288773 1 3 3 1 18 1 . 28 288774 1 2 1 1 69 4 . 29 288774 1 2 2 2 67 4 . 34 343773 1 1 1 2 67 2 . 35 343774 1 1 1 1 72 3 . 36 343775 1 2 1 1 75 2 . 37 343775 1 2 5 2 71 2 . Problém je, že 1 případ (domácnost) je ve více datových řádcích Proto, pokud chceme analyzovat domácnosti, musíme nejprve data restrukturalizovat → 1. případ jeden řádek a za osoby dílčí proměnné, např. vek_HD, vek_Manz, vek_Dite atd.
Restructure Data
Restructure Data Wizard (Cases to Variables): Select Variables Restructuring data selecting data for cases to variables In this step, provide information about how the variables in the current file should be used in the new file. What identifies case groups in the current data? A case group is a group of rows that are related because they measure the same observational unit--for example, an individual or an institution. The wizard needs to know which variables in the current file identify the case groups so that it can consolidate each group into a single row in the new file. Move variables that identify case groups in the current file into the Identifier Variable(s) list. Variables that are used to split the current data file are automatically used to identify case groups. Each time a new combination of identification values is encountered, the wizard will create a new row, so cases in the current file should be sorted by values of the identification variables in the same order that variables are listed in the Identifier Variable(s) list. If the current data file isn't already sorted, you can sort it in the next step. How should the new variable groups be created in the new file? In the original data, a variable appears in a single column. In the new data file, that variable will appear in multiple new columns. Index variables are variables in the current data that the wizard should use to create the new columns. The restructured data will contain one new variable for each unique value in these columns. Move the variables that should be used to form the new variable groups to the Index Variable(s) list. When the wizard presents options, you can also choose to order the new columns by index. What happens to the other columns? The wizard automatically decides what to do with the variables that remain in the Current File list. It checks each variable to see if the data values vary within a case group. If they do, the wizard restructures the values into a variable group in the new file. If they don't, the wizard copies the values into the new file.
V syntaxu, pro data VŠPS 2013 SORT CASES BY IDdom(A). CASESTOVARS /ID=pohl vek vzd3 isced zamisco zampost isei /INDEX=vzOcD5 /GROUPBY=VARIABLE /COUNT=NoCasesToNew "Numb. Cases to create New variable" /VIND ROOT=ind.
VECTOR + AGGREGATE SORT CASES BY IDdom(A). FREQ vzOcD5. VECTOR (5). /*počet kategorií znaku = počet osob v domácnosti. COMPUTE vzd (vzOcD5) = vzd. FREQ vzd1 to vzd5. /* podle aktuální počtu osob v domácnosti vznikne až 6 proměnných pro vzdělání. RENAME VARIABLES (vzd1 vzd2 vzd3 = vzd_hlD vzd_Manz vzd_Dite). /* je vhodné si je pak přejmenovat podle rolí osob. AGGREGATE /OUTFILE='D:\DATA\VSPS\VSPS_2013\RodinyPS131_1dite.sav' /PRESORTED /BREAK=IDdom / vek_hlD =MAX(vek_hlD) / pohl_hlD =MAX(pohl_hlD) / vzd_hlD =MAX( vzd_hlD ) / vek_Manz =MAX(vek_Manz) / pohl_Manz =MAX(pohl_Manz) / vzd4_Manz =MAX(nejvzds_Manz) / vek_Dite =MAX(vek_Dite) / pohl_Dite =MAX(pohl_Dite) / vzd4_Dite =MAX(vzd4_Dite) EXECUTE.
Ovšem nemusí to vždy fungovat …
A co dělat když to nefunguje A co dělat když to nefunguje?* Nové proměnné (DO IF) pro osoby + Agregace 1. Vytvořit nové proměnné samostatně (pomocí podmínky IF) pro jednotlivé členy domácnosti (u nichž chceme mít informace pro další analýzu). Funguje ale pouze pro počet dané role u všech případů = 1. 2. Agregovat, např. podle čísla domácnosti *Pozor, pokud je v domácnosti více jedinců v dané roli, například více dětí v domácnosti/rodině, pak vždy vybere jen jednoho.
Syntax (1): Nové proměnné pro osoby (DO IF) + Agregace za domácnost Syntax (1): Nové proměnné pro osoby (DO IF) + Agregace za domácnost. Funguje ale pouze pro neměnný počet osob =1 a domácnost! *Hlava domácnosti (vzOcD5 = 1). DO IF vzOcD5 = 1. compute vek_hlD = vek. compute pohl_hlD = pohl. compute vzd4_hlD = vzd4. compute zamisco_hlD = zamisco. compute zampost_hlD = zampost. END IF. *Manželka/partnerka hlavy domácnosti (vzOcD5 = 2). DO IF vzOcD5 = 2. compute vek_Manz = vek. compute pohl_Manz = pohl. compute vzd4_Manz = vzd4. compute zamisco_Manz = zamisco. compute zampost_Manz = zampost. *Dítě (vzOcD5 = 3). DO IF vzOcD5 = 3. compute vek_Dite = vek. compute pohl_Dite = pohl. compute vzd4_Dite = vzd4. compute zamisco_Dite = zamiscoNum. compute zampost_Dite = zampost.
Syntax (2): Nové proměnné pro osoby (DO IF) + Agregace za domácnost Syntax (2): Nové proměnné pro osoby (DO IF) + Agregace za domácnost. Funguje ale pouze pro neměnný počet osob =1za domácnost! SORT CASES BY IDdom. AGGREGATE /OUTFILE='D:\DATA\VSPS\VSPS_2013\RodinyPS131_1dite.sav' /PRESORTED /BREAK=IDdom / IDdom_hlD =MAX(IDdom_hlD) / vek_hlD =MAX(vek_hlD) / pohl_hlD =MAX(pohl_hlD) / vzd4_hlD =MAX( vzd4_hlD ) / zamisco_hlD =MAX(zamisco_hlD) / zampost_hlD =MAX(zampost_hlD) / vek_Manz =MAX(vek_Manz) / pohl_Manz =MAX(pohl_Manz) / vzd4_Manz =MAX(nejvzds_Manz) / zamisco_Manz =MAX(zamisco_Manz) / zampost_Manz =MAX(zampost_Manz) / vek_Dite =MAX(vek_Dite) / pohl_Dite =MAX(pohl_Dite) / vzd4_Dite =MAX(vzd4_Dite) / zamisco_Dite =MAX(zamisco_Dite) / zampost_Dite =MAX(zampost_Dite) EXECUTE. GET FILE='D:\RodinyPS131_1dite.sav'. *Pozor, co se stane, když v domácnosti bude více dětí než 1?. *Vezme vždy jen jedno dítě za rodinu, navíc pro jednotlivé proměnné za dítě nejvyšší hodnotu, což nemusí být právě pro to samé 1 dítě v rodině.
Více v návodu SPSS Reference Guide pro verzi 20 jsou různé další manuály dostupné na http://www-01.ibm.com/support/docview.wss?uid=swg27021213 IBM SPSS Statistics Command Syntax Reference.pdf ftp://public.dhe.ibm.com/software/analytics/spss/documentation/statistics/20.0/en/client/Manuals/IBM_SPSS_Statistics_Command_Syntax_Reference.pdf Příkaz VECTOR je popsán na straně 2181-2186. Konkrétně podobný příklad je na str. 2185-86 VECTOR outside a Loop Structure. Příkaz CASESTOVARS je popsán na straně 268-275. Konkrétně podobný příklad je na str. 271-72.