Podział obowiązków w rodzinie

Dzisiaj ponownie bazujemy na danych z Diagnozy Społecznej (więcej informacji o tym zbiorze danych tutaj). W ankiecie z roku 2009 znalazło się pytanie, jaki powinien być twoim zdaniem podział obowiązków w rodzinie, w zależności od tego czy są w rodzinie dzieci i w jakim wieku (pytanie 107 kolumna ep107.1-ep107.4).

Pytanie dotyczyło w gruncie rzeczy tego, kto powinien pracować a kto nie. Z podtekstem że osoba niepracująca będzie zajmowała się domem i dziećmi.

Wyniki obrazuje poniższa tabelka, a przez resztę wpisu będziemy zastanawiać na jakim wykresie taką tabelę należy przedstawić.

W każdej kolumnie procenty grzecznie sumują się do 100%.

 

W oczy rzuca się brak symetrii, przy założeniu że ktoś powinien zrezygnować z pracy najczęściej pada na kobietę (uwaga 1: zobaczymy później jak to wygląda w rozbiciu na płeć, uwaga 2: to wyniki ankiet a nie moje opinie, feministki, proszę nie rysujcie mi lakieru na moim rowerze). Niewiele jest osób, które przy dzieciach do 6 lat model oboje rodzice pracują jest najlepszy.

Przejdźmy do wykresów. Powyżej różnych modeli podziałów obowiązków jest 6, ale w sumie interesować będą nas trzy główne: oboje rodzice na pełny etat, jeden z rodziców na część etatu, jeden z rodziców nie pracuje. Na pierwszym wykresie będziemy pokazywać zakumulowane procenty (kody w R poniżej)

 

Takie wykresy są często krytykowane ponieważ udział procentowy zielonej i fioletowej grupy ciężko porównać z uwagi na przesunięty punkt 0. Drugi częsty powód krytyki to łączenie odcinkami procentów, które sugeruje że jest jakiś trend (liniowy) w wynikach pomiędzy kategoriami.

Tak więc nawet jeżeli graficznie ten wykres mi się najbardziej podoba wypada zobaczyć jeszcze kilka innych wariantów.

Wykres paskowy, bez sugestii co do liniowości trendu.

I jeszcze jeden paskowy, ale bez skumulowania procentów

I jeszcze wykres punktowy. W teorii wykres punktowy łatwiej czytać niż powyższy, ponieważ oś OY nie jest tak szeroka.

Cztery wykresy. Podejrzewam że każdy znajdzie swojego amatora. A wracając do treści pokazywanej na tych wykresach to następnym razem wrócimy do tematu jak te proporcje zmieniają się w grupach wiekowych i płciach.

 

Co jest ważne w życiu? w zależności od wieku

Cztery dni temu (tutaj) badaliśmy jak zmieniały się wartości ważne w życiu, bazując na danych z Diagnozy Społecznej. Można jednak przypuszczać że to co jest ważne w życiu zależy od wielu czynników, ale z pewnością równiez od wieku.

Więc powtórzyliśmy analizę gradacyjną w czterech grupach wiekowych. najpierw zbadaliśmy kwartyle roku urodzenia i dało nam to cztery mniej więcej równoliczne grupy respondentów, urodzonych w latach: 1910 – 1952, 1952-1971, 1971-1987, 1987-2011.

Grupa wiekowa 1910-1952.

 

W grupie 1951-1971.

W grupie 1971-1987

W grupie 1987 – 2011

 

Z powyższych wykresów wynikają przynajmniej dwie rzeczy:

– najsilniej zmienia się system wartości ludzi w wieku 30-40 lat. Odległość krzywej od przekątnej jest największa. Analiza gradacyjna dowiodła swojej wartości w wyraźny sposób podsumowując wielkość zmian. Dla respondentów w wieku 30-40 liczą się i to coraz bardziej dzieci i udane małżeństwo.

– zmieniają się też rzeczy uznawane za ważne. W grupie osób najmłodszych wysokie miejsce zajmują pieniądze i praca, a starszych grupach i pieniądze i płacę wyprzedzają udane małżeństwo i dzieci.

 

Co jest ważne w pracy?

