Regresja liniowa w R vs SAS

Wielką zaletą prowadzenia laboratoriów jest to, że gdy nie ma się czasu na realizację jakiegoś niewielkiego projektu, zawsze można zadać go studentom jako pracę na ocenę. W poprzednim roku prowadziłem przedmiot R i SAS dla około 30 studentów (nigdy nie wiadomo jak liczyć studentów, czy tych zapisanych w USOSie, czy tych co rzeczywiście przychodzą na zajęcia, czy tych co przystępują do zaliczenia). Ostatni projekt dotyczył między innymi porównania czasów wykonywania regresji liniowej na modelach o tym samym rozmiarze w R i w SAS. Kilkanaście rozwiązań i kilkanaście różnych odpowiedzi. Poniżej przedstawię wyniki studenta, Michała Marciniaka. Porównania dotyczą seryjnych wersji R (2.13.0 32bit) i SAS (9.2 32 bit). Wykonano je na Windowsie 7 procesor intel i5 i 4GB RAM.

Poniżej na trzech wykresach przedstawiono czasy wykonania regresji liniowej dla modelu z 10, 100, 1000 predyktorami oraz od 1tys do 100 mln wierszy. Dla R porównano czasy działania funkcji lm, lm.fit (odpada tworzenie model.frame), glm i glm.fit. Dla SASa procedury GENMOD, MIXED, GLM i REG.

 

Porównywane funkcje z pakietu R wykorzystują dekompozycje QR, procedury programu SAS pracują na macierzy wariancji-kowariancji zmiennych objaśnianych i objaśniających. Dla małych zbiorów danych funkcje R są szybsze, dla dużych przewagę ma SAS. W R najszybsza jest oczywiście funkcja lm.fit, wymaga ona jednak zakodowania zmiennych jakościowych wcześniej. R operuje na danych w przechowywanych pamięci więc wielkość danych na których możemy wykonać regresje jest ograniczona ilością posiadanego RAM. A w wersji 32bitowej również maksymalną ilością pamięci, którą można zaadresować dla jednego programu czyli 2GB dla Winows i 4GB dla Linuxa. W przypadku SASa nie mamy takiego ograniczenia, niezbędne dane doczytywane są na bieżąco z dysku.

Dwa komentarze dotyczące tych porównań. Gdyby użyta była wersja 64bit R to możnaby przetwarzać większe zbiory danych niż ww. 3mln wierszy. Wykonywanie regresji można znacznie przyśpieszyć instalując optymalizowaną dla procesora (lub wielowątkową) bibliotekę BLAS.

Kody użyte do generowania danych i przygotowania wykresów znajdują się w katalogu tutaj.

 

Ranking uczelni i paretooptymalność

Paretooptymalność oznacza, że nie ma innych obiektów lepszych w każdym rozważanym sensie. Poza tym to ładne słowo, jedno z niewielu których jeszcze nie zapomniałem ze wstępu do teorii gier. Front paretooptymalny to zbiór obiektów, takich że od żadnego z nich nie istnieje obiekt jednostajnie lepszy. Obiekty z frontu są nieporównywalne.

Tak tez pewnie jest z uczelniami, jedne są lepsze jeżeli chodzi o współpracę z przemysłem, inne mogą mieć więcej publikacji, jeszcze inne mogą mieć lepszy PR. Na kilku rysunkach będę chciał pokazać w jakich kategoriach które uczelnie są wysoko. W zbiorze danych o rankingu z Rzeczpospolitej mamy 32 atrybuty, to za dużo a techniki skalowania nie doprowadziły do niczego co byłoby łatwe w interpretowaniu. Dlatego poniżej te 32 atrybuty zamieniłem w 6 atrybutów odpowiadających 6 grupom atrybutów z oryginalnego rankingu. Nowy atrybut to suma punktów z atrybutów dla danej grupy, tz. atrybut prestiż to suma punktów za preferencje pracodawców, ocenę kadry akademickiej, uznanie międzynarodowe i wybór olimpijczyków. Reszta podobnie. Na każdym z poniższych wykresów pokazywane jest 90 uczelni w układzie opisanym przez dwa atrybuty. Każdy punkt odpowiada jednej uczelni. 10 uczelni które mają najwyższą sumę atrybutów jest oznaczonych przez nazwy a kropki odpowiadające tym uczelnią maja ciemniejsze kolory. Kolory oznaczają typ uczelni (wyróżniłem 6 typów, w tym uniwersytety, politechniki itp). Jasny pomarańcz to politechnika która nie jest jedną z 10 najlepszych uczelni w danym zestawieniu, ciemno pomarańczowy to politechnika która znalazła się w 10 najlepszych w danym zestawieniu. Obie osie są w skali pierwiastkowej bo tak lepiej wyglądają.

