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.

 

 

Czym jeżdżą nasi wybrańcy, czyli rzut okiem na oświadczenia majątkowe połów i senatorów

Dzisiejszy wpis ma zawierać będzie trzy elementy, obywatelski, humorystyczny i techniczny.

Element obywatelski:

Jakiś czas temu przedstawiłem kilka wizualizacji danych dotyczących głosowań posłów z poprzedniej kadencji (dot glosowań,dot głosowań 2). Podsumowania przebiegu obrad sejmu to ważna sprawa, podsumowanie pracy posłów również. Zamiast pokazywać kto ile pieniędzy wydał na diety i paliwo może lepiej byłoby zbadać czy dany poseł na to paliwo i diety zapracował. Mało kto ma tyle czasu i zaparcia by czytać stenogramy z obrad, nawet podsumowania każdego z głosowań ilu za ilu przeciw to również nudnawa lektura. Z drugiej strony warto wiedzieć nad czym pracują nasi wybrańcy i kto jakie poglądy reprezentuje. Nie tylko od święta gdy podgrzewa się opinię publiczną debatą na temat definicji życia. Są na szczęście portale i stowarzyszenia działające w temacie tzw. smart voting. Jak by tego nie tłumaczyć tego terminu, ich celem jest przybliżenie działalności sejmu i senatu zwykłym ludziom po to by Ci lepiej wybierali w kolejnych wyborach lub po prostu tworzyli presję. Jedna z takich organizacji to stowarzyszenie art.61 (http://art61.pl/) prowadzące obywatelski portal informacyjny ,,Mam prawo wiedzieć’’ (http://mamprawowiedziec.pl). Jakiś czas temu otrzymałem od nich dwa zbiory danych, jeden dotyczył poglądów kandydatów a drugi oświadczeń majątkowych złożonych przez posłów i senatorów z poprzedniej kadencji. Ok, zastanówmy się co ciekawego można z takich danych pokazać.

Element humorystyczny:

Oświadczenia majątkowe nie są zbyt pasjonującą lekturą same w sobie. Można oczywiście skupić się na pokazaniu najbogatszych lub najbiedniejszych posłów ale nie ma w takim zestawieniu zabawy. Więc dziś zrobimy coś mniej poważnego ale bardziej zabawnego.

Zobaczymy jakie samochody posłowie i senatorowie zadeklarowali w ostatnim złożonym oświadczeniu majątkowym. Ponieważ oświadczenia wypisuje się ręcznie, portal ,,Mam prawo wiedzieć’’ poświęcił sporo czasu by te dane zdigitalizować do postaci nadającej się do dalszej obróbki. Nie sposób jednak uniknąć błędów i niespójności, poniższe wizualizacje dotyczą więc tylko dych oświadczeń w których udało się automatycznie zidentyfikować markę i model auta.

Na poniższej wizualizacji zaznaczono ile sumarycznie samochodów określonego modelu i marki zadeklarowali w oświadczeniach posłowie i senatorowie.

[Rys 1. Liczba aut określonych marek i modeli wskazanych w ostatnim oświadczeniu majątkowym przez posłów z 6 kadencji. Każdy prostokąt oznacza jedno auto. Szerokość i wysokość prostokąta jest proporcjonalna do rozmiarów auta. Jeżeli nie wyświetla się wersje svg zobacz tutaj wersję png.]

[Rys 2. Liczba aut określonych marek i modeli wskazanych w ostatnim oświadczeniu majątkowym przez senatorów z 7 kadencji. Każdy prostokąt oznacza jedno auto. Szerokość i wysokość prostokąta jest proporcjonalna do rozmiarów auta. Jeżeli nie wyświetla się wersje svg zobacz tutaj wersję png.]

 

Element techniczny:

Kod źródłowy użyty do wygenerowania tych rysunków znajduje się tutaj.

Dane do analizy zostały przekazane jako pliki Excelowe, po jednym na jednego posła/senatora (łącznie ponad 570 plików Excelowych). Pliki takie są czytelne dla człowieka ale do automatycznego przetwarzania nadają się tak sobie (różna liczba wierszy i kolumn, posklejane komórki, kolory, różne standardy oznaczania samochodów, różne informacje podawane nt. samochodu). Zazwyczaj do odczytania danych z plików w formacie xls używa się funkcji read.xls(). Ta funkcja jest dostępna w pakiecie xlsReadWrite, który wykorzystuje zewnętrzną bibliotekę dll napisaną w Delphi do odczytywania plików xls, oraz w pakiecie gdata, który wykorzystuje moduły Perla do konwersji formatu xls do formatu csv a później odczytuje dane przez funkcję read.csv. Niestety w przypadku otrzymanych plików żadna z tych funkcji nie dawała zadowalających wyników. W większości przypadków funkcje te odczytywały wyłącznie wartości NA. Najlepsze rozwiązanie udało się otrzymać z użyciem funkcji sqlFetch() i odbcConnectExcel() z pakietu RODBC. Do tego kilka różnych warunków i wyszukiwanie wzorców z użyciem funkcji grep() wystarczyło by zidentyfikować pole w którym w oświadczeniach majątkowych wpisane są posiadane samochody.

Kolejnym problemem jest niesamowita liczba literówek dotyczących wpisywanych nazw modeli aut. Np. w oświadczeniach posłów model Oktavia występował w 6 różnych formach łącząc różne możliwe wielkości liter oraz nazwę modelu zamiennie stosując litery c/k i w/v. Podobną liczbę wariantów uzyskała Corolla. Poza tym nazwy modeli i marek aut otoczone były różnymi informacjami, czasem o przebiegu, czasem o roku produkcji, czasem o wartości. Aby z tego morza tekstu wyłowić nazwy modeli wykorzystałem dane z allegro, które zebrałem jakiś czas temu (link). Można teraz szukać w tekście oświadczeń majątkowych słów, które przypominają nazwy modeli i marek znane z danych z allegro. Dzięki temu można odsiać większość śmieciowych słów a aby poprawnie odczytać większość modeli wystarczy juz tylko około 100 dodatkowych ręcznie wprowadzonych reguł.

Ostatnia rzecz dotyczy wielkości aut. Otóż stwierdziłem, że fajnie byłoby zaznaczyć jak duże są pokazywane auto. Nie każdy musi wiedzieć czy VW Polo jest większy czy mniejszy od Passata. Poza tym o ile dotąd czytelnik mógł zadawać sobie pytanie czy ta automatyzacja ma sens, czy nie lepiej byłoby przeczytać dane z oświadczeń i z użyciem ,,ludzkiego przetwornika’’ zbudować nową tabelkę z informacją o tym kto jakie auto ma, tak w sposób ręczny szukanie informacji o parametrach technicznych aut to prawdziwie syzyfowa praca. Więc napisałem mały programik parsujący strony www.motofakty.pl i odczytujący parametry techniczne różnych wersji i modeli aut. Na przedstawionej wizualizacji szary prostokąt oznacza wymiary 2m szerokości i 5m długości, a kolorowy prostokąt oznacza średnie wymiary danego modelu (parametry te różnią się dla rocznika i typu nadwozia).

Udało się uzyskać pełną automatyzację, dzięki której było łatwo wygenerować podobny wykres dla senatorów i będzie łatwo powtórzyć razem z nowymi oświadczeniami majątkowymi.

I żyli długo i szczęśliwie…

Kilka dni temu popełniłem wpis opisujący prawdopodobieństwo dożycia wieku emerytalnego. Przy okazji pojawiła się dyskusja nt. tego czy oczekiwana długość życia będzie się w Polsce wydłużała czy nie (zobacz ten wpis).
Łatwo być adwokatem optymistycznych jak i pesymistycznych scenariuszy, gdy opiera się wyłącznie na przypuszczeniach. Temat nie dawał mi spokoju, więc znalazłem dane na podstawie których zobaczmy jak wygląda  oczekiwana długość życia w Polsce i w innych krajach. Może zobaczymy czy istnieje i czy dotarliśmy do maksymalnej średniej życia a jeżeli tak to gdzie ona jest.

Dane z których korzystam pochodzą z bazy danych http://www.mortality.org/. W tej bazie danych dostępne są tablice życia i inne pochodne miary zebrane dla 37 krajów. Tablice życia są dostępne dla pewnej liczby ostatnich lat, dla różnych krajów długość tej historii jest różna. Najdłuższa historia jest dla Szwecji i sięga ponad 200 lat, dla Polski mniej więcej 50 lat.

Mając te dane zobaczmy co się dzieje z oczekiwaną długością życia w różnych krajach w ostatnich 50 latach (zbiór danych life expectancy). Zobaczmy wykres poniżej. W tym zestawieniu Polska charakteryzuje się najniższą oczekiwaną długością życia. Oczywiście są kraje w których żyje się krócej, ale nie znalazły się w tym zestawieniu. Ma to tę zaletę, że przed nami prawdopodobnie wydłużająca się średnia długość życia, nie widać na razie w tych prognozach sufitu. W większości krajów współczynnik wzrostu wynosi około 3 lat średniej życia na dekadę.

[Wersja png rysunku. Rys 1. Oczekiwane średnie życia mężczyzn dla wybranych 11 krajów w ostatnich 50 latach. ]
Dla niektórych krajów mamy dane ze znacznie większej liczby lat. Zobaczmy dla mniejszej grupy krajów jak wygląda zmiana oczekiwanej długości życia w szerszym przedziale czasu. Dynamika zmian długości życia jest różna w różnych krajach, w Szwajcarii czy Szwecji widać mniej więcej stały wzrost oczekiwanej długości życia.


[Wersja png rysunku. Rys 2. Oczekiwane średnie życia mężczyzn dla wybranych 5 krajów w ostatnich 140 latach. Kolory jak na Rys 1.]

Nie jestem zwolennikiem średnich i pracowania na wartościach oczekiwanych. Najchętniej zobaczyłbym do jakiego wieku dożywa 50% mężczyzn. To znacznie ciekawszy współczynnik, który można łatwiej zinterpretować. Problem jest tylko taki, że ponieważ taki ,,połowiczny rozpad’’ dla mężczyzn będzie wynosił około 70 lat więc by go policzyć dokładnie potrzebujemy danych z tablic życia wstecz o ponad 70 lat. Dla Polski takich danych nie mam, ale mam dla Szwajcarii. Na poniższym rysunku porównuję trzy współczynniki, mogące opisywać długość życia:

  1. Wiek jakiego dożywa 50% mężczyzn urodzonych w roku X
  2. Średni czas życia chłopców urodzonych w roku X

Co ciekawe jednak, współczynnik 1 jest wyższy niż pozostałe dwa. Dlaczego? Argument, który przychodzi do głowy jest taki, że długość życia to zmienna lewostronnie skośna. Tz. jest okres w którym najwięcej osób umiera (okolice 70 roku), ale znacznie więcej jest osób które umarło 65 lat wcześniej, niż 65 lat później. Dla skośnych rozkładów średnia nie pokrywa się z medianą, a w tym przypadku co jest ciekawe wiek którego dożyje 50% mężczyzn jest wyższy niż oczekiwany czas życia w chwili narodzin. Oczywiście w międzyczasie wydarzyły się dwie wojny światowe, które jakoś wpłynęły na skośność rozkładu czasu życia. Dla Szwajcarii jednak w mniejszym stopniu niż dla sąsiednich krajów. Do tego dochodzi wysoka śmiertelność najmłodszych. W prezentowanym okresie czasu w pierwszych dwóch latach życia umierało około 15% chłopców.

Pointa.: Nie dość że średnia życia rośnie, to ponad połowa mężczyzn będzie żyła dłużej niż ich oczekiwana długość życia.

Wreszcie coś optymistycznego na święta.


[Wersja png rysunku. Rys 3. Oczekiwany lub połówkowy czas życia mężczyzn w Szwajcarii. Na osi OX przedstawiłem dane dla których połówkowy czas życia czy średni czas życia mogłem policzyć na podstawie danych historycznych a nie szacować. Dlatego oś OX kończy się w okolicach roku 1920.]

 

Projekty, studenci, plagiaty, wizualizacje i R

Miało być o wizualizacji danych o diagnozie społecznej, ale będzie reklama pakietu nad którym pracuję.

Ale od początku. Co jakiś czas, średnio co semestr jakaś grupa moich studentów dostaje projekt polegający na wykonaniu wizualizacji wybranego zbioru danych w R. Jak dotąd pośród takich prezentacji można było znaleźć kilka rodzynków, czasami zaprezentowane są dosyć trafnie naprawdę ciekawe zależności. Wyniki z najnowszej wersji tego projektu niestety nie były tak rewelacyjne jak wyniki poprzednich roczników. Dlatego zamiast pokazać tutaj najlepsze z wykresów moich studentów, pokażę pakiet do wyszukiwania plagiatów który napisałem w poczekalni na lotnisku (ok, można było napisać kilka rzeczy efektywniej, nie jestem z aktualnej wersji zadowolony, po to ta wymówka).

 

Do rzeczy. Zadanie jest następujące. K zespołów studentów przygotowało wizualizacje i przesłała skrypty R generujące te wizualizacje. Studenci mogli pisać projekt w parach, dzięki temu poprawi się umiejętność współpracy wewnątrz zespołu i zmniejszy się liczba niechcianych współprac pomiędzy zespołami (niechcianych = nieudokumentowanych, o których prowadzący nie wie).

Wiele rzeczy można w R zrobić w jednej linii, ale nie wizualizacje. Bez względu na to jakiego pakietu używamy wykonanie dobrej wizualizacji oznacza dużo kodu i dużo czasu. Nie chodzi o to by jak najszybciej wygenerować wykres, ale żeby pokazać coś czego bez naszej wizualizacji nie widać na pierwszy rzut oka. Zazwyczaj nie mam problemu z plagiatami, szczęśliwie większość studentów jest bardzo samodzielna lub sprytniejsza niż ja. Ale w tym roku było inaczje.

Napisałem pakiet plagiat, który jest jeszcze w bardzo wczesnej wersji, ale można go ściągnąć ze tej strony. Można go też rozwinąć, gorąco do tego zapraszam. Funkcja parseAndPlot() z tego pakietu przyjmuje za argument listę plików tekstowych, dla każdej pary plików liczy długość najdłuższej wspólnej podsekwencji (bardzo prymitywnie, w gołym R, usprawnienie jest niewątpliwie potrzebne) a następnie graficznie przedstawia podobieństwa między plikami.

Miało być o wizualizacji, więc zobaczmy wynik tej funkcji dla przykładowych danych z ostatniego projektu.

 

 

[Rys 1. Wynik funkcji parseAndPlot() na zbiorze danych skryptów z 3 projektu. Wierzchołki oznaczają pliki z rozwiązaniami. Wielkość punktu jest wprost proporcjonalna do wielkości pliku R, krawędź jest zaznaczona jeżeli długość wspólnej podsekwencji przekracza 5% wielkości obu plików, w tym przypadku na krawędzi jest też wypisywany procentowy udział długości wspólnej sekwencji. Rozłożenie punktów jest automatyczne, dlatego nie wygląda na zbyt uporządkowane.]

Nazwy plików skróciłem do pierwszej litery, nie jest specjalnie ważne czyj jest który plik. Można dyskutować czy 16.8% (ponad 1200 znaków po usunięciu komentarzy) najdłuższego fragmentu przeklejonego kodu to dużo czy mało.

Różne osoby czytają ten blog, dla osób pracujących z R może będzie to zachęta by pomóc mi w rozwinięciu pakietu plagiat, pewnie jest masa bibliotek, które można by użyć a o których nie wiem. Dla prowadzących zajęcia w R, może pakiet plagiat będzie przydatnym narzędziem, dzięki któremu można szybko zobaczyć czy otrzymane pliki z rozwiązaniem nie są do siebie zbyt podobne. Aktualnie do wygenerowania takiego obrazka wystarczą następujące komendy

Dla studentów może będzie to zachęta do pracy w grupie ale w sposób przejrzysty, tak by prowadzący wiedział kogo za co ocenia a student korzystał z zalet wspólnego uczenia się.

Howgh.

 

Praca dla doktorów na wydziale MIM UW

Instytut Matematyki Stosowanej Uniwersytetu Warszawskiego a w szczególności grupa Statystyki Matematycznej szuka doktorów, doktorów habilitowanych i profesorów matematyki lub statystyki chętnych do zasilenia naszych szeregów.

W przypadku młodych (do 5 lat po doktoracie lub końcówka doktoratu) doktorów broniących doktorat poza województwem mazowieckim możliwe jest współfinansowanie wynagrodzenia z granatów na staże podoktorskie NCN (więcej informacji tutaj http://www.ncn.gov.pl/ogloszenia/konkursy/podoktorskie-15-12-2011).

Dofinansowanie to około 10tys PLN miesięcznie plus drobne na wyposażenie pokoju.
W Instytucie zapewniamy miłą atmosferę do pracy i dużą elastyczność.

Więcej informacji można otrzymać emailowo.

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

 

Ankiety studenckie a Wstęp do programowania, podejście imperatywne

Nawiązując do wczorańszego wpisu, zobaczmy jak wygląda rozkład wyników ankiet z ćwiczeń i laboratoriów z kursu ,,Wstęp do programowania”. Wybrałem ten kurs ponieważ miał on najwięcej krup ćwiczeniowych, uniknę w ten sposób spekulacji który ćwiczeniowiec jest którą kropką.

Co też z takiego wykresu można odczytać?

  1. Generalnie żadna z grup nie została źle oceniona, prawie wszystkie średnie powyżej 5.
  2. Zaskoczeniem dla mnie jest to, że zajęcia są tak różnie oceniane, wydawałoby się że skoro to ten sam kurs to ocena zajęć powinna być bardziej podobna. Wygląda jednak na to, że ocena zajęć mimo wszystko bardzo zależy od oceny prowadzącego.
  3.  Będąc studentem chciałbym zobaczyć nazwiska przynajmniej tych trzech najwyżej ocenionych prowadzących (czyli jednak top 25%). Te osoby jak widać naprawdę wykonały dobra pracę skoro ten sam kurs prowadziły wyraźnie lepiej niż inne.
Czy waszym zdaniem taki wykres z nazwiskami pierwszej trójki byłby użyteczny? Czy są jakieś powody dla których takich wykresów lepiej nie pokazywać?

Ankiety studenckie a głaski dla pracowników dydaktycznych

W poprzednim wpisie dotyczącym wyników z ankiet studenckich zauważyliśmy, że w percepcji studenta (ocenianej przez korelację reszt) pytanie o ocenę przedmiotu jest czymś innym niż pozostałe pytania, dotyczące raczej sposobu prowadzenia zajęć.
Zamiast więc pokazywać wyniki ankiet we wszystkich ocenianych 11 wymiarach, skupię się na razie na dwóch, mianowicie ogólnej ocenie zajęć i ogólnej ocenie prowadzącego.

Jak juz pisałem, raporty opracowane przez studentów (patrz tutaj) są bardzo miłe dla oka, ale mam z nimi jeden szkopuł.
Mianowicie znaczna część tych raportów skupia się na pokazaniu par prowadzący-przedmiot, których oceniło przynajmniej 5 osób i który mieli ogólną ocenę w najwyższym kwartylu (takie top 25%).

Poniżej będę argumentował, że zarówno kryterium wyboru tych par do pokazania jak i sposób ich pokazania nie jest najlepszy.

Co jest złego w kryterium top 25% najlepszych z ocenionych przez przynajmniej 5 osób?

  1. Po co przyjmować próg 5 osób? Jeżeli para prowadzący/przedmiot  był oceniony przez mniej niż 5 osób to można argumentować, że taka ocena jest przypadkowa i nie jest reprezentatywna dla tego przedmiotu. Ten argument jednak ciężko obronić jeżeli mamy specjalistyczny kurs na który zapisało się tylko 4 osoby i wszystkie wypełniły ankiety.Można argumentować, że mała próbka spowoduje, że dobry prowadzący zostanie źle oceniony przypadkowo bo wypowie się tylko niewielka (niereprezentatywna) część studentów. Nie chcemy krzywdzić prowadzących przypadkowo złymi ocenami. Ale ten argument się też nie broni ponieważ pokazywanych jest tych 25% najlepszych. Nie znajduję uzasadnienia dla progu przynajmniej pięciu ankiet. Jestem może mało obiektywny, ponieważ prowadzę często przedmioty specjalistyczne (inna nazwa na niepopularne) na których liczba zapisanych osób waha się od 4 do 8 ;-).
  2. Po co przyjmować próg top 25%? Jak rozumiem celem ankiety jest możliwość wskazania (choć nie jest jasne jeszcze komu, ale o tym później) dobrych dydaktyków. Ale i w grupie samych wybitnych dydaktyków i w grupie samych beznadziejnych zawsze da się wskazać top 25%. Lepszy wydaje się być bezwzględny próg. Jeżeli uznać średnią ocenę 5,5 albo 6 jako wynik ponadprzeciętny (w skali 1-7) to sensowniejsze było by pokazywanie wszystkich ponadprzeciętnych dydaktyków.
  3. Dlaczego nie pokazywać wyników w rozbiciu na kursy. Wracamy do pytania, że nie jest jasne dla kogo przygotowane są te wyniki ankiet. Gdy byłem studentem, chciałem by ankiety były przeprowadzane po to by ułatwić studentom wybór ćwiczeniowca lub prowadzącego laboratorium. Jeżeli tak to dla każdego kursu chciałbym mieć wskazane kto jest najlepszym ćwiczeniowcem/laborantem i czy są pomiędzy ćwiczeniowcami duże różnice. Będąc prowadzącym uważam, że takie ankiety mogłyby mi pomóc ocenić, z drugiej strony barykad,y jakie są prowadzone przeze mnie zajęcia. Jak to jednak zrobić kiedy prowadząc ćwiczenia ze statystyki mogę moją średnia z ankiet mogę porównać ze średnią z wszystkich kursów. Wolałabym już porównanie ze średnią z wszystkich prowadzących statystykę.

Tak więc aktualny sposób prezentacji wyników wygląda trochę jak sposób w jaki firmy motywują sprzedawców, pokazując top 25% osób mających największe obroty w każdej kategorii sprzedawanych przedmiotów. I jest to raczej bonus łechczący ego osób, które znalazły się na tej liście, ale bonus z którego trudno wyciągnąć użyteczne informacje. (Oczywiście taki bonus jest bardzo ważny. Na niewiele więcej może liczyć starający się dydaktyk jak na wysokie miejsce w rankingach popularności ankietowanych studentów, ale to inna historia.)

 

Ok, ponarzekałem, czas na częśc konstruktywną.
Pierwszy pomysł to pokazanie każdej pary przedmiot-prowadzący na osi średnia ocena przedmiotu/średnia ocena prowadzącego. Dodatkowo zaznaczmy wielskością punktu jak duża jest grupa studentów daną parę oceniała. Po prawej stronie i u góry wykresu zaznaczyłem dodatkowo decyle (dziesiątki centyli) rozkładu tych ocen, aby łatwiej można było odczytać jaka część kurso/prowadzących miała wyniki lepsze niż k.

Ponieważ nie mam zgody na prezentowanie nazwisk prowadzących więc na poniższych wykresach jedyny punkt oznaczony czerwonym kolorem to wyniki ankiet z mojego kursu ,,Modele liniowe i mieszane”, który prowadziłem w semestrze zimowym 2010 (to jedyny kurs który prowadziłem w tamtym semestrze). Cytując za Maciejem Stuhrem ,,wstydu nie ma”, od siebie mogę dodać że szału też, ale czerwoną kropkę dorysowałem.

Nawet bez nazwisk prowadzących z takiego wykresu można odczytać kilka informacji. (Samorządzie, zdobądź zgode na pokazanie nazwisk dydaktyków o najlepszych ocenach)

  1. Prowadzący są zazwyczaj lepiej oceniani niż przedmioty które prowadzą (cóż, dla mnie to zaskoczenie, właściwie jak to czytać, czy studenci chcieliby innych przedmiotów?).
  2. Zdecydowana większość prowadzących/przedmiotów jest dobrze oceniana (na użytek tego postu uważam, że dobrze to średnia ocena 5 lub więcej).
  3. Będąc prowadzącym i widząc oceny moich kursów moge sobie z tego wykresu odczytać gdzie się znajduję w rozkładzie wszystkich ocenianych przedmioto-prowadzących. Wciąż wolałbym taki wykres w rozbiciu na kursy, ale przynajmniej mogę więcej porównać niż tylko średnie moją i globalną.

 

 

 

Wszelkie uwagi co pokazać dodatkowo/inaczej mile widziane.

 

 

 

Ankiety studenckie, stratyfikacja a macierze korelacji

Dzisiejszy wpis jest pierwszym z serii wpisem dotyczącym wizualizacji i analizy danych zbieranych w procesie nauczania w szkołach wyższych. Rok temu mój magistrant, Filip Grotkowski, w ramach pracy magisterskiej wykonał szkielet oprogramowania pozwalający na automatyczne generowanie raportów na podstawie danych z systemów: Uniwersytecki System Obsługi Studentów (USOS) i Internetowa Rejestracja Kandydatów (IRKA). Więcej o systemie USOS przeczytać można np. tutaj.

Kolejni magistranci kontynuują rozwój tego systemu. Celem jest opracowanie systemu raportów, który będzie prezentował ciekawe informacje dla studentów i nauczycieli akademickich. Aktualnie kilkanaście uczelni używa tego systemu i teoretycznie raz opracowany zestaw raportów będzie można uruchomić na każdej z tych uczleni. Tak więc ten i kolejne wpisy w tle mają pytanie, jakie informacje użyteczne dla studentów i nauczycieli akademickich można wyłowić z baz danych o procesie studiowania i mam nadzieję, że czytelnicy tego bloga swoimi uwagami pomogą w znalezieniu sposobów znajdowania odpowiedzi na najciekawsze pytania.

 

Dziś będzie o liczeniu korelacji pomiędzy wynikami z ankiet studenckich.

Na wydziale MIM Uniwersytetu Warszawskiego przeprowadzane są ankiety wśród studentów. O ile wiem ankiety są organizowane przez Samorząd Studencki.
Studenci odpowiadają na 11 pytań opisujących ich zadowolenie z każdego z wybranych przedmiotów. Między innymi oceniają przygotowanie prowadzącego, dostępność materiałów, dostępność prowadzącego, ogólną ocenę zajęć, ogólna oceną prowadzącego itp.

Wielki plus dla samorządu za zorganizowanie tego systemu i aktywne motywowanie studentów do wypełniania ankiet, dzięki czemu wypełnianych jest kilka tysięcy ankiet na semestr. Plus za pytanie o 11 aspektów dotyczących przeżytego kursu, ułatwia to zrozumienie co się podobało a co nie w danym kursie. Minus za brak pomysłu na przedstawienie wyników dla tych 11 aspektów.

 

Wyniki ankiet dla kierunku Matematyka dla semestru zimowego 2010 opracowane przez studentów wydziału MIM zostały umieszczone pod tym adresem. Raport jest miły dla oka, znajduje się tam wiele wykresów i liczb. Brawa dla autorów za jego wykonanie, ale jak zwykle nawet w najlepszym raporcie znajdzie się coś do czego  można mieć uwagę. A moja jest taka, że mam wrażenie, że z takich ankiet można wyciągnąć więcej informacji. I to jest temat kilku najbliższych wpisów.

Ten wpis poświęcę dyskusji nt. macierzy korelacji pomiędzy odpowiedziami na pytania z ankiet.
Jest ona przedstawiona w wymienionym wyżej raporcie w części ‘Korelacja pomiędzy wynikami z pytań’.
Pamiętajmy, że te wyniki są prezentowane dla studentów i pracowników wydziału informatyki i matematyki, więc można wybaczyć zalew liczb i prezentowanie korelacji z dokładnością do trzech cyfr po przecinku (co sam też będę czynił poniżej).

Problem z tą macierzą korelacji polega na tym, że nie wiadomo co ona pokazuje.

Dlaczego?
Przypomnijmy jak była ona konstruowana.
Studenci dla każdego odbytego kursu odpowiadali na 11 pytań w skali od 1 do 7. Puryści stwierdzą, że ta skala przypomina bardziej skalę Likerta niż dane ilościowe więc liczenie z odpowiedzi średniej a co dopiero korelacji nie ma sensu. Ale przymknijemy na razie na to oko.
Skupmy się na razie na tym jak policzyć korelację pomiędzy dwoma pytaniami, np. ogólną oceną z zajęć a ogólną oceną prowadzącego.
Problem z liczeniem korelacji zilustrujemy takim przykładem. Przypuśćmy, że poniższa tabela opisuje wyniki z czterech ankiet.

Korelacja próbkowa dla odpowiedzi na te pytania to 0,8. Ale jest ona pochodną tego, że jeden prowadzący został wysoko oceniony a drugi nisko. Mamy bowiem do czynienia z grupami odpowiedzi o potencjalnie różnych rozkładach (średnich) i obserwujemy mieszaninę takich grup. Spróbujmy oddzielić wpływ prowadzącego na ocenę i wpływ rozumienia pytania 1 i 2 przez oceniającego studenta.

Licząc średnie w kolumnach, możemy każdemu prowadzącemu przypisać średnią ocenę na zadane pytanie.

Jeżeli teraz policzymy korelację pomiędzy takimi średnimi otrzymamy korelację równą 1. Ta korelacja opisuje jak bardzo podobne są charakterystyki 1 i 2 prowadzących. Wysoka korelacja świadczy o tym, że prowadzący wysokich odpowiedziach na jedno pytanie mają też wysokie odpowiedzi na drugie pytanie.

Zobaczmy teraz jak wyglądają różnice pomiędzy wynikami z ankiet a średnimi wynikami prowadzących (będę je poniżej nazywał resztami)

To oczywiście skrajny przykład, ale ma na celu pokazanie, że licząc korelację na średnich lub na resztach można nadać interpretację takich korelacji. Liczenie korelacji z pominięciem informajcie o ,,efekcie prowadzącego” utrudnia lub uniemożliwia określenie co dokładnie ta korelacja mierzy. Liczba jakaś zawsze wyjdzie, ale co ona znaczy?
Tego typu problem polegający na obserwowaniu wartości z grupy niejednorodnych podpopulacji jest w analizie danych dosyć częsty, warto więc być na niego wyczulonym.

Ok, a jak to wygląda dla naszych danych, tj wyników ankiety dotyczacych semestru zimowego 2010?
Dostęp mam tylko do odpowiedzi na 8 z wymienionych 11 pytań, dlatego poniżej pokazuję macierz korelacji tylko dla tych 8 pytań.
Pierwsza macierz pokazuje korelację pomiędzy średnimi dla prowadzących, druga to korelacja pomiędzy resztami.
Jak widzimy te macierze dosyć się różnią.

Macierz korelacji dla średnich ocen prowadzących.

Macierz korelacji dla różnic pomiędzy ocenami prowadzących a wynikami ankiet.

Powyższe macierze różnią się. Najbardziej różnią się korelacje pomiędzy oceną opiniowanych zajęć a pozostałymi odpowiedziami. Patrząc na korelacje liczone na średnich dla prowadzących mamy wysoka korelację, która świadczy o tym, że jeżeli prowadzący jest wysoko oceniany to i zajęcia są wysoko oceniane (i symetrycznie, korelacja jest symetryczną miarą).
Porównując korelacje liczone na resztach, widzimy brak istotnych korelacji. Co znaczy, że studenci inaczej interepretują ocenę prowadzącego i ocenę przedmiotu. Uwzględniwszy ,,efekt prowadzącego” odpowiedzi na te pytania są nieskorelowane. Pozostałe pytania są skorelowane w podobnym stopniu, co można interpretować tak, że wszystkie pytania poza siódmym oceniają różne cechy prowadzącego, sposobu przekazywania wiedzy, uporządkowania, charyzmy itp. Pytanie 7 w percepcji studentów dotyczy wyłącznie oceny przedmiotu.

Dociekliwi zauważą, że podobnie jak braliśmy pod uwage ,,efekt prowadzącego” tak i powinniśmy brać pod uwage ,,efekt studenta”. Nie jesteśmy jednak w stanie tego zrobić, ponieważ ankiety są anonimowe i nie ma jak policzyć średniej odpowiedzi na wybranego studenta. Ponieważ jednak liczba ankiet na studenta jest mnijesza niż liczba ankiet na przedmiot więc można mieć nadzieję, że efekt studenta jest znacznie mniejszy.

Pointa?
Przedstawianie różnych charakterystyk danych z ankiet to świetny pomysł ale trzeba zastanowić się co prezentuje dana charakterystyka i czy przypadkiem nie jest ona obciążona jakimś innym efektem.
Licząc korelację na danych, które agregują wyniki z kilku grup należy wziąć pod uwage różnice pomiędzy grupami. Dzięki temu będzie można wskazać na jakim etapie korelacja/podobieństwo jest istotne.
Pytanie z którym należy się jeszcze zmierzyć to w jaki sposób pokazać macierz korelacji tak by dało się ją całą ogarnąć percepcją.

 

Po co używać wykresów kołowych, czyli raporty znanej fundacji a ,,lie factor”

Zacznę od tego, że FNP stara się czytelnie prezentować wyniki swoich konkursów. Z ostatniego konkursu START dla przejrzystości upubliczniono wnioski laureatów, a więc jest tutaj duża przejrzystość. NCN mógłby się dużo nauczyć (sposób ich publikacji wyników pierwszego konkursu pozostawia wiele pytań). Pisząc kolokwialnie, FNP robi świetną robotę (tzn. ludzie pracujący w tej fundacji).
Niemniej FNP też zdarzają się wpadki.

Na tej stronie przedstawiono raport z rekrutacji różnych programów prowadzonych przez Fundację.

Z jakiegoś powodu uznano, że trójwymiarowe wykresy kołowe nadadzą się do czegokolwiek. Tymczasem dwie pierwsze reguły wizualizacji danych to: nie uzywaj pseudo-trójwymiarowych wykresów jeżeli nie trzeba i nie uzywaj wykresów kołowych. Nie jest tylko jasne która z tych reguł jest pierwsza a która drugą. Pseudo-trzeci wymiar na wykresach oszukuje percepcję i nie pozwala na poprawną ocenę długości/szerokości itp. Wykresy kołowe sa niedobre ponieważ nie potrafimy dobrze porównywać kątów.

Zobaczmy przykładowy wykres prezentowany ww raporcie na stronie 2.

Co jest dziwnego w tym wykresie? Są dwa kawałki, które opisują po 5% i dwa opisujące po 11%, ale coś jest z nimi nie tak. Zmierzmy długości odpowiednich cięciw.

Długości tych cięciw w pixelach to odpowiednio 116, 211, 126, 46 pixeli.

Edward Tufte zdefiniował kiedyś współczynnik ,,lie-factor”, który liczony jest jako iloraz efektu widocznego na wykresie do efektu w danych.

Stosunek długości cięciw A:D to 116/46 = 2.6 podczas gdy z danych wynika, że powinny być to tej samej długości cięciwy.

Stosunek długości cięciw B:C to 211/126 = 1.7 podczas gdy z danych wynika, że powinny być to tej samej długości cięciwy.

Czy trzeba więcej argumentów przeciwko wykresom kołowym 3D?

W ogóle ilość danych przedstawionych w powyższym raporcie do jego objętości jest dosyć mizerna. Całą stronę 2 mozna by przedstawić za pomocą jednego wykresu na którym jest więcej informacji. Kod do wygenerowania tego wykresu znajduje się tutaj. A wykres poniżej (trochę lepiej wygląda dla innych progrmów gdzie było więcej lauretów)

Krytykując wykresy 3D spójrzmy jeszcze na poniższy z tego samego raportu. Pierwszy słupek ma wysokość 15% ale jest znacznie poniżej linii siatki oznaczającej 15%. Pewnie da się to jakoś wytłumaczyć, ale i tak dosyć dziwnie to wygląda.