#debataACTA, twitteR, Twitter i R

Zaczęło się niewinnie. Dwa tygodnie temu kolega Grzesiek P. powiedział, że analizę nastawienia (ang. Sentiment analysis) na dużych ilościach tekstu robi się banalnie. Tydzień temu kolega Paweł Ch. powiedział, że API twittera ma limit do 70 zapytań na minutę. W piątek przy okazji rozmowy o raporcie ,,Obiegi Kultury” Alek T. zapytał mnie czy mam doświadczenie w analizie danych z Twittera bo chętnie zobaczyłby się działo na kanale (moje autorskie tłumaczenie hashtaga) #debataACTA. Ponieważ nie interesowałem wcześniej się ani analizą nastawienia, ani API twittera ani hashtagami, stwierdziłem, że warto zobaczyć co w trawie ćwierka.

Tak się składa, że dzięki Jeffowi Gentry’emu API Twittera jest łatwo dostępne z poziomu R. Wystarczy załadować pakiet twitteR i kilka prostych funkcji pozwala na łatwą interakcję z ćwierkami z serwisu Twitter.com (ok, dalej będę używał tłumaczenia ,,wiadomościami”).

Zobaczmy prosty przykład.

Ten pakiet ma te same ograniczenia co API, czyli 70 zapytań na minutę. Ale każde zapytanie to 25 wiadomości, a więc w sumie możemy ściągnąć do 1500 wiadomości na minutę.

Prostą pętlą, z pewną pomocą internetu, zebrałem wpisy z Twittera z okresu od 4 do 12 lutego 2012 zawierające etykietę #debataACTA. po oczyszczeniu zapisałem je w postaci pliku csv, który można pobrać z adresu tutaj.

Mamy więc dane, przyjrzyjmy się im. Do tematu analizy nastawienia podejdziemy w piątek, a dziś przyjrzyjmy się jak wyglądała aktywność ćwierkających. Na rysunku 1 można zobaczyć ile wpisów pojawiało się z tą etykietą. Temat jak widać skończył się z samą debatą. Na rysunku 2 można zobaczyć bliżej interesujący okres liczby wiadomości nadczas trwania debaty. Rzuca się w oczy szczególnie ta chwila ciszy przed burzą.

[Rysunek 1. Liczba wiadomości zawierających etykietę #debataACTA na godzinę. Kliknij by powiększyć.]

[Rysunek 2. Liczba wiadomości zawierających etykietę #debataACTA na 5 minut (debata rozpoczęła się po godzinie 14). Kliknij by powiększyć.]

Gdyby ktoś chciał sprawdzić o czym mówiono w której minucie to komentarze z znaczkami synchronizacyjnymi znaleźć można np. tutaj.

W sumie mamy ponad 6.5 tysiąca wiadomości. Zobaczmy kto je pisał. Zamiast wpisywać ksywy ćwierkających pokażę ilu z nich generuje odpowiedni procent wszystkich wiadomości.

[Rysunek 3. Na osi y przedstawiono liczbę wiadomości wygenerowanych przez X najaktywniejszych użytkowników. Okazuje się, że 7% piszących (dokładnie 72) generuje 50% wiadomości. A tylko 2% (dokładnie 21) generuje 25% wszystkich wiadomości. Kliknij by powiększyć.]

Ściągnęliśmy dane, zobaczyliśmy podstawowe podsumowania, czas zabrać się za analizę nastawienia. Więcej na ten temat w piątek (muszę ją jeszcze zrobić) a dzisiaj zakończę podsumowaniem z procentowym udziałem wiadomości zawierających ikonę buźki (;-), ;), :-), :))) itp).

[Rysunek 4. Procentowy udział wiadomości zawierających buźkę. Kliknij by powiększyć.]

Jak widać przez pierwsze dwie godziny debaty nie było ćwierkającym do śmiechu.

Kim są eksperci Narodowego Centrum Nauki?

Pieniędzy na naukę w Polsce jest mało (jeżeli porównać z zachodnimi sąsiadami), dlatego dzielenie tych pieniędzy budzi zazwyczaj emocje i burzliwe dyskusje. W przypadku pierwszego konkursu grantowego organizowanego przez NCN (Narodowe Centrum Nauki) tych emocji było sporo, krytykowano miedzy innymi wybór recenzentów i ekspertów. Tak się złożyło, że NCN nie ujawniło listy recenzentów ale ,,prawie” ujawniło listę ekspertów. Piszę ,,prawie” ponieważ lista ekspertów przedstawiona na tej stronie jest bez podziału na panele, przez co mało użyteczna. W prasie znaleźć można pojedyncze głosy (jak np ten) przekonujące czytelnika, że eksperci mają znaczący dorobek, ale te informacje dotyczą jednego panelu i bez nazwisk trudno je zweryfikować.