Jeżeli mamy 6 atrybutów to wszystkich par jest 30 (kolejność ma znaczenie bo mózg inaczej interpretuje składowa pozioma a inaczej pionową). Wykresy dla wszystkich par są w katalogu tutaj. Poniżej przedstawiam 6 wybranych najciekawszych wykresów. Skrypt użyty do wygenerowania tych wykresów jest tutaj. Informacja, które charakterystyki agregują poszczególne grupy można odczytać też z tego wykresu.

Efektywność naukowa a innowacyjność.

 

Żółte kropki na tym wykresie oznaczają uniwersytety medyczne. Są one oznaczone jako uczelnie o bardzo wysokiej efektywności naukowej ale bardzo niskiej innowacyjności. Liter rankingu Rzeczpospolitej (uniwersytet Warszawski) nie jest najlepszy ani pod względem efektywności naukowej ani pod względem innowacyjności. UJ bije go w obu przypadkach. Jeżeli chodzi o innowacyjność to najlepsze są politechniki (Wroclawska, Warszawska, Gdanska, Poznanska) stojące tuz za AGH. Ale do tego jeszcze wrócimy.

Umiędzynarodowienie a potencjał naukowy.

 

Umiędzynarodowienie nie jest jakoś szczególnie silnie skorelowane z potencjałem naukowym. Czołówka najbardziej umiędzynarodowionych uczelni zawiera i te o wysokim potencjale naukowym (UW, UJ, swoją drogą termin potencjał naukowy brzmi podejrzanie) i te o wynikach gorszych niż średnia w tej kategorii (Akademia Koźmińskiego).

 

Warunki studiowania a potencjał naukowy

Zależność pomiędzy warunkami studiowania a potencjałem naukowym jest ciekawa. Te dwie cechy wydają się ze sobą korelować, ale jest to wynikiem obecności dwóch skupisk (paradoks Simpsona). Uczelnie o przeciętnych lub niskich warunkach studiowania i przeciętnym lub niskim potencjale naukowym (w tej grupie nie widać korelacji) i grupie kilku uczelnie w którym oba te współczynniki są wysokie.

Btw: W kategorii warunki studiowania wygrywa UAM. Tam jeszcze nie pracowałem, ale proszę śmiało o przesyłanie ofert na gmaila.

Potencjał naukowy a prestiż

Słowo prestiż jest już tak nadużywane, że trudno nawet powiedzieć co to oznacza w kontekście uczelni wyższej. Jest to jeden z najbardziej skośnych charakterystyk, tylko 7 uczelni ma ten współczynnik powyżej 100 a zdecydowana większość ma ten współczynnik poniżej 50.

Ciekawym eksperymentem będzie poprowadzić linię regresji na powyższym rysunku i zobaczyć prestiż których uczelni przewyższa ,,rzeczywisty” potencjał naukowy (PR robi swoje) a dla których uczelni jest on zaniżony.

Innowacyjność a potencjał naukowy

 

Podobnie wracamy do innowacyjności. Moim zdaniem jest to jedna z ważniejszych wartości wartych promowania. Potrzebujemy jak ryba wody kreatywnych rozwiązań, pomysłów, odważnych działań, zamiast walenia pałkami po łapach lub głowach tych co się wychylają.

Na tym wykresie ciekawie rozkładają się trzy grupy punktów. Niebieskie kropki oznaczają akademie (wojskowe, rolnicze, humanistyczne), za wyjątkiem AGH wszystkie pozostałe akademie mają niską innowacyjność i niski potencjał naukowy. Pomarańczowe kropki to politechniki. Większość z nich cechuje się wysoką innowacyjnością i potencjałem naukowym średnio trochę lepszym niż średnia (Maturzyści, idźcie studiować na Politechniki, potrzebujemy w kraju więcej inżynierów). Fioletowe kropki to uniwersytety, te charakteryzują się wysokim potencjałem naukowym ale innowacyjność jest tylko trochę lepsza niż średnia.

 

Podobieństwo pomiędzy kryteriami oceny uczelni wyższych w rankingu Rzeczpospolitej

Ten post to przymiarka do kolejnego, jest to więc wpis roboczy. Celem tego wpisu jest przyjrzenie się jak mają się do siebie 32 kategorie, charakterystyki, którymi w rankingu Rzeczpospolitej opisane są uczelnie wyższe.