Dwa  dni temu pokazywaliśmy przykład analizy gradacyjnej w badaniu co jest ważne w życiu. Dziś zobaczymy co dla ankietowanych jest ważne w pracy. W latach 2007 i 2011 zadano respondentom pytanie o to co jest ważne w pracy. Podobnie jak w przypadku wartości ważnej w życiu, można było wybrać maksymalnie trzy cechy dorej pracy (z listy: Brak napięć i stresów, Duza samodzielnosc, Możliwość rozwoju osobistego, Praca zgodna z umiejetnosciami, Możliwość szybkiego awansowania, Stabilnosc zatrudnienia, Dogodne godziny pracy, Możliwość wykonywania pracy w domu, Dlugi urlop, Zajecie powazane przez ludzi, Odpowiednia płaca, Inne czynniki).

Używając tych samych technik co ostatnio, sprawdzimy czy oczekiwania w stosunku do pracy sie zmienily.

 

Po prawej stronie przedstawiono dla każdej cechy dotyczącej pracy informacje jaka frakcja osób uznała tę cechę za ważną. Po lewej stronie mamy wynik jednowymiarowej analizy gradacyjnej.

Zauważmy na początek że odległość tej krzywej od przekątnej, jest dużo większa niz w przypadku pytan o to co ważne w życiu. Wydaje sie to zgodne z intuicja ze pogląd dotyczący wartości waznych w zyciu zmienia sie wolniej niz dotyczacy wartosci waznych w pracy.

Największe zmiany dotyczyły wzrostu liczby osob uwazajacych ze wazna jest stabilnosc zatrudnienia (z 11.8% do 19% a więc zmiana o ponad 60%), duża samodzielnośc w pracy, brak napiec i stresow. Mniej osób za najważniejsze wymienia odpowiednia place czy prace zgodna z umiejętnościami. Mam nadzieje ze jest to zwiazane z tym ze podstawowe potrzeby zwiazane z wystarczająca placa i zatrudnieniem w odpowiednim miejscu zostaly zaspokojone i teraz osoby mogą sie skupic na wyzszych potrzebach. Moze to tez byc związane z rosnacym wiekiem respondentów, sa o 4 lata starsi moga juz cenic inne rzeczy.

Warto zrobic taka analize w podziale na grupy wiekowe, moze wiec wrocimy do tego tematu nastepnym razem.

 

Parsowanie stron HTML, meta-analiza, rak jelita i oczywiście obrazek

Dostałem dzisiaj pytanie od Macieja B. o kod użyty do wyciągania danych z portalu otomoto.pl.
Jak będę miał chwilę to ten kod wygładzę i opiszę na blogu, ale przy okazji dziś wpadłem na ciekawą funkcję służącą do parsowania danych, więc się nią podzielę.

Chodzi o funkcję readHTMLTable() z pakietu XML. Pozwala ona na wyciągnięcie danych z pliku HTML i wczytanie ich automatycznie do R.
Cool!
Jako przykład wykorzystamy zbiór danych o zachorowalności na nowotwór jelit w Wielkiej Brytanii, więcej o tym zbiorze danych i jego analizie przeczytać można na stronie http://blog.ouseful.info/2011/10/31/power-tools-for-aspiring-data-journalists-r/.

Poniższy fragment kodu wczytuje dane bezpośrednio ze strony HTML, dodaje nazwy kolumn i zmienia typy na liczbowe.

Skoro już ten zbiór danych wczytaliśmy to może jeszcze słowo komentarza skąd meta-analiza w nazwie tego wpisu. Zacznijmy od przedstawienia częstość zachorowań na nowotwór jelit na 100 tys mieszkańców a liczbę osób zamieszkałych na obszarze w którym ta częstość jest liczona.

Dla małych miejscowości ocena częstości zachorowań obarczona jest większą przypadkowością, jeżeli mamy miasto o 100 mieszkańcach i jeden zachoruje to unormowana częstość skacze do 1000 na 100 tys. nawet jeżeli nie jest to obszar szczególnie narażony na podwyższone ryzyko. Dla zaludnionych obszarów takie losowe fluktuacje mają mały wpływ. Zmierza to w kierunku meta-analizy w której na podstawie pomiarów z wielu obszarów ocenilibyśmy oczekiwaną zmienność dla obszaru o zadanym zaludnieniu i porównywali ją z obserwowaną wartością, tutaj zachorowalności, na danym obszarze.