Więc plan na ten tydzień to przyjrzenie się bliżej ekspertom NCN. Nie mam zamiaru oceniać osób, ponieważ w wielu przypadkach ich dorobek jest o rząd lub rzędy wielkości większy niż mój, chciałbym jedynie pokazać jak wygląda dorobek ekspertów z rożnych dziedzinach. Ponieważ dane zbierane były automatycznie więc podczas zbierania zdarzyć się mogło, że komuś niedoszacowano albo przeszacowano. Dlatego nie ma sensu oceniać jednostek, ale można przyjrzeć się całej populacji. Mam nadzieję, że informacje o dorobku ekspertów będą użyteczne nie tylko w kontekście konkursów NCN, ale też młodym ludziom dadzą wyobrażenie jak wyglądają dorobki osób w kraju uznanych. Koniec końców, do wykonania tych wizualizacji użyłem danych z trzech źródeł, z których każde starało się dostęp do danych ograniczyć, więc samo wyciąganie danych było dobrą zabawą.

Skąd są dane ?

Informacje o imionach i nazwiskach ekspertów wyciągnięte są z tego dokumentu.

Aby nie analizować ekspertów z różnych dziedzin w jednym worku z bazy danych Ludzie Nauki OPI wyciągnąłem informację o dziedzinie w której pracują eksperci (około 4% osób nie udało mi się jednoznacznie zidentyfikować ponieważ kilka osób ma identyczne imię, nazwisko i tytuł). Należy podkreślić, że dziedzina wskazana w bazie OPI nie musi mieć nic wspólnego z panelem w którym ekspert zasiadał. Dzięki podziałowi na dziedziny unikniemy mieszania humanistów ze ścisłowcami.

Mała modyfikacja programu Publish or Perish (zobacz tutaj) pozwoliła na ściągnięcie informacji o g-liczbie cytowań, g-liczbie publikacji i g-h-indeksie oszacowanych na bazie Google Scholar. Piszę g-* ponieważ ta wyszukiwarka ma tendencje do zawyżania wskaźników. Jest jednak łatwym do weryfikacji punktem odniesienia.

Co w danych piszczy?

Dzisiejszy wpis to rozgrzewka opisująca jakie dane są zebrane. Dzisiaj będzie mnie interesowało to jaki stopień naukowy i jakie dziedziny znajdziemy wśród ekspertów. Przyszłe analizy liczby cytowań i h-indeksu będziemy przeprowadzać osobno dla każdej z dziedzin.

Rozkład stopni naukowych wśród ekspertów jest następujący:
prof. dr hab. (298), dr hab. (87), prof. dr hab. inz. (76), dr hab. inz. (26), dr (13), ks. dr hab. (3), dr inz. (3), prof. (2), ks. prof. dr hab. (2), przew. kwal. II (1), prof. przew. kwal. II (1), prof. dr inz. (1), prof. dr hab. przew. kwal. I (1), o. prof. dr hab. 1.
Zobaczmy jak te liczby wyglądają w rozbiciu na dziedziny.

[Update: Przedstawiona jest poniżej wersja rastrowa, po kliknięciu na wykres otworzy się wersja wektorowa, skalowalna, znacznie lepiej wyglądająca.]

Rysunek 1. Dziedziny w których pracują eksperci NCN. W kolejnych wierszach przedstawiono dziedziny KBN w których pracują eksperci. Ponieważ są eksperci pracujący w kilku dziedzinach, więc suma wszystkich liczb w nawiasach jest większa niż liczba ekspertów. Najczęściej współwystępujące pary dziedzin połączone są linią po prawej stronie. Po lewej stronie kolorami oznaczono skład tytułów i stopni ekspertów z danej dziedziny. Jaśniejsze kolory odpowiadają osobom bez inżyniera, ciemniejsze osobom z inżynierem. Osoby ,,tylko” z habilitacją są zaznaczane na zielono, profesorowie na niebiesko.