Zaczniemy od korelogramu (przypominam że kodu do programu R, którymi wygenerowano poniższe wykresy znajdują się tutaj). Na korelogramie przedstawiono jakie sa korelacje pomiędzy róznymi kategoriami (w podziale na 6 wyróżninych grup kategorii). Im bardizej czerwona elipsa tym większa korelacja dodatnia, im bardziej niebieska tym silniejsza korelacja ujemna. Ponieważ rozkłady tych współczynników sa wyjątkowo skośne, na wykresie przedstawiane sa korelacje rangowe Spearmana.

Komentownaie zacznijmy od najsilniejszej ujemnej korelacji, dotyczy ona pary kategorii ‘Nasycenie kadrą profesorską’ i ‘osiągnięcia sportowe’. Hmm, można by się pokusić o kilka złośliwych komentarzy co do stanu kadry profesorskiej. Co ciekawe kategoria ,Nasycenie kadrą profesorską’ koreluje ujemnie z prawie wszystkimi innymi kategoriami (również z liczbą cytowań i publikacji, hmm, może więc przekonam dyrekcję mojego instytutu, żeby zamiast zatrudniać jednego profesora zatrudnili kilku energicznych doktorów).

Gdybym był młodym człowiekiem (tutaj wstaw kropkę) po maturze, wybierającym uczelnie wyższą, najbardziej interesowałaby mnie kategoria ‘Preferencje pracodawców’. Kategoria ta słabo koreluje z liczbą publikacji czy cytowań. Pełen korelogram w formacie pdf można znaleźć tutaj).

 

Jako uzupełnienie powyzszego korelogramu dodajmy jeszcze dendrogram dla charakterystyk oraz wynik skalowania wielowymiarowego charakterystyk na dwuwymiarowa płaszczyznę.

 

 Wniosek, który chcę obronić jest taki, że pogrupowanie 32 kategorie w 6 grup nie zostało wykonane tak by kategorie wewnątrz grupy były najbardziej do siebie podobne. Są podobne, ale w wielu przypadkach nie bardziej niż kategorie z innych grup. W kolejnym wpisie na blogu będę zamiast wszystkich 32 charakterystyk operował na grupach kategorii, sumując punkty z kategorii wewnątrz każdej z 6 grup. Wniosek jest więc taki, że być może te 32 charakterystyki da się lepiej podzielić na grupy, a mając lepszy podział i kolejne obliczenia można powtórzyć by dostać ciekawsze/czytelniejsze wyniki.

 

 

Podobieństwa pomiędzy uczelniami wyższymi w Polsce

Kilka dni temu dodalem do listy zbiorow danych wyniki rankingu szkół wyższych wykonanegp przez Gazetę Rzeczpospolita.

Redaktrzy gazety wykonali świetną pracę wyznaczając wartości 32 charakterystyk podzielonych na 6 grup (prestiż, innowacyjność, potencjał naukowy, efektywność naukowa, warunki studiowania i umiędzynarodowienie) dla 90 uczelni wyższych. Niestety plan zrobienia rankingu nie jest zbyt trafiony, trudno uporządkować jakkolwiek sensownie 90 uczelni z których większość ma różne profile kształcenia.

Naszym celem na dziś jest przyjrzenie się bliżej tym danym, może uda się znaleźć coś ciekawego w danych a może przynajmniej poćwiczymy wizualizacja wielowymiarowych danych.

Zacznijmy od wykonania hierarchicznej analizy skupień dla uczelni. Krótkie eksperymenty z odległością i metoda łączenia doprowadziły do wyboru odległości euklidesowej i metody lączenia średniego. Dla 90 uczelni zbudowano poniższy dendrogram (wersję pdf tego rysunku znaleźc można tutaj).

Co ciekawego zobaczyć można na tym dendrogramie? W grupach sa ucezlnie o podobnym profilu. Przy każdej uczelni zaznaczono tez pozycje tej uczelni w rankingu Rzeczpospolitej z roku 2011. Pierwsza szóstka uczelni znalazła się w osobnym poddrzewie dobrze separowanym od pozostałych, nie jest to jednak nic szczególnie ciekawego, pewnie we wszystkich kryteriach te uczelnie wypadają wysoko. Ciekawe pozycje to np. małe poddrzewo zawierające SGH i Akademię Leona Koźmińskiego. Te uczelnie znalazły się na różnych miejscach w rankingu Rzeczpospolitej (odpowiednio 9 i 25) a jednak jeżeli chodzi o profile sa bardzo podobne. Inna podobna para to Wojskowa Akademia Techniczna w Warszawie (pozycja 34 w rankingu) i Szkoła Główna Służby Pożarniczej (pozycja 86), mimo iż w rankingu znajdują się bardzo daleko od siebie, to jeżeli chodzi o profil kształcenia i nacisk na różne aspekty kształcenia wypadają podobnie.