Na powyższym wykresie widać, że patrząc na częstość zachorowań Glasgow ma podobną zachorowalność jak Orkney Islands, ale jeżeli dodatkowo uwzględni się liczbę osób zamieszkałych na obu obszarach to Orkney Islands ma zachorowalność mieszczącą się w granicach losowych fluktuacji, a dla Glasgow zachorowalność ta jest znacząco powyżej oczekiwanej na bazie pomiarów z całego kraju. Ciekawe prawda. Kiedyś o meta-analizie napiszę więcej, bo warto. Co ciekawe o wykresie tunelowym (funnel-plot) bez skrępowania piszą w Wielkiej Brytanii takie gazety jak Guardian (http://www.guardian.co.uk/commentisfree/2011/oct/28/bad-science-diy-data-analysis). Jak widać nawet duże dzienniki mogą serwować rzetelne informacje a nie tylko plotki o tym co nowego u celebrytów.

 

Rysujemy rozkład cen krok po kroku, część 4

Czas na ostatnią część wyjaśnień krok po kroku jak konstruowane były wykresy o cenach mieszkań.
Tym razem wykorzystamy wykres pudełkowy pokazany na wpisie tutaj do pokazania rozkładów cen w dzielnicach Warszawy.

Wczytujemy pierwsze 33 linie kodu z poprzedniego wpisu a następnie uruchamiamy linie 142-187. Wyjaśnijmy od razu po co była funkcja nazwyIprocenty(). Otóż w pakiecie lattice dosyć łatwo narysować wykres w podziale na poziomy pewnej zmiennej grupującej. Grupa obserwacji odpowiadająca poszczególnym poziomom rysowana jest na kolejnym panelu. Nazwy poziomów znajdują się w nagłówku panelu. W naszym przykładzie funkcja nazwyIprocenty() zmieniła nazwy wszystkich poziomów w ten sposób, że do nazw dzielnic dodano cztery liczby określające procentową zmianę ceny w określonej dzielnicy (zmianę liczoną na różne sposoby, zobacz komentarze wewnątrz tej funkcji).

Dzięki temu warunkując po zmiennej dzielnica2 powinniśmy uzyskać zbiór wykresów pudełkowych w rozbiciu na dzielnicę.
Poniższy kod od kodu z poprzedniego wpisu różni się praktycznie wyłącznie formułą cenam2~dataF|dzielnica2.

Wadą tego wykresu są ponownie dzielnice w których mało jest oferowanych mieszkań. Usuńmy dzielnice w których jest mniej niż 1000 mieszkań średniej wielkości oferowanych do sprzedaży w ostatnich 4 latach. Poniżej prezentujemy tylko kod usuwający odpowiednie wiersze, następnie używamy tego samego kodu co powyżej aby wygenerować wykres dla dzielnic, tym razem już tylko 12.

Rysujemy rozkład cen krok po kroku, część 3

Dzisiaj kontynuujemy rozpisywanie krok po kroku wizualizacji cen mieszkań. Ten wpis poświęcony jest wykresowi pudełkowemu. Kory w programie R użyte poniżej można znaleźć na stronie tutaj.

Podobnie jak poprzedni pierwsza część to przygotowanie danych, druga to ich wizualizacja.

Częśc 1.

Dane są wczytane, czas na wykres. Wykorzystamy funkcję bwplot() z pakietu lattice.
Narysujemy jak zmieniają się ceny m2 średniej wielkości mieszkań w kolejnych miesiącach.

Nie wygląda to najlepiej, zajmijmy się na początek osiami. Ponieważ cena jest zmienną silnie prawo skośną, przedstawimy ją na osi logarytmicznej. Ponieważ etykiety na osi OX zachodzą na siebie to zmniejszymy je i pokażemy pionowo.

Przy takiej rozpiętości na osi OY trudno analizować delikatne zmiany w cenach mieszkań, więc w dalszej części zawęzimy zainteresowania do przedziału osi OY od 7 do 14k.

Trudno zauważyć jakiś trend. Dorysujmy więc krzywą trendu liniowego przedefiniowując funkcję rysującą panel. Nowa funkcja rysująca panel rysuje linie pomocnicze siatki, rysuje wykresy pudełkowe używając panel.bwplot() oraz dorysowuje linię odpornej regresji liniowej.

Trend liniowy liczony na wszystkich punktach to tylko jedno z możliwych podejść do zagadnienia oceny trendu. Dodajemy trend lokalnie ważony wielomianami stopnia pierwszego oraz trend liniowy wyznaczony tylko na podstawie median cen w kolejnych miesiącach.

Mało czytelne są te linie trendu. Narysujemy je grubszą kreską i dodatkowo użyjemy kolorów z pakietu RColorBrewer, które powinny być przyjemniejsze dla oka.

Solą w oku są już tylko te niebieskie wykresy pudełkowe, lepiej wyglądałyby one w kolorze szarym, mają być tłem dla linii trendu. Aby zmienić kolor tych punktów używamy funkcji trellis.par.set() i trellis.par.get().

Już jest nieźle. Ostatnia modyfikacja wykresu to dodanie opisu wykresu z liczbą procent o który zmieniła się cena mieszkania. Konstruujemy funkcję, która te procenty wyliczy i doklei do nazwy dzielnicy. Przy da się to do kolejnego przykładu, tutaj wyglądać może trochę sztucznie.

Wykres gotowy, w kolejnym odcinku pokażemy jak wygenerować taki wykres dla wszystkich dzielnic.

Rysujemy rozkład cen krok po kroku, część 2

Kontynuując temat z wczoraj, narysujemy rozkład cen mieszkania dla każdej z  dzielnic Warszawy.

Punktem wyjścia jest przygotowanie danych, wykonajmy pierwsze 32 linie tak jak w poprzednim wpisie.

Aby wyświetlić na rożnych panelach dane dla kolejnych dzielnic, wystarczy zmodyfikowac formułę na cenam2~data|dzielnica, oraz za zabiór danych wskazać mieszkaniaKWW2011Warszawa2.

Kolejne panele przedstawiają kolejne dzielnice, ale ich kolejność jest alfabetyczna. Taka sama jak kolejność poziomów zmiennej czynnikowej dzielnica. Nie zawsze kolejność alfabetyczna będzie najlepsza. Użyjemy funkcji reorder by zmienić kolejność poziomów tak by odpowiadała medianie ceny metra kwadratowego w danej dzielnicy. Kod generujący obrazek będzie taki sam, zmieni się tylko kolejność dzielnic.

Dla niektórych dzielnic jest mało punktów, co powoduje, że trudno mieć zaufanie do wyznaczonego trendu. Tym razem usuniemy te dzielnice, dla których nie ma przynajmniej 2000 wierszy. Kod generujący wykres jest bez zmian, usuwamy tylko obserwacje z dzielnic w których obserwacji było mniej niż 2k.

Rysujemy rozkład cen krok po kroku

Dostałem maila od Grzegorza L. z pytaniem jak zrobić krok po kroku wykresy z wpisów http://smarterpoland.pl/?p=169 i http://smarterpoland.pl/?p=172. W sumie cztery wykresy, każdy z nich postaram się opisać jak powstawał krok po kroku. Dziś zajmiemy się pierwszym z nich czyli zmiana cen mieszkań w dzielnicy Zoliborz w rożnych grupach wielkości mieszkań.

Zaczniemy od opisu jak dane były przygotowane a następnie pokażemy jak zrobić wykres krok po kroku. Skrypt R z wszystkimi komendami poniżej opisanymi znajduje się tutaj.

Część 1: Przygotowanie danych
Poniższy skrypt wczytuje do R dane odczytując je bezpośrednio z Internetu, następnie wybiera tylko dane dla Warszawy, dla dzielnicy Zoliborz. Wybiera tylko mieszkania o powierzchni do 300m2 i zgłoszone w ostatnich 3 latach. Następnie dodajemy do danych nowa zmienna opisującą wielkość mieszkania w jednej z trzech grup, małe do 49 m2, średnie od 49 do 68m2 i duże, o powierzchni ponad 68m2. Następnie dodatkowo wybieramy tylko podzbiór mieszkań z Zoliborza.

Część 2: Generowanie obrazków.

Ok, mamy przygotowane dane, teraz czas na zrobienie rysunku. Zaczniemy od prostego użycia funkcji xyplot{lattice}.

Miło ze strony funkcji xyplot(), że jest w stanie narysować na osi OX zmienna typu Date, ale sam wykres nie powala na kolana.
Za bardzo w oczy rzucają się punkty, których jest tak dużo że nic ciekawego nie widać. Zmniejszymy więc wielkość punktów zaznaczając je jednopikselową kropka (pch=”.”), dodamy linie pomocnicze siatki i wygładzoną linię trendu (type=”g” i “smooth”).

Już trochę lepiej, ale wciąż niewiele widać. Skala OY jest liniowa a dla prawoskośnych zmiennych dobrym pomysłem jest skala logarytmiczna. Dodajemy argument scales, który pozwala na zmianę osi OY na logarytmiczną.

Co nam się nie podoba tym razem? Wiele rzeczy. Po pierwsze przydała by się legenda. Dodamy ją argumentem auto.key, przy okazji określimy gdzie i jak ma być legenda rysowana, choć wcale nie musimy tego określać, wystarczyłoby auto.key=T. Druga rzecz to widoczność linii trendu w każdej z grup. Są mało widoczne z uwagi na grubość linii i z uwagi na duży rozstrzał na osi OY. Zmienimy i to i to, podamy grubość linii lwd=3 i ustalimy zakres zmienności na osi OY na 6-16k/m2. ostatnia poważna zmienna będzie dotyczyła znaczników na osi OY. Poprzednio wyglądały one słabo, jakieś potęgi 10 (ile to 10^4.2?), tym razem jawnie wskażemy w którym punktach mają pojawiać się znaczniki osi podając argument at.

Wykres nabiera kształtów. Nadpiszemy teraz funkcję rysującą panel, w taki sposób by dodatkowo rysować trend wyznaczony metodą regresji liniowej. Rysujemy go na czarno przerywaną linią wykorzystując funkcję panel.xyplot().

Czas na ostatnie modyfikacje. Co zmienimy? Po pierwsze punkty w legendzie są rysowane pustymi okręgami, a lepiej wyglądać będą wypełnione. Poniżej używam funkcji trellis.par.set() by o zmienić.
Po drugie, porzednie linie pomocnicze siatki nie były rysowane w tych samych miejscach co znaczniki na osi OY, usuwam więc argument type=”g” a zamiast tego w funkcji rysującej panel ręcznie dorysowuje linie pomocnicze w odpowiednich miejscach i pionowo i poziomo funkcją panel.abline(). Po trzecie zmieniam sposób rysowania punktów. Używam do tego funkcji panel.xyplot() z type=”p” i cex=1/4 dzięki czemu każda oferta sprzedaży jest zaznaczona jednym niewielkim szarym punktem.

I koniec.

Jeszcze mała autoreklama. Więcej o pakiecie lattice można przeczytać w drugim wydaniu ,,Przewodnika po pakiecie R” wydanego przez wydawnictwo GiS w tym roku (jeden podrozdział dostępny w Internecie) lub w książce Lattice Multivariate Data Visualization with R, w całości poświęconej temu pakietowi (zobacz tutaj). Oczywiście można też znaleźć sporo informacji korzystając po prostu z googla.

Zmiany zamożności Polaków na kolorowo

Trzy dni temu pisaliśmy o tym jak zmienia się zamożność gospodarstw badanych w ramach Diagnozy Społecznej (ponad 20 tys gospodarstw).
Generalny wniosek jest taki, że coraz więcej gospodarstw domowych poprawiło swój standard przez ostatnie 6 lat (porównywaliśmy wyniki z lat 2005 i 2011). Zobaczmy jak ta sytuacja wygląda w rożnych województwach.
Na poniższych wykresach wykonamy analizę gradacyjną, kolorami zaznaczając wyniki różnych województw.


Aby było czytelniej wybraliśmy pięć województw, dla których wyniki były ciekawe. Są to województwa Zachodni-pomorskie, Mazowieckie, Dolnośląskie, Lubuskie i Świętokrzyskie. Etykiety zamiast przy punktach zostały umieszczone w prawej dolnej legendzie. Jak czytać te wykresy? Ponieważ odpowiedzi są w skali uporządkowanej możemy interpretować bezpośrednio położenie k-tego punktu,  anie tylko ścieżkę do niego prowadzącą (jak na poprzednich przykładach).
Etykieta 5 oznacza, że wystarcza tylko na najtańsze jedzenie, ubranie, opłaty, kredyt. Ponieważ na wykresie współrzędne punktów to skumulowane częstości dla danego i niższych poziomów, więc współrzędne punktów z etykietą 5 oznaczają frakcję osób, którym starcza tylko na najtańsze jedzenie, kredyt, ubrania lub i na to nie. W województwie zachodnio-pomorskim w roku 2005 takich osób było około 40% (współrzędna OX brązowej 5), ale w roku 2011 było już takich osób niewiele ponad 20%. Praktycznie w każdym z narysowanych województw współrzędna OY dla cyfry 7 to 80%, co oznacza, że w roku 2011 80% gospodarstw w tych województwach deklarowało, że muszą żyć oszczędnie, bardzo oszczędnie a czasem i to nie wystarcza. W roku 2005 procent takich deklaracji był wyższy w każdym z województw, najwięcej spadł w Świętokrzyskim z około 90%.

Im dalej punkt od przekątnej tym większa zmiana do tego poziomu. Przykładowo różowa 6 ilustruje, że w województwie Lubuskim osób które żyją bardzo oszczędnie a i to czasem nie starcza było ponad 60% w roku 2005 a w 6 lat później było ich już tylko około 40%.

Mniejsze zmiany dotknęły województw Mazowieckiego i Dolnośląskiego.

Na zakończenie wykres dla wszystkich województw, dosyć gęsty, 16 krzywych zachodzi na sobie co utrudnia odcyfrowywanie wyników. W każdym województwie krzywa jest w większości pod przekątną co znaczy, że jest raczej lepiej niż przed 6 laty.

 

Mapa wartości samochodów

Wczoraj graficznie przedstawialiśmy jak wygląda rozkład cen w zależności od roku produkcji. Co ciekawe w skali logliniowej zależność pomiędzy ceną a rokiem produkcji jest bardzo bliska liniowej dla wielu marek. Zakładając zależność liniową możemy wyznaczyć dwie liczby dla każdej marki. Średnią procentową zmianę ceny w ciągu roku i orientacyjną średnią cenę auta wyprodukowanego w roku 2006. Rok 2006 został wybrany by móc porównywać ceny różnych marek ze sobą, oczekiwaną cenę w roku 2006 wyznaczmy bez względu na to czy dany samochód był produkowany w tym roku czy nie (wykorzystamy liniową zależność aby oszacować średnią cenę w roku 2006).
Na poniższej mapie zaznaczono każdą markę w układzie dwóch współrzędnych, utraty wartości w ciągu roku oraz orientacyjnej ceny w roku 2006. Należy zaznaczyć, że wartość procentowa na osi OX to różnica pomiędzy średnimi cenami dwóch kolejnych roczników, a nie różnica pomiędzy ceną danego rocznika w dwóch kolejnych latach. Tą drugą wartość będzie można ustalić za rok.

 

Dodatkowo na tej mapie wielkością punktu zaznaczono jak wiele aut było wykorzystanych do oszacowania obu wskaźników (cztery wielkości do 100, od 100 do 200, od 200 do 500, powyżej 500) oraz z jakiego kraju pochodzi dana marka. Jeżeli chodzi o pochodzenie to z uwagi na przejęcia oraz przenoszenie produkcji do innych krajów należy tę informację traktować z dystansem.

To co ciekawego widać na tej mapie to że są auta tanie, które nie tracą wiele z czasem na wartości (np Fiat Uno), drogie, które też dużo na wartości tracą (Porche Cayenne), tanie które dużo tracą (Dacia Logan), drogie które mało tracą (Volkswagen Bora) i całe spektrum innych możliwości.

Aby łatwiej ten wykres się analizowało możemy dokonać zbliżenia

Volkswagen Passat traci średni 16% na rok i kosztuje z roku 2006 około 40tys. W otoczeniu znaleźć można np Toyote Corolle Verso. Na prawo znajdziemy Forda S-Maxa o podobnej cenie ale za to znacznie większej utracie na wartości.

Zobaczmy co się stanie jeżeli zagregujemy modele z tej samej marki.

 

Otrzymujemy mapę marek, im bardziej na lewo tej mapy tym mniejsza utrata na wartości im niżej tym tańsze auta.