przekształcenia
Transkrypt
przekształcenia
PRZEKSZTAŁCENIA Niezwykle przydatną umiejętnością jest tworzenie nowych zmiennych na podstawie zmiennych już istniejących jeżeli działamy używając menu i okienek to zdecydowaną większość poleceń do tego przeznaczonych znajdziemy w menu PRZEKSZTAŁCENIA Jedną z najczęściej używanych jest komenda Oblicz wartości ( compute ) Przypuśćmy, że chcielibyśmy wiedzieć jaki jest dochód na głowę w gospodarstwie domowym respondenta. Takiej zmiennej nie ma w zbiorze danych lecz łatwo będzie ją utworzyć dzieląc dochód gospodarstwa domowego (INCOME91) przez liczbę domowników (HOMPOP). COMPUTE Dochod = income91 / hompop. Execute. Powyższy przykład stworzył zmienną „Dochod” która dla każdej osoby przechowuje wynik dzielenia dochodów je gospodarstwa domowego przez liczbę osób w nim zamieszkujących. Obliczanie wartości wyposażone jest w długą listę dostępnych funkcji. Chcąc na przykład obliczyć logarytm naturalny z dochodów łącznych gospodarstwa domowego (INCOME91) należy wpisać poniższą komendę: COMPUTE LINCOM91 = LN(income91) . Powstaje zmienna LINCOM91, której wartości są logarytmem wartości zmiennej Income91 Często używaną funkcją jest MEAN. Dzięki niej można szybko obliczyć średnią arytmetyczną z kilku zmiennych. W poniższym przypadku jest to średnia z trzech zmiennych opisujących sytuację finansową gospodarstwa domowego (NOTEDUC, NOTFOOD, NOTMEDI): COMPUTE INDEX = MEAN(noteduc,notfood,notmedi) . VARIABLE LABELS INDEX= 'WSKAZNIK BIEDY'. Dzięki „jeżeli” (IF) łatwo utworzyć zmienne wymagające użycia relacji (<, >, =>, =<, =) i warunków logicznych (or, and, not). W ten sposób można na przykład na podstawie ilości lat respondenta zakwalifikować go do jednej z czterech kategorii wiekowych. Na podstawie zmiennej „age” tworzymy nową zmienną „wiek” COMPUTE wiek = 0 . IF (age <=34) wiek = 1 . IF (age >34 and age<=45) wiek = 2 . IF (age >45 and age<=61) wiek = 3 . IF (age >61) wiek = 4 . Execute. I dorabiamy etykiety nowej zmiennej VALUE LABELS WIEK 1 'Do 34 lat' 2 '35 - 45 lat' 3 '46 - 61' 4 'Powyżej 61 lat'. Identyczny efekt jak poprzednio możemy osiągnąć przez Rekodowanie. Polega na zmienianiu wartości zmiennych, czyli na nadawaniu wartościom zmiennej innych wartości (1=5, 2=6) lub na przypisywaniu podzakresom zmiennej określonych kodów (1,2,3=1; 4,5,6=2). RECODE age (1 THRU 34=1)(35 THRU 45=2) (46 THRU 61=3)(99=9). W tym wypadku oryginalne wartości zmiennej AGE zostały utracone. Aby zachować oryginalne wartości zmiennej należy podczas rekodowania utworzyć nową zmienną . Pokazuje to poniższy zapis : RECODE age (1 THRU 34=1)(35 THRU 45=2) (46 THRU 61=3)(99=9) INTO GRUPAGE . Nowo powstałą zmienną GRUPAGE możemy opisać identycznie jak poprzednio, nadając etykietę samej zmiennej VARIABLE LABEL GRUPAGE 'KATEGORIE WIEKOWE'. i jej wartościom: VALUE LABELS GRUPAGE 1 'Do 34 lat' 2 '35 - 45 lat' 3 '46 - 61' 4 'Powyżej 61 lat'. W zmiennej oryginalnej kodem określającym braki danych było 99, w nowej zmiennej jest to 9. Braki danych deklarujemy w następujący sposób : MISSING VALUE GRUPAGE (9). Braki danych z reguły kodujemy jako 9 (lub 99 lub 999) Odpowiedzi typu "nie wiem" jako 8 (lub 98 lub 998), zależnie wartości danej zmiennej, w której występują. Z reguły w deklarujemy braki danych i odpowiedzi typu "nie wiem" jako missing values. Innym popularnym sposobem deklarowania braków danych jest użycie wartości ujemnych, lecz my pozostaniemy przy 9. Została utworzona nowa zmienna, której wartość 1 oznacza osobę do 34 lat, 2 od 35 do 45 lat, 3-powyżej 45, 9 to brak danych. Kolejną komendą dającą możliwość tworzenia nowych zmiennych jest Rangowanie obserwacji (RANK.) Służy ona do rangowania wartości zmiennej według szeregu dostępnych kryteriów. Najczęściej używa się rangowania według wartości percentyli. Wyobraźmy sobie, że chcielibyśmy porangować dochody łączne gospodarstwa domowego od gospodarstw najbiedniejszych do najzasobniejszych. Możemy to zrobić dzieląc je według wartości decyli na 10 grup i przypisując poszczególnym grupom rangi od 1 do 10. RANK VARIABLES=income91 /TIES=MEAN . (A) /NTILES (10) /PRINT=YES Powstaje nowa zmienna ciągła, której wartości mówią nam do którego decyla dochodów należy gospodarstwo domowe respondenta. Dodatkowo, używając rank możemy rangować oddzielnie podgrupy osób badanych. Przykładowo jeśli porangowalibyśmy, wzrost respondentów prawdopodobnie najwyższe pozycje zajmowali by mężczyźni. Jeśli karzemy porangować wzrost według płci kobiety i mężczyźni zostaną porangowani oddzielnie w ten sposób np. rangę 1 otrzymają dwie osoby: najwyższa kobieta jak i mężczyzna, a nie jeden najwyższy respondent. Inną bardzo przydatną komendą służącą do tworzenia nowych zmiennych jest Zlicz wystąpienia (COUNT). Jej zastosowanie ilustruje poniższa procedura tworzenia “wskaźnika szczęścia”. Chcąc utworzyć taki wskaźnik można zliczyć wszystkie wartości oznaczające “bardzo szczęśliwy” (1) i “raczej szczęśliwy” (2) dla zmiennych opisujących poczucie szczęścia respondenta pięć lat temu (HAPPAS5), obecnie (HAPUNHAP) i za pięć lat (HAPFUT5). COUNT happy = happas5 hapunhap hapfut5 (1 thru 2) . VARIABLE LABELS happy 'WSKAZNIK SZCZESCIA(ile razy był b szczęśliwy )' . Powstaje nowa zmienna HAPPY, w której 0 oznacza, że respondent nie wskazał 1 lub 2 na żadnej z trzech zmiennych, a 3 mówi nam, że mamy do czynienia z wielkim optymistą, który był, jest i będzie szczęśliwy. DANE W zbiorze można wykonywać analizy na wybranej grupie przypadków. Wyboru przypadków (filtrowania) dokonuje się poprzez Wybierz Obserwacje: Dokonać możemy tego na dwa sposoby tak aby nie wybrane obserwacje zostały trwale usunięte lub czasowo wyłączone z analiz („odfiltrowane”) Poniższy przykład ilustruje polecenia wyłączające czasowo wszystkie osoby, które na zmiennej sex miały wartość inną niż 1. USE ALL. COMPUTE filter_$=(sex = 1). FILTER BY filter_$. EXECUTE. Pierwsza linia mówi, że do nadchodzących operacji mają zostać wykorzystane wszystkie przypadki Kolejna tworzy i formatują zmienną filter_$, która przyjmuje wartość logiczną PRAWDA (1) dla osób których zdanie: sex =1 było prawdziwe, a wartość logiczną FAŁSZ (0) dla pozostałych osób. Kolejna linia wybrać czasowo osoby, które mają na zmienne filter_$ wartość prawda, pozostałe pominąć. W wyniku tej operacji w analizowanym zbiorze danych chwilowo pozostali sami mężczyźni: Aby wybrać interesującą nas grupę danych można tworzyć bardziej złożone filtry. Poniższy filtr spowoduje, że w zbiorze pozostaną tylko mężczyźni powyżej 30-tego roku życia: USE ALL. COMPUTE filter_$=(sex = 1 & age > 30). VARIABLE LABEL filter_$ 'sex = 1 & age > 30 (FILTER)'. VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. FORMAT filter_$ (f1.0). FILTER BY filter_$. EXECUTE. Przywrócić obserwacje czasowo wyłączone komendą Wybierz Obserwacje można poprzez komendę : FILTER OFF. USE ALL. EXECUTE .