Dlaczego taki dendrogram może być użyteczny? Załóżmy, że ktoś aplikował na SGH bo miał tam brata i brat twierdzi, że dobrze mu się tam studiowało. Załóżmy tez, że się nie dostał i szuka alternatywy. Alternatywą będzie raczej Akademia Koźmińskiego niż Uniwersyte Medyczny w Poznaniu (który w Rankingu jest na kolejnej, 10. pozycji za SGH).

 

 

 

Zbiór danych opisujący jakość uczelni wyższych w Polsce

Kilka dni temu rzeczpospolita umieściła bardzo ciekawy ranking uczelni wyższych w Polsce. Oryginalny zbiór danych znajduje się tutaj. Dużo pracy włożono by zebrać te 3330 liczb które przedstawiono w tym rankingu, szkoda tylko, że jedyne co z nimi zrobiono to konstrukcja rankingu który z założenia nie ma sensu. Jak można w porządku liniowym ułożyć Uniwersytet i Wyższą szkołę Pożarnictwa albo Akademię Medyczną?

Nie można.

Nie można też (o ile się nie jest chory na autyzm) objąć umysłem wszystkich 3330 liczb. Można za to wykorzystać ten zbiór danych do wizualizacji, redukcji wymiarowości, i analizy składowych głównych. Zapowiada się więc świetna zabawa, znaleźć regułę tworzenia rankingu by uczelnia na której się studiuje/pracuje była pierwsza.

Link do katalogu z danymi znajduje się tutaj. Skrypt R wczytujący dane bezpośrednio z internetu znajduje się tutaj. Dane w formacie CSV znajdują się tutaj.

Ceny metra kwadratowego we Wrocławiu