Wszystkich dziedzin jest sporo, ale dla części jest niewielu reprezentantów, przez co w dalszych analizach skoncentrujemy się na najliczniejszych dziedzinach do socjologi włącznie.

Dziś pokażę jeszcze rozkład płci ekspertów w każdej z dyscyplin.

Rysunek 2. Rozkład płci ekspertów NCN w rozbiciu na dziedziny.

 

Ceny używanych aut po nowym roku a prosty pająk sieciowy

Trzy miesiące temu opisywałem zbiór danych o ofertach sprzedaży samochodów z serwisu otomoto.pl (zobacz tutaj). Po kwartale ponownie zebrałem informacje o ofertach sprzedaży. Porównując te dwa zbiory będzie można sprawdzić jak zmieniają się ceny różnych modeli w odpowiedzi na podwyższoną akcyzę na olej napędowy. Kolejne interesujące pytanie to globalna zmiana cen aut używanych w ,,czasach kryzysu’’. Interesujący będize trend zmian w liczbie ofert samochodów sprowadzanych z zagranicy. Efekt starzenia się auta, z dnia na dzień auto staje sie o rok starsze, ciekawe czy dla aut używanych wiek w latach ma duzy wpływ na cenę auta.

Nowy zbiór danych jest dostępny w postaci csv i Rdata pod tym adresami [csv 80Mb], [Rdata 5,5 MB].

Skrypt wczytujący dane bezpośrednio z Internetu do R znajduje się tutaj.

 

Ponieważ ostatnio pojawiały się pytania o skrypty użyte do parsowania stron interntowych i zbierania automatycznego danych, więc do tych danych dołączam wszystkie skrypty potrzebne do ich zebrania i przetworzenia. Poniżej krótko je opiszę. Wykorzystuję tutaj głównie Perla i wyrażenia regularne pozwalające na łatwe i szybkie parsowanie tekstu. Z pewnością istnieją lepsze (łatwiejsze) sposoby parsowania stron HTML, chętnie usłyszę sugestie.

W moim rozwiązaniu proces zbierania danych jest dwuetapowy. Pierwszy etap to przejrzenie hierarchicznej struktury ofert sprzedaży samochodów oraz zapisanie z każdej oferty wybranych pól. Dodatkowo należy zatroszczyć się o to by to samo auto nie zostało dwukrotnie dodane do listy aut. Ponieważ parsowanie 200 tys ofert trochę trwa, a tym czasie do serwisu dodawane są nowe oferty, więc potrzebna jest dodatkowa tablica haszująca pamiętająca, które auta zostały już przetworzone. Skrypt perlowy, który wykorzystałem w tym celu znajduje się tutaj [skrypt perl]. Plik wynikowy, z zebranymi danymi znajduje się tutaj [surowe dane po pierwszym etapie 140MB].

Ponieważ dla różnych ofert sprzedaży  przedstawiane są różne charakterystyki, niektórych opisów brakuje, niektóre parametry są w różnych formatach, dlatego też w drugim kroku wykorzystuję skrypt R obrabiający surowe dane i przekształcający je do postaci tabelarycznej, łatwiejszej w obróbce. Przy okazji cena aut w walucie przeliczana jest na PLN, liczona jest pojemność skokowa, moc i inne parametry, które w surowych danych sa zapisane w formacie tekstowym. Skrypt użyty do transformacji znajduje sie tutaj [skrypt r], a plik wynikowy znajduje się tutaj [plik csv].

Smacznego!

 

O czym się mówi w Sejmie i Senacie

