Zmiana dochodów w ostatnich 8 latach w podziale na płeć

Analiza zróżnicowania dochodów bardzo mnie interesuje. To jednak większy temat i poświęcimy mu więcej czasu kiedy indziej. Dziś chciałbym podzielić się jednym wykresem, na którym zobaczymy jak wyglądał rozkład dochodu netto ankietowanego w zależności od wieku i w zależności od płci, tak w roku 2003 jak i w roku 2011. Oczywiście złotówka dzisiaj i wtedy to dwie różne złotówki, nie sposób przeliczyć siły nabywczej teraz i wtedy bo zależy ona od koszyka zakupów. Inaczej wyglądała zmiana cen artykułów luksusowych, inaczej zmiana cen jedzenia a inaczej zmiana cen mieszkań. W każdym razie na potrzeby tego rysunku wykorzystam wskaźnik inflacji dla tych 8% wynoszący 23.7% (na podstawie http://blog.opiekuninwestora.pl/index.php/inflacja/). Więc przedstawiane ceny to albo ceny podane w roku 2011, albo ceny podane w roku 2003 i skorygowane o inflacje.

W poniższych ilustracjach nie analizujemy osobno osób żyjących samotnie (tzw singli), par bez dzieci (DINKs) i par z dziećmi, choć pewnie pomiędzy tymi trzema grupami są znaczne różnice, ale nie wszystko na raz.

Ciągła linia to wygładzona ocena mediany, przerywana to kwantyl rzędu 90%.
Dużych niespodzianek nie ma, ale niektóre wyniki są ciekawe.
Po pierwsze, nawet po uwzględnieniu inflacji zarobki wzrosły (nie tylko ankietowanych, bo to jest oczekiwane, ale tez rozkład zarobków w grupie wiekowej np 30 latków). I to wzrosły znacznie. Oby związane to było z większa produktywnością a nie spadkiem wartości złotówki.
Po drugie kobiety zarabiają mniej. Dotyczy to i medianowych zarobków i kwantyla 90%.
Po trzecie, i chyba najciekawsze, w roku 2011 wyraźnie widać, że najwyższe dochody uzyskują osoby w wieku 30-40 lat.
Biorąc pod uwagę, że oś oY jest logarytmiczna, zarówno osoby młodsze jak i starsze zarabiają znacznie mniej. U kobiet ten okres wyższych dochodów kończy się wcześniej niż u mężczyzn, ale u obu płci kończy się czy to patrząc na medianę czy na kwantyl 90%.
Inaczej było w roku 2003. Nie było wtedy tak dużych dysproporcji związanych z wiekiem, szczególnie jeżeli porównywać mediany dochodów. Ciekawe czy to zróżnicowanie będzie się jeszcze pogłębiało.

To pierwsza ilustracja. Czas na dokładniejsze drążenie tematu. Kierunków badania czynników różnicujących wysokość dochodów jest dużo. Może macie propozycje od czego zacząć?

Zmiany zamożności Polaków

Kontynuujemy analizy danych z badania Diagnoza Społeczna. Średnia pensja w Polsce rośnie szybciej nawet niż inflacja. Można więc uważać, że jest coraz lepiej.

Ten i kolejny wpis powstał ponieważ po pierwsze wyniki są ciekawe, a po drugie, ponieważ będzie okazja wprowadzić kolory w analizie gradacyjnej.

W kwestionariuszu dla gospodarstw piąte pytanie dotyczy sposobu gospodarowania dochodem, czy na wszystko wystarcza pieniędzy, czy wystarcza ale przy oszczędnym życiu, czy brakuje na coś. Będziemy poniżej porównywać odpowiedzi pomiędzy latami 2005 (kolumna „cl7”) i 2001 (kolumna „fL5”). Do porównania odpowiedzi w tych dwóch rocznikach wykorzystamy analizę gradacyjną.

Kilka linii kodu w R

# czy wystarcza pieniedzy w roku 2005 i 2011
zb1 = rev(table(factor(diagnozaGospodarstwa2011[,"fL5"])))
zb2 = rev(table(factor(diagnozaGospodarstwa2011[,"cl7"])))
 
plotGradeStat(t(t(zb2)), t(t(zb1)), osX="rok 2005", osY="rok 2011", skala=c(0.01,0.5), cutoff=0.011,uporzadkujMalejaco=F)

i mamy następujący wykres.

Etykiety można by skrócić, ale póki są czytelne nie walczyłem z nimi. W porównaniu z rokiem 2005 w roku 2011 ubyło o około jedną trzecią osób, którym wystarcza co prawda na najtańsze jedzenie, ale nie wystarcza na inne potrzeby. Liczba osób, którym wystarcza i jeszcze oszczędzają wzrosła trzykrotnie.

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%.

                                                                  dzieci do 3 lat dzieci od 3 do 6 lat dzieci od 6 do 12 lat nie ma dzieci do 12 lat
OBOJE PRACUJĄ W PEŁNYM WYMIARZE                                              5.00                11.92                 40.78                   83.76
ON PRACUJE W NIEPEŁNYM, ONA W PEŁNYM WYMIARZE                                0.29                 0.91                  1.34                    0.31
ON PRACUJE W PEŁNYM, ONA W NIEPEŁNYM WYMIARZE                               18.63                42.06                 41.68                   10.10
ON PRACUJE W PEŁNYM WYMIARZE, A ONA PRZERYWA PRACĘ NA PEWIEN CZAS           49.13                30.79                  9.32                    2.61
ON PRZERYWA PRACĘ, ONA PRACUJE W PEŁNYM WYMIARZE                             0.20                 0.40                  0.73                    0.15
ON PRACUJE W PEŁNYM WYMIARZE, ONA REZYGNUJE Z PRACY                         26.75                13.92                  6.15                    3.06

 

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.

 

1
2
3
4
5
6
7
8
9
10
11
12
# zbieramy dane kto co uwazal za wazne w pracy w roku 2007 i 2011
zb1 <- colSums(diagnozaOsoby2011[,paste("dp106_",1:12,sep="")]=="TAK zaznaczone",na.rm=T)
zb2 <- colSums(diagnozaOsoby2011[,paste("dp106_",1:12,sep="")]=="NIE zaznaczone",na.rm=T)
zb3 <- colSums(diagnozaOsoby2011[,paste("fp113",c("_1","_2","_3","_4","_5","_6","_7","_8","_9","10","11","12"),sep="")]=="TAK",na.rm=T)
zb4 <- colSums(diagnozaOsoby2011[,paste("fp113",c("_1","_2","_3","_4","_5","_6","_7","_8","_9","10","11","12"),sep="")]=="NIE",na.rm=T)
etykiety <- c("Brak napiec i stresow", "Duza samodzielnosc", "Mozliwosc rozwoju osobistego", "Praca zgodna z umiejetnosciami", "Mozliwosc szybkiego awansowania", "Stabilnosc zatrudnienia", "Dogodne godziny pracy", "Mozliwosc wykonywania pracy w domu", "Dlugi urlop", "Zajecie powazane przez ludzi", "Odpowiednia placa", "Inne czynniki")
dane <- data.frame(TAK2007 = zb1, NIE2007 = zb2, TAK2011=zb3, NIE2011=zb4)
rownames(dane) <- etykiety
zm1 <- dane[,1,drop=F]/dane[,2]
zm2 <- dane[,3,drop=F]/dane[,4]
 
plotGradeStat(zm1, zm2, osX="rok 2007", osY="rok 2011", skala=c(0.002,0.6), cutoff=0.011)

Co jest w życiu ważne?

Ostatnio moi magistranci na mini-seminarium prezentowali jednowymiarową analizę gradacyjną. Służyć może ona między innymi do porównania czy pomiędzy dwoma wektorami obserwacji zmieniła się struktura odpowiedzi. Wygląda to na ciekawą metodę, więc warto ją zaimplementować w R i zobaczyć jak dziala.

Kilka dni temu pisaliśmy o zbiorze Diagnoza Społeczna (http://smarterpoland.pl/index.php/2011/10/diagnoza-spoleczna-2011/), już dołączony do repozytorium. Wykorzystamy go na potrzeby badania analizy gradacyjnej.

W latach 2005 i 2009 w Diagnozie Społecznej ankieterzy pytali respondentów o wskazanie wartości ważnych w ich życiu (zmienne cp2.1-cp2.14 i ep2.1-ep2.14) . Badany mógł wybrać maksymalnie trzy odpowiedzi ze zbioru 14 możliwych (PIENIADZE, DZIECI, UDANE MALZENSTWO, PRACA, PRZYJACIELE, OPATRZNOSC, BOG, POGODA DUCHA, OPTYMIZM, UCZCIWOŚĆ, ŻYCZLIWOŚĆ I SZACUNEK OTOCZENIA, WOLNOSC, SWOBODA, ZDROWIE, WYKSZTALCENIE, SILNY CHARAKTER, INNE). Wykorzystamy analizę gradacyjną by sprawdzić czy zmieniła się struktura wartości w badanej grupie respondentów w przeciągu czterech lat.

Zaczniemy od analizy dwóch czternastoelementowych wektorów. Każdy wektor określi jaka frakcja osób uznała daną wartość za ważną w ich życiu. Porównamy oba wektory, by sprawdzić które wartości zyskały, a które straciły na znaczeniu pomiędzy rokiem 2009 a 2005.

 

 

Kod generujący powyższy rysunek znajduje się poniżej. Po lewej prezentowane są wyniki analizy gradacyjnej, po prawej zwykły wykres rozrzutu. Oba wykresy prezentują te same dane.

Zacznijmy od prawego wykresu. Frakcje osób uznających daną wartośc za ważną unormowano tak, by po zsumowaniu wszystkich wartości otrzymać 1. Osobno dla roku 2005 osobno dla 2009. Każdy punkt opisuje jedną wartość. Współrzędne punktu odpowiadają unormowanej frakcji osób uznających tą wartość za ważną w roku 2005 i 2009. Dorysowano przekątną, dzięki temu punkty pod przekątną odpowiadają wartościom których znaczenie spadło do roku 2009, punkty nad odpowiadają wartosciom których znaczenie wzrosło.

Po lewej stronie przedstawiono te frakcje w sposób skumulowany. Kolejność odpowiada procentowej zmianie ważności w stosunku do roku 2009. Na początku wykresu, przy punkcie 0,0 znajdują się wartości, które zyskały na znaczeniu. Pod koniec wartości, ktore stracily na znaczeniu. Długość kroku odpowiada frakcji osob uznających daną wartość za ważną. Odległość wyrysowanej łamanej od przekątnej obrazuje jak bardzo zmieniła się struktura wartości. W tym przypadku łamana jest blisko przekątnej, więc ludzie nie zmienili istotnie swojego systemu wartości. Dzieci i zdrowie zyskały na ważności. Pieniądze i praca straciły, choć w obu przypadkach nie są to duże zmiany.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
plotGradeStat <- function(zmienna1, zmienna2, uporzadkujMalejaco = TRUE, osX = "", osY = "", skala=c(0.005,0.5), cex.text=0.8, cutoff = 0.01) {
# normalizacja obu cech
  zm1r   <- zmienna1/sum(zmienna1)
  zm2r   <- zmienna2/sum(zmienna2)
  iloraz <- zm1r/zm2r
# jezeli zachodzi taka potrzeba to zmienna sa porzadkowane w kolejn  
  if (uporzadkujMalejaco) {
    zm1r   <- zm1r[order(iloraz, decreasing=FALSE), 1, drop=FALSE]
    zm2r   <- zm2r[order(iloraz, decreasing=FALSE), 1, drop=FALSE]
    iloraz <- zm1r/zm2r
  }
# dwa wykresy w poziomie  
  par(mfrow=c(1,2))
  par(xpd=F)
# pierwszy wykres to analiza gradacyjna
# dla jednowymiarowych danych  
  plot(c(0,cumsum(zm1r[,1])),c(0,cumsum(zm2r[,1])),type="b",pch=19,xlab=osX,ylab=osY)
  abline(0,1,col="grey")
  par(xpd=NA)
# korekta na zachodzace etykiety
  odleglosci <- sqrt(diff(c(0,cumsum(zm1r[,1])))^2+diff(c(0,cumsum(zm2r[,1])))^2)
  korekta    <- numeric(length(odleglosci))
  for (i in seq_along(korekta)) {
      if (odleglosci[i] < cutoff) 
          korekta[i] <- cutoff + korekta[i-1]
  }
  text(cumsum(zm1r[,1])+korekta+2*cutoff,cumsum(zm2r[,1])+korekta-2*cutoff,rownames(zm1r), srt=-45, adj=c(0,0),cex=cex.text)
  text(cumsum(zm1r[,1])+korekta-2*cutoff,cumsum(zm2r[,1])+korekta+2*cutoff,paste(round((1/iloraz[,1]-1)*1000)/10," %",sep=""), srt=-45, adj=c(1,1),cex=cex.text)
  par(xpd=F)
# drugi wykres to klasyczny wykres rozrzutu
  plot(1,type="n",log="xy",xlim=skala,ylim=skala, las=1, cex.axis=0.8, xlab=osX, ylab=osY)
  abline(0,1,col="grey")
  abline(h=c(0.0001*c(1,2,5),0.001*c(1,2,5),0.01*c(1,2,5),0.1*c(1,2,5)),col="grey95")
  abline(v=c(0.0001*c(1,2,5),0.001*c(1,2,5),0.01*c(1,2,5),0.1*c(1,2,5)),col="grey95")
  points(zm1r[,1],zm2r[,1],pch=19)
  par(xpd=NA)
  text(zm1r[,1],zm2r[,1],rownames(zm1r), srt=-45, adj=c(-0.1,-0.1),cex=cex.text)
  par(xpd=F)
}
 
# zbieramy dane kto co uwazal za istotne w zyciu w roku 2005 i 2009
zb1 <- colSums(diagnozaOsoby2011[,paste("cp2_",1:14,sep="")]=="TAK",na.rm=T)
zb2 <- colSums(diagnozaOsoby2011[,paste("cp2_",1:14,sep="")]=="NIE",na.rm=T)
zb3 <- colSums(diagnozaOsoby2011[,paste("ep2_",1:14,sep="")]=="TAK",na.rm=T)
zb4 <- colSums(diagnozaOsoby2011[,paste("ep2_",1:14,sep="")]=="NIE",na.rm=T)
# etykiety, co jest wazne w zyciu
etykiety <- c("PIENIADZE", "DZIECI", "UDANE MALZENSTWO", "PRACA", "PRZYJACIELE", "OPATRZNOSC, BOG", "POGODA DUCHA, OPTYMIZM", "UCZCIWOSC", "ZYCZLIWOSC I SZACUNEK OTOCZENIA", "WOLNOSC, SWOBODA", "ZDROWIE", "WYKSZTALCENIE", "SILNY CHARAKTER", "INNE")
# tabela opisujaca ktora wartosc ile osob zaznaczylo lub nie w wymienionych powyzej latach
dane <- data.frame(TAK2005 = zb1, NIE2005 = zb2, TAK2009=zb3, NIE2009=zb4)
rownames(dane) <- etykiety
zm1 <- dane[,1,drop=F]/dane[,2]
zm2 <- dane[,3,drop=F]/dane[,4]
 
plotGradeStat(zm1, zm2, osX="rok 2005", osY="rok 2009", skala=c(0.001,0.5),cutoff=0.01)

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
library(XML)
#
# funkcja readHTMLTable wyciaga tabele z danymi z pliku HTML
cancerdata <- readHTMLTable('http://www.guardian.co.uk/commentisfree/2011/oct/28/bad-science-diy-data-analysis', which=1)
colnames(cancerdata) <- c('Area','Rate','Population','Number')
for (i in 2:4) cancerdata[,i] <- as.numeric(as.character(cancerdata[,i]))
 
> # zobaczmy podsumwoanie wczytanych danych
> summary(cancerdata)
            Area          Rate         Population          Number      
 Aberdeen     :  1   Min.   : 9.16   Min.   :  31332   Min.   :  6.00  
 Aberdeenshire:  1   1st Qu.:15.22   1st Qu.: 140110   1st Qu.: 24.00  
 Adur         :  1   Median :17.44   Median : 189202   Median : 32.00  
 Allerdale    :  1   Mean   :17.64   Mean   : 224741   Mean   : 39.61  
 Amber Valley :  1   3rd Qu.:19.89   3rd Qu.: 267794   3rd Qu.: 45.00  
 Angus        :  1   Max.   :31.09   Max.   :1268959   Max.   :251.00  
 (Other)      :373

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.

1
2
3
4
5
6
7
8
library(lattice)
#
# wykres czestosci zachorowan od rozmiaru populacji
ktoreZNazwy <- with(cancerdata, Population^0.25 * Rate > 560 | Rate >= 27)
xyplot(Rate~Population, data = cancerdata, pch=19, col="red", panel=function(...) {
	panel.xyplot(...)
	with(cancerdata, ltext(Population[ktoreZNazwy], Rate[ktoreZNazwy], Area[ktoreZNazwy], cex=0.8, adj=c(0,-0.5)))
})

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.

 

Bilion miliardów a Tufte

Europa gasi pożar olbrzymią ilością wirtualnych pieniędzy (niestety pożar nie jest wirtualny, ale to temat dla innego bloga).
Rzeczpospolita (nomen omen, której infografiki dosyć lubię) artykuł o ratowaniu sytuacji finansowej w Europie (tutaj link do artykułu) okrasiła takim oto wykresem

 

Jaki jest problem z tym wykresem? To, że zgodnie z opisem dane są w miliardach a na rysunku pojawia się słowo bilion, które sugeruje że potencjalne zasoby będą wynosiły miliard bilionów, to już pomijam.

Klasyczny problem z takimi wykresami polega na tym, że nie jest jasne czy podanym liczbom odpowiada wysokość, szerokość czy pole graficzki.

Pomiar średnicy bilionowej monetki daje 190px, pomiar średnicy drugiej co do wielkości monetki daje 125px. A więc to pole odpowiada podanej liczbie.

Szkoda, bo jak się okazuje ludzie bardzo niedokładnie potrafią porównywać pola figur, gorzej jest już tylko z objętościami. Najlepiej porównuje się długości odcinków w poziomie (przynajmniej zgodnie z badaniami Tufty’ego).

Więc zróbmy wykres w R tych samych liczb, ale bez fajerwerków.

I kod R który ten wykres wygenerował

 

1
2
3
4
5
6
7
8
9
10
x <- c(106.4, 376, 440, 1000, 74.1)
par(mar=c(5,20,3,3))
plot(1,type="n", las=1, yaxt="n",ylab="", xlab="nakłady w mld euro",xlim=c(0,1000), ylim=c(0.5,5.5), bty="n")
sapply(1:5, function(i) lines(c(0,x[i]),c(i,i)))
abline(v=seq(100,1000,100),col="grey95")
abline(v=0)
points(x, 1:5, pch=19)
mtext(side=2,line=-1.5,at=1:5, c("potrzeby kapitalowe bankow w Europie", 
     "pozyczki udzielone Portugali Irlandi Grecji", "dotychczasowe zasoby Europejskiego Funduszu Stabilnosci", 
     "potencjalne zasoby Europejskiego Funduszu Stabilnosci", "rezerwy walutowe Polski na koniec X 2011"), las=1, cex=0.9)