Kilka dni temu dodałem do repozytorium zbiór danych dotyczących cen ofertowych mieszkań z serwisu oferty.net (patrz: http://smarterpoland.pl/?p=60). Teraz przyszedł czas na przyjrzenie się bliżej tym danym.

Ponieważ większość z przeprowadzonych analiz uwzględniała zrożnicowanie pomiędzy dzielnicami to, aby nie zamazywać wyników efektami 40 różnych dzielnic, pokażę kilka analiz wykonanych wyłącznie dla Wrocławia. Administracyjnie Wrocław ma 5 dzielnic, w danych jest jeszcze szósty poziom ‘inne’ oznaczający brak lub niejednoznaczne przypisanie dzielnicy do oferty sprzedaży mieszkania. Oczywiście wszystkie analizy są generyczne i można je powtórzyć dla innych miast.

Przyjrzę się bliżej efektom wpływającym na cenę metra kwadratowego we Wrocławiu. Mieszkania podzilimy na cztery grupy, tzw. kawalerki (jeden pokój powierzchnia 20-35 m2), dla młodego małżeństwa (dwa pokoje 40-55 m2) i dla rodziny z dziećmi (3-4 pokoje 60-80 m2), inne, wybór całkowicie arbitralny. Zobaczmy jak rozkładają się ceny metra kwadratowego dla różnej wielkości mieszkań w różnych dzielnicach. Aby pracować z bardziej jednorodną grupą bierzemy na razie pod uwagę tylko rok 2011. Szerokość pudełka odpowiada liczbie ofert z danej dzielnicy. Interpretacja tak jak wykresu pudełkowego (boxplot). Zaskoczenia nie ma, im wieksze mieszkanie tym m2 tańszy, ceny w centrum sa wyższe niż poza, Śródmieście i Krzyki jako popularniejsze dzielnice sa tez droższe niż Psie Pole czy Fabryczna (każda z tych dzielnic jest bardzo duża, więc uśrednianie cen po całej dzielnicy to bardzo duże uproszczenie). Kod programu R użyty do wygenerowania tego rysunku znajduje się tutaj [http://tofesi.mimuw.edu.pl/~cogito/smarterpoland/mieszkaniaKWW2011/Wroclaw/rysunki.r]

 

 

Prosty model regresji liniowej pokazuje że na cene m2 wpływa istotnie kilka zmiennych, w tym: dzielnica, powierzchnia, data złożenia oferty. Przyjrzymy się każdej z tych zmiennych, zaczniemy od powierzchni. Najprostszą charakterystyką do przedstawienia będzie średnia cena m2, później przyjrzymy się innym charakterystykom. Zobaczmy jak średnia cena m2 rozkłada się dla mieszkań o różnej powierzchni w rozbiciu na dzielnice. Kod programu R użyty do wygenerowania tego rysunku znajduje się tutaj [http://tofesi.mimuw.edu.pl/~cogito/smarterpoland/mieszkaniaKWW2011/Wroclaw/rysunki.r]


Ograniczyliśmy się do przedziały powierzchni 20-100 m2, mieszkań spoza tego przedziału jest dosyć mało, więc wyniki byłyby mało wiarygodne. Obrazki mówią same za siebie, zatem darujemy sobie interpretacje powyższego wykresu. Kolejnym efektem, który będzie nas interesował, to zmiana ceny mieszkania w czasie. Skoro cena metra kwadratowego zależy od powierzchni to do kolejnej analizy zostały one skorygowane, tzn. zastąpione ceną metra kwadratowego odpowiadającą powierzchni 50m2.


Gorąca dyskusja na różnych forach nt. czy mieszkania drożeją czy tanieją wydaje się być łatwa do rozstrzygnięcia na podstawie powyższego wykresu. Ceny spokojnie i powoli sobie spadały w większości dzielnic do marca tego roku, gdy zaczeły spadać szybciej. Troche to zaskakujące, można jednak sprawdzić że podobny efekt utrzymuje się też w innych miastach. Optymiści (niepoprawni) mogą stwierdzić, że w Śródmieściu ceny rosły. Powyższy wykres dla Warszawy byłby ciekawszy, ponieważ mamy ceny z ostatnich pięciu lat, więc ciekawszy horyzont czasowy. Oczywiście powyższy trend dotyczy mieszkań z naszego zbioru danych, niekoniecznie jest on reprezentatywny, zatem i powyższe wyniki należy czytac krytycznie (jak wszystko). Zobaczmy jeszcze, ile ogłoszeń mamy z różnych okresów czasu.


Czy to nasze źródło danych jest coraz popularniejsze, czy też coraz więcej mieszkań się sprzedaje, trudno te dwa efekty rozwikłać.

Powyżej oglądaliśmy średnią cenę metra kwadratowego. Jasne jest, że rozkład cen jest silnie skośny, zdarzają się pojedyńcze bardzo drogie mieszkania i te pojedyncze obserwacje odstające wpływają silnie na średnią, więc wypadałoby porównać średnią z medianą albo inną bardzej odporną charakterystyką. Wykorzystamy regresję kwantylową i krzywe sklejane kubiczne, aby zamodelować zmienę mediany ceny metra kwadratowego w czasie. Wyniki poniżej, linia ciągła to wspomniana mediana, linia kropkowana odpowiada średniej.


Zgodnie z oczekiwaniami mediany sa poniżej średnich, trendy dla obu charakterystyk sa podobne. Kod programu R użyty do wygenerowania tego rysunku znajduje się tutaj [http://tofesi.mimuw.edu.pl/~cogito/smarterpoland/mieszkaniaKWW2011/Wroclaw/rysunki.r]

Podsumowując, modelowanie cen mieszkań to ciekawy temat, za jakiś czas zajmiemy się cenami w Warszawie i Krakowie.

Wykresy i kody programu R wykorzystane w tym wpisue znajdują się w katalogu http://tofesi.mimuw.edu.pl/~cogito/smarterpoland/mieszkaniaKWW2011/Wroclaw/.

 

Zbiór danych o cenach ofertowych mieszkań z Warszawy, Wrocławia i Krakowa z lat 2006-2011

Ok, zaczynamy od zbioru danych. W pakiecie PBImisc umiesciłem kiedyś zbiór danych o 973 transakcjach dotyczących mieszkań z Warszawy. Mieszkań nie było zbyt dużo a transakcje dotyczyły tylko z Warszawy ale był to miły zbiór danych do ćwiczeń z R czy modelami liniowymi. Po dwóch latach nadszedł czas na aktualizację tego zbioru danych. Nowy zbior danych, który dzisiaj dodałem jest większy, dotyczy 188 884 ofert sprzedaży mieszkań zebranych dla miast Kraków, Warszawa i Wrocław z lat 2006-2011. Dane pochodzą z serwisu ogłoszeniowego http://oferty.net.

W tym miejscu: Wczytaj dane znajduje się skrypt R wczytujący dane bezpośrednio z internetu. Dane w postaci binarnej i tekstowej znajdują się w tym katalogu: Katalog z danymi.

Niebawem dodam kilka wizualizacji ilustrujących jak zmienia się cena mieszkań w czasie.