Kontynuując wpis sprzed dwóch dni, dziś będzie o Sejmie i Senacie. Interesującym portalem nawiązującym do tematu smart voting jest Sejmometr (http://sejmometr.pl/). Umożliwia on obserwowanie prac Sejmu i Senatu. Niebawem dostępne będzie API pozwalające na automatyczny dostęp do zbieranych w ramach tego projektu danych. W bardzo estetyczny i łatwy w nawigacji sposób przedstawione są informacje o posłach i senatorach, ich wypowiedzi, wyniki głosowań itp. Bardzo ciekawy portal dla osób chcących być naprawdę na bieżąco.

Rzecz której mi brakuje to spojrzenie na prace sejmu ,,z lotu ptaka’’. Agregaty pozwalające na orientację co się działo przez ostatnie pół roku/dwa lata. Rozwiązania w stylu chmura tagów, z informacjami jakie tematy są najczęściej poruszane albo analiza częstości słów byłoby mile widziane. Tagi mogłyby być generowane automatycznie lub jeszcze lepiej, użytkownicy portalu mogliby otagowywać wystąpienia posłów. Poczekajmy więc na API i zobaczymy co w tym temacie można zrobić.

A w międzyczasie pokażę przykład analizy danych pochodzących ze stenogramów, z lotu bardzo wysoko latającego ptaka. Punktem wyjścia są dane z Korpusu Języka Polskiego (http://korpus.pl/), projektu rozwijanego przez IPIPAN. Wiele tekstów zostało poddanych analizie w ramach tego korpusu, między innymi stenogramy z posiedzeń Sejmu i Senatu. Dla każdego z posiedzeń, dla każdego (ok., dla większości) wypowiedzianego słowa przypisano odpowiedni fleksem, czyli jedną z ponad dwudziestu klas gramatycznych. Więcej informacji o fleksemach znaleźć można np. tutaj. Mamy więc zbiór danych dla 65 milionów słów wypowiedzianych przez 4 kadencje Sejmu i 4 kadencje Senatu z informacją do której klasy fleksyjnej (których klas) należy to słowo. Możemy teraz z takiego zbioru danych policzyć tablice rozdzielczą (krzyżową, kontyngencji, zwał jak zwał) z informacją w której kadencji Sejmu i Senatu padło ile słów z odpowiedniej klasy fleksyjnej (opisującej formę i znaczenie słowa). Tę tablicę liczb (27 x 8) umieściłem w pakiecie PBImisc programu R w zbiorze danych SejmSenat. Jak znaleźć wzorce w takiej tablicy 217 liczb? Użyjemy do tego celu analizy odpowiedniości / analizy korespondencji. Analiza ta pozwala na określenie, które wiersz (fleksemy) i kolumny (kadencje Sejmu i Senatu) mają podobne profile używalności słów a również które wiersze / kolumny współwystępują częściej niż wskazywałaby na to częstość występowania w języku. Trochę więcej o stronie technicznej później, a na razie zobaczmy wyniki analizy korespondencji na zbiorze danych o używalności klas fleksyjnych w stenogramach  Sejmu i Senatu.

[Rys. 1. Czerwone strzałki odpowiadają profilom stenogramów z posiedzeń Sejmu Senatu, niebieskie punkty odpowiadają profilom używalności fleksemów. Im bliższe zwroty tym większa zależność pomiędzy profilami. W analizie usunięto fleksem interp, ponieważ bardzo odstawał od pozostałych. Wersja png znajduje się tutaj. Warto ten wykres powiększyć by zobaczyć gdzie są jakie fleksemy, na szczęście jest to grafika wektorowa.]

Osie pozioma i pionowa odpowiadają dwóm automatycznie znalezionym komponentom. Tak się jednak składa, że te komponenty mają naturalną interpretację, którą łatwo odczytać z wykresu. Pierwszy komponent (oś pozioma) odpowiada za zmiany w używalności fleksemów pomiędzy Sejmem a Senatem. Im wyższa wartość pierwszej składowej, tym profil używalności bardziej charakterystyczny dla stenogramów z Senatu. Drugi komponent odpowiada za zmianę w używalności fleksemów z czasem, im wyższa wartość drugiej składowej tym profil bardziej charakterystyczny dla starszych  posiedzeń.

Pięknie. Skoro osie mają taką naturalną interpretację, to zobaczmy jakie fleksemy są częściej używane w Sejmie, a które w Senacie, które były częściej używane kiedyś a które obecnie.

Na osi poziomej dwa interesujące fleksemy to np. num i depr. Num to skrót od ,liczebnik główny’ a depr to skrót od rzeczownik deprecjatywny (najczęściej używany do oceny negatywnej).  To co można więc z wykresu łatwo odczytać (i sprawdzić ręcznie w tablicy kontyngencji) to, że w stenogramach z Senatu częściej występują liczebniki niż w stenogramach z Sejmu, widać więcej mówi się o liczbach, konkretach. W stenogramach z Sejmu częściej występują rzeczowniki w znaczeniu deprecjatywnym, widać atmosfera jest gorętsza.

Na osi pionowej interesujące fleksemy to np. winien i będzie. Skrót ‘winien’ odpowiada słowom typu ,winien’, ‘powinien’ itp., skrót ‘bedzie’ odpowiada przyszłej formie czasownika być. Kiedyś jak widać częściej w Sejmie i Senacie mówiło się o tym jak być powinno, tendencja jest tak aby częściej mówić o tym jak będzie.

Podsumowując. Można z danych o stenogramach szukać trendów widocznych w większej skali czasowej. Potrzebujemy tylko dostępu do przetworzonych stenogramów i pomysłu na to czego w tych stenogramach szukać.

W programie R jest kilka pakietów do analizy korespondencji, np., pakiet ca i anacor, można o nich przeczytać np. tutaj (pakiet anacor, pakiet ca). W tych artykułach przedstawione są zarówno  podstawy matematyczne jak i przykłady zastosowań. Technicznie, podobnie jak dla PCA, bazuje się na dekompozycji SVD, ale oczywiście ważne jest co chcemy dekomponować.

Kod R wraz z dokładniejszymi wynikami analizy korespondencji znajduje się tutaj.

 

 

Wiek emerytalny, myślenie kategoriami przyszłości a moje szanse na zwiedzanie świata na emeryturze

Co jakiś czas opinia publiczna podgrzewana jest nowymi pomysłami na system emerytalny. Przy okazji różni eksperci przekonują, że zmiany są potrzebne (trudno się z tym nie zgodzić) a proponownay kierunek jest dobry lub niedobry, zależy już od eksperta (hmmm, opinie mieć łatwo, tym bardziej gdy nie jest ona związana z twardymi danymi). Czytałem kilka dni taki nasączony optymizmem artykuł. Polecam szczególnie rozdział ,,Myśleć kategoriami przyszłości’’ w którym autorka łagodzi obawy związane z podniesionym wiekiem emerytalnym  nadziejami na kilkuletnie wydłużenie się średniej życia (hmm, wydaje się że docieramy do pewnych granic) oraz argumentuje, że życie jest i będzie coraz łatwiejsze, przytaczając wiele argumentów za tym np. ,,że w końcu przybędzie tyle placówek opieki nad małymi dziećmi, że wszyscy chętni znajdą w nich miejsca’’  (ok, to tzw złośliwy cytat, ale wszystko wskazuje na to, że ujemny przyrost naturalny spowoduje, że kiedyś miejsc dla dzieci wystarczy, ale czy dla wszystkich chętnych? w to wątpię). Jasne jest, że ten system trzeba zmienić, ale nie ma co mydlić ludziom oczu, że zmiana będzie bezbolesna.

Ale do rzeczy. Pytanie, które mnie zastanowiło to jaka jest szansa, że ja (czy raczej moi rówieśnicy, statystyka nie odnosi sie do jednostek) dożyję wieku emerytalnego oraz na ile lat emerytury powinienem rozłożyć wszystkie planowane pdróże po świecie. Nie mogąc znaleźć odpowiedzi na to pytanie (eksperci w argumentach skupiają się osobach starszych, którzy o emeryturze myślą więcej niż przeciętny trzydziestolatek, ok trzydziestodwuatek) stwierdziłem, że jest to świetny argument aby wykonać kilka wizualizacji.

Na stronach GUS znaleźć można tablice trwania życia (dla roku 2010 tutaj). Można przy odrobinie chęci wyciągnąć ze stron 57-60 dane dotyczące trwania życia na rok 2010 (te dane w pliku tekstowym znaleźć można tutaj). Użyję tych danych aby zilustrować szansę moich rówieśników na dożycie emerytury (tj. 67 lat, choć nie wiadomo jak ten wiek się zmieni za 30 lat). Należy zaznaczyć, że tablice trwania życia zmieniają się w czasie. Tendencja jest taka, że długość życia  się wydłuża, choć wymaga to bardziej zaawansowanej opieki medycznej (wyższe wydatki na opiekę medyczną, zdrowszy tryb życia). Nie wiadomo jednak czy ten trend w Polsce się utrzyma czy nie. Opisując szanse dożycia emerytury, przyjmuję poniżej, że struktura umieralności się nie zmieni, jest to dyskusyjne założenie, ale coś założyć trzeba.

Ok, więc jednym z często przytaczanych argumentów jest to, że nawet mężczyźni w wieku 60 lat maja przed sobą jeszcze wiele (średnio 18) lat życia. Niestety łatwiej jest dożyć 100 lat gdy ma się już 99, zobaczmy więc jak wygląda oczekiwana średnia długość życia w zależności ile lat już przeżyliśmy. Wiek moich rówieśników zaznaczyłem kolorem czerwonym.

[Rys 1. Zielone linie (każda linia to jeden rocznik) przedstawiają oczekiwaną długość życia (koniec linii) w zależności od aktualnego wieku (początek linii). Na czerwono zaznaczyłem 32latków, średni oczekiwany czas życia to 73.46 lata]

 

Te wyniki dotyczą tylko mężczyzn, którzy żyją średnio krócej niż kobiety, ale bliższa ciału koszula…. Jeżeli ktoś chciałby wygenerować podobne wykresy dla kobiet, może skorzystać z kodów w R, które umieszczone są na stronie tutaj.

No cóż, średnio będę na emeryturze ponad 7 lat. Przy czym średnia to dosyć kapryśna miara. I w tym przypadku nic nie mówi (tz może i jest przydatna by policzyć oczekiwane wydatki państwa, ale z perspektywy trzydziestodwulatka to wciąż nic nie wiemy).

Więc zamiast średniej zobaczmy jakie jest prawdopodobieństwo, że  moi rówieśnicy dożyją emerytury albo że przeżyją 10 lub 20 lat na emeryturze.

 

[Rys 2. Funkcja przedstawiająca prawdopodobieństwo (oś y) dożycia wieku x (oś x) dla mężczyzn mających dziś 32 lata. Na niebiesko zaznaczono punkty odpowiadające wiekowi 67, 77 i 87 lat.]

Hmm, prawdopodobieństwo, że nie dożyję emerytury to 1:4, a że dożyję to 3:4 (mniej więcej, nie ma co kłócić się o 2%). Prawdopodobieństwo spędzenia 10 lat na emeryturze to 1:2, można by rzucić monetą, choć trudno uzasadnić, że wynik rzutu monetą jest skorelowany z długością życia.

Pointa? Nie ma co czekać do emerytury na zwiedzanie świata.

 

Zobaczmy jeszcze jakie są szanse dożycia do emerytury nowonarodzonych chłopców.

 

[Rys 3. Opis jak Rys 2 ale przedstawia prawdopodobieństwa dla nowonarodzonych chłopców.]

 

Polskie ogonki a iconv()

Napisał do mnie maila Krzysztof T. z informacją, że strona kodowa windows-1250, którą zakodowałem polskie znaczki w zbiorze danych Diagnoza Społeczna źle wygląda pod Linuxami.

Zmieniłem więc pliki z danymi usuwając znaki diaktrytyczne. Można też było zmienić kodowanie na UTF-8, ale usunięcie ogonków gwarantuje zgodność z każdym systemem operacyjnym.

Do zmiany kodowania w programie R można użyć funkcji iconv(), która wykorzystuje specyficzne dla systemu narzędzia do konwersji. Listę obsługiwanych stron kodowych wyświetla funkcja iconvlist().

Poniżej przykładowy kod R który usuwa znaki diaktrytyczne ze zbioru danych diagnozaOsoby2011. Podanie argumentu to=”UTF-8″ spowodowałoby konwersje do formatu UTF-8. W systemie Windows od wersji R 2.11 aby usunąć ogonki należy podać argument to=”ASCII//TRANSLIT”, pod innymi systemami wystarczy to=”ASCII”.

 

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.

 

Diagnoza Społeczna 2011

Diagnoza społeczna to badanie prowadzone przez radę monitoringu społecznego od roku 2000. Więcej informacji o tym badaniu można znaleźć na stronie http://diagnoza.com/. Jest to badanie panelowe, dane zbierane są co 2-3 lata. Niedawno pojawiły się dane  z edycji 2011. Badane jest bardzo wiele parametrów, można naprawdę prześledzić co ciekawego działo się w Polsce przez ostatnie 11 lat. Te dane nadają się świetnie na ćwiczenia ze statystycznej analizy danych dla studentów i nie tylko. Tydzień temu Paweł Teisseyre z IPIPANu używał tego zbioru danych do demonstrowania regularyzowanej wersji regresji logistycznej w R na WZUR 4.0.

Dane są publicznie dostępne. Niestety na stronie projektu dane są w postaci plików programu SPSS. Na potrzeby tego bloga zostały przekonwertowane do formatu programu R.

Katalog z danymi znajduje się tutaj.

Dane podzielone są na dwa zbiory, z opisem gospodarstw domowych i opisem osób o wieku ponad 16 lat zamieszkujących w tych gospodarstwach.

Dane o gospodarstwach można ściągnąć w postaci pliku RData, pliku w formacie csv oraz pliku z opisami kolumn, w zbiorze danych jest 20655 wierszy i 1820 kolumn.

Dane o osobach  można ściągnąć w postaci pliku RData, pliku w formacie csv oraz pliku z opisami kolumn, w zbiorze danych jest 65373 wierszy i 2427 kolumn.

Skrypt wczytujący dane dostępny jest tutaj.

Na stronach projektu znaleźć można obszerne raporty które na kilkuset stronach prezentują tysiące wniosków i dziesiątki rysunków. Postaram się w najbliższej przyszłości umieścić kilka celowanych wizualizacji tak by na jednym rysunku upakować całą historię. Jeżeli studenci coś ciekawego na tym zbiorze danych zrobią to też dodam do bloga.

 

Cytowanie:   Rada Monitoringu Społecznego (2011). Diagnoza społeczna: zintegrowana baza danych. www.diagnoza.com 20-X-2011;

 

Zbiór danych o cenach ofertowych aut z 1 października 2011

Kilka dni temu napisałem mały skrypt w perlu, który zbiera dane o ofertach sprzedaży samochodów z serwisu otomoto.pl.

W sumie przez kilka godzin udało się zgromadzić zbiór danych o prawie 200 tys ofertach sprzedaży auta. Katalog z danymi znajduje się tutaj. Link do programu R który wczytuje te dane znajduje się tutaj. Uwaga! plik tekstowy z danymi to 75MB.

Dla każdej oferty zebrane są takie cechy jak: cena, marka, model, wersja, moc, silnik, liczba drzwi,  rodzaj paliwa, deklarowany przebieg, rok produkcji, opis, wyposażenie, kraj pochodzenia, kolor itp.

Myślę, że to bardzo ciekawy zbiór danych. Proste podsumowania przedstawione w pliku wczytującym dane pokazują np. że prawie 1/4 z tych aut pochodzi z Niemiec. Cztery najczęściej oferowane modele to Passat (7tys ofert), Golf (6.3tys ofert), Astra (6tys ofert) i Focus (5.2tys ofert). Ciekawie będzie zobaczyć jak ceny tych aut zmieniają się w zależności od wersji, roku produkcji, przebiegu, wyposażenia. Może nawet uda się zbudować coś konkurencyjnego do eurotaxu.

 

Zbiór danych opisujący głosowania posłów VI kadencji

Dziś bardzo smakowity zbiór danych. Wybory za kilka dni więc mam nadzieje, że uda się przed wyborami przygotować jeszcze jakąś wizualizacje.

Ale od początku. Kilka dni temu znalazłem blog  Januarego Weinera na którym autor umieścił interesująca analizę danych o głosowaniach posłów VI kadencji. Link do tego wpisu jest tutaj: http://biokompost.wordpress.com/2011/10/01/statystyczna-mapa-sejmu/. Znajdziecie na tym blogu kilka interesujących wizualizacji, głównie badających na ile podobnie głosowali rożni posłowie. Jest też filmik pokazujący zmiany w czasie, wszystko z użyciem podstawowych technik redukcji wymiaru więc warto przeczytać.

Zapytałem Januarego o te dane i wczoraj je dostałem. Mamy więc pierwszy zbiór danych, którego sam nie zebrałem, mam nadzieje że to pierwszy z wielu. Dane są jak już wspomniałem super ciekawe, zostały wyciągnięte ze strony orka.sejm.gov.pl a następnie wyczyszczone. Skrypt R wczytujący te dane znajdziecie tutaj. Katalog z danymi w postaci tekstowej znajdziecie tutaj. Wizualizacje dotyczące tego zbioru pojawią się wkrótce.

Btw: w rozwiniętych demokracjach rząd udostępnia dane dotyczące głosowań w postaci łatwo dostępnej (czyli nie kolekcja pdf’ów), dotyczące prac nad ustawami it. Dane udostępnia i wykonuje jakieś wstępne analizy, np: http://www.govtrack.us/congress/repstats.xpd.