DIY – cheat sheets

I found recently, that in addition to a great list of cheatsheets designed by RStudio, one can also download a template for new cheatsheets from RStudio Cheat Sheets webpage.
With this template you can design your own cheatsheet, and submit it to the collection of Contributed Cheatsheets (Garrett Grolemund will help to improve the submission if needed).

Working on a new cheatsheet is pretty enjoying. You need to squeeze selected important stuff into a quite small surface like one or two pages.
Lots of fun.
I did it for eurostat and survminer packages (cheatsheets below).
And would love to see one for caret.

Przecinające się krzywe przeżycia

Spotkałem się ostatnio z ciekawym problemem.
Mamy dwie grupy pacjentów na dwóch różnych schematach leczenia i chcemy porównać ich dalsze losy, a konkretnie krzywe niepowodzenia leczenia (prawdopodobieństwo zgonu/wznowy).
Na pierwszy rzut oka klasyczna analiza przeżycia, test log-rank i po sprawie.

Ale szybko okazuje się, że krzywe przeżycia się przecinają, co więcej oczekiwać można tego po wcześniejszej rozmowie z lekarzem. Jeden schemat leczenia jest bardziej agresywny więc może prowadzić do gorszych rokowań krótkookresowych, ale lepszych w dalszej perspektywie.

Klasyczny test dla krzywych przeżycia oparty jest o odległość pomiędzy krzywymi, mierzoną jest jako ważona suma kwadratów odległości w poszczególnych punktach. Ale gdy krzywe się przecinają to taki test ma niską moc i nie ma sensu go stosować.

A więc co robić?
Ciekawe studium symulacyjne porównujące różne podejścia do testowania przecinających się krzywych zostało opublikowane dwa lata temu w Plos One (!).
Okazuje się, że dobrze sprawdza się rodzina testów Renyi, która jest oparta o supremum ważonych odległości pomiędzy krzywymi przeżycia.
W R te testy są zaimplementowane w pakiecie survMisc w funkcji comp. Jest to znacznie mocniejszy test dla przecinających się krzywych.

A przy okazji, okazuje się, że zmianę w hazardach w rozpatrywanym problemie dobrze ilustrują reszty Schonefelda. Poniższy wykres pokazuje, że hazard w jednej grupie jest znacznie wyższy do 12 miesiąca, a później gorsze losy czekają pacjentów drugiej grupy.

Oba wykresy wykonane pakietem survminer.

Opisy osi usunąłem ponieważ wyniki tych analiz jeszcze nie są opublikowane, ale też nazwy nie mają większego znaczenia.

histoRia R w Polsce @ tRzecie uRodziny SERa

histoRia
Najbliższe Spotkanie Entuzjastów R (9 marca 2017) będzie wyjątkowe. Świętujemy trzecie urodziny SERów i z tej okazji będzie kilka niespodzianek. Zamiast pizzy będą bąbelki i coś słodkiego, zamiast przerwy zrobimy sesje tematycznych okrągłych stolików aby spokojnie porozmawiać z innymi entuzjastami R, a zamiast referatu o tym co aktualnie dzieje się w R będzie referat o przeszłości, o tym jak wyglądały początki R w Polsce.

Mam poprowadzić ten referat, ale przecież nie znam całej historii R.
Mam więc wielką prośbę do Was!
Pomóżcie mi uzupełnić informacje o tym jak wyglądały początki R w Polsce. Kiedy jakie przedmioty pojawiły się na których uczelniach, kiedy w firmach pojawiły się duże i ciekawe rozwiązania/wdrożenia oparte o R, kiedy miały miejsca ciekawe spotkania związane z R. Kiedy działy się ciekawe rzeczy związane z R, co to były za rzeczy i kto je organizował.

Założyłem na GitHubie stronę do której można dodawać interesujące ciekawostki związane z historią R (https://github.com/mi2-warsaw/SER/blob/master/histoRia/README.md).
Jeżeli wiecie o aktywności, która powinna się w tym zestawieniu znaleźć, proszę dopiszcie, albo przez nowe issue, albo nowy pull request albo przez wysłanie mi emaila na adres przemyslaw.biecek na serwerze gmail.
Mogą to być wydarzenia z już wymienionych typów a mogą to być całkowicie nowe rzeczy.

Dziękuję i do zobaczenia na SERze!

How to hire a Data Scientist?


W poprzednim tygodniu odbyła się konferencja Big Data Technology Summit 2017. Organizatorom udało się osiągnąć dwa cele, było wiele ciekawych merytorycznych referatów oraz wielu ciekawych uczestników z którymi można porozmawiać w kuluarach. Podczas sesji round-table miałem przyjemność poprowadzić stolik How to hire a Data Scientist? Wrażenia z tego stolika opisuję poniżej.

Dyskusja potoczyła się zaskakująco, choć na początku było dosyć klasycznie

Wśród uczestników tego stolika było kilku przedstawicieli biznesu, którzy do swoich firm lub działów szukają data scientistów (dalej juz piszę DS by nie kaleczyć tak bardzo języka), były też osoby zainteresowane rozwojem w tym kierunku.
Na początku było dosyć standardowo, czyli narzekanie, że zrekrutować DSa jest trudno. LinkedIn jest mało skuteczny, bo specjaliści dostają po kilka ogłoszeń tygodniowo i już ignorują większość z nich więc trzeba szukać innych ścieżek.
Na pytanie, co z rekrutacją na możliwie wczesnym etapie, jeszcze studentów na uczelniach, pojawiły się odpowiedzi, że ważna jest obecność firmy na uczelni ale (uczestnicy stolika) nie rekrutują osób na stanowisko DS na wczesnych latach a raczej starają się zdobyć już doświadczonych pracowników.
Samo w sobie to ciekawa deklaracja. Być może aby zostać DSem trzeba najpierw zjeść trochę chleba pracując na bardziej klasycznym stanowisku? A może uczenie się przez całe życie jest wpisane w zawód DS, a łatwiej się uczyć gdy ma się solidne podstawy po ukończonych dobrych studiach.

Z konstruktywnych wniosków pojawiło się np. stwierdzenie, że to co przyciąga DSa to ciekawe projekty i dostęp do ciekawych danych. W perspektywie dłuższego zatrudnienia, jest to silniejszym magnesem niż kolejna podwyżka. Ten motywator działa słabiej podczas pierwszej pracy, która motywowana jest najczęściej tym, że koledzy/żanki na studiach już zarabiają a ja jeszcze nie, ale gdy szukamy specjalistów w DS to właśnie możliwość rozwoju w ciekawym środowisku staje się coraz ważniejsza.
Ale jak dać znać pracownikom, że w firmie dzieją się ciekawe rzeczy? Jednym z rozwiązań (choć wciąż mało popularnym) jest blog pokazujący co ciekawego dzieje się w środku firmy/zespołu.

Później było jeszcze ciekawiej

Z ciekawszych wątków, w dalszej dyskusji pojawiła się np. wątpliwość, czy w ogóle warto szukać i rekrutować DSów?
Po co się zastanawiać jak rekrutować, jeżeli nie mamy pewności, że nasz biznes jest już gotowy aby przyjąć do pracy nowych DSów? Nawet jeżeli mamy nadwyżkę w budżecie na zespół DS, to warto świadomie określić po co nam ten zespół. W przeciwnym razie zdobędziemy kilka osób, które przyjdą, popracują rok, zobaczą że ich analizy są na nic i sobie pójdą.

Jeden z cytatów, który wpadł mi w ucho, to ,,jak wiemy DSy obumierają w samotności”. Czyli aby DSy pracowali efektywnie potrzebują zespołu, a może nawet całego ekosystemu wspierającego i uzupełniającego ich pracę.
Ale to wymaga od biznesu zbudowania zaplecza złożonego z inżynierów, którzy postawią i utrzymają te wszystkie sparki, hive’y, skonfigurują spotowe instancje na AWSie tak by potrzebne dane były zebrane i dostępne.
Jak również zaplecza po stronie kierowników, dyrektorów i zarządu, które pomoże nowe rozwiązanie wdrożyć lub przynajmniej przetestować w biznesie.
Aby zbudować efektywny zespół DS trzeba w wypracować pewną kulturę pracy z danymi, jeżeli nawet nie w całej firmie, to przynajmniej w warstwie zarządczej.

A więc jak rekrutować te jednorożce zwane DSami?

Dobrym kierunkiem jest taka organizacja biznesu, by istniało wsparcie techniczne pozwalające na efektywny dostęp do danych oraz warstwa zarządcza gotowa na wdrożenie zmian sugerowanych przez dane.
Do takiego środowiska DSy same przyjdą jak do wodopoju, bo będą czuli, że ich wysiłek na coś się przełoży. A świat się skurczył i informacja o tym gdzie dzieją się ciekawe rzeczy a gdzie nieciekawe szybko się rozchodzi.

Gdy już takie środowisko zostanie zbudowane, to nie zaszkodzi umieścić ogłoszenia na portalu http://datahero.tech/ lub przyjść czasem na uczelnie z ciekawym referatem (np. na SERy).

Najszczęśliwsze zdjęcia posłów i posłanek

Jakiś czas temu, na RBloggers pokazano jak z poziomu R używać Microsoft Cognitive Services API. Co to za API? Zbiór usług do pracy z obrazem, wideo lub tekstem. Przykładowo Ben Heubl użył Emotion API aby ocenić emocje na zdjęciach kandydatów na prezydentów USA a David Smith użył Face API aby oceniać płeć i wiek programistów na GitHub na bazie awatarów.

Super zabawka. Miałem chwilę czasu, stwierdziłem, że się nią pobawię.
Tylko skąd wziąć publicznie dostępny zbiór zdjęć?
Z pomocą przyszła strona Sejmu. Można z niej pobrać profilowe zdjęcia posłów i posłanek.

Korzystanie z Microsoft Cognitive Services okazuje się być bardzo proste, wystarczy użyć pakietu xml2 i funkcji read_html().

Emotion API dla każdej twarzy ze zdjęcia wyznacza scory dla ośmiu emocji (anger, contempt, disgust, fear, happiness, neutral, sadness, surprise). Ale dla zdjęć profilowych posłów i posłanek praktycznie jedyne niezerowe scory otrzymuje się w emocjach happiness i neutral. Okazuje się, że niektóre zdjęcia posłów i posłanek zdobywają wyższe skory w obszarze happiness a inne w neutral.
Co ciekawe posłanki mają znacznie częściej zdjęcia wysoko ocenione w skali happiness. Posłowie mają zdjęcia zeskorowane mniej więcej pół na pół jako happy i neutral.

Poniżej wyniki w rozbiciu na kluby. Proszę traktować to jako zabawkę z Cognitive Services i nie wyciągać niewiadomo jakich wniosków. Narzędzie jak narzędzie, ma jakąś niedokładność. W pionie, kluby uporządkowane ze względu na udział procentowy posłów/posłanek zescorowanych na zdjęciach jako najszczęśliwsi.

Screen Shot 2017-01-18 at 08.36.25

Co nowego w ,,Przewodnik po pakiecie R – wydanie 4.0”?

Przewodnik1234okladka
Czwarte wydanie ,,Przewodnika po pakiecie R” trafiło do księgarń w połowie grudnia. Pierwszy nakład był mały i szybko się skończył, ale od połowy stycznia Przewodnik jest ponownie dostępny.
A ja mam trochę czasu by napisać co nowego można znaleźć w czwartym wydaniu.

Zmian jest wiele. Kierunki zmian są dwa. Po pierwsze, obniżyć próg wejścia dla osób, które dopiero zaczynają przygodę z analizą danych. Łagodnym wprowadzeniem w temat są pierwsze dwa rozdziały. W upraszczaniu tej części przydały się doświadczenia z Pogromców Danych (2000+ osób) i z różnych szkoleń dla nie-programistów.
Drugi kierunek zmian to szersze wprowadzenie do pakietów z grupy tidyverse oraz ułatwień, które oferuje RStudio. Weterani R mają różne ulubione edytory i rozwiązania codziennych problemów, ale dla osób rozpoczynających przygodę z pewnością najefektywniejszą drogą wejścia jest połączenie RStudio i pakietów z tidyverse. Również osoby pracujące z R od lat mogą z zaskoczeniem odkryć, że praca z datami jest bardzo prosta dzięki pakietowi lubridate (ok, lubridate ma już kilka lat na karku) lub że praca z czynnikami jest prosta dzięki pakietowi forcats.

Wzorem poprzednich wydań, pierwsze 3 rozdziały (150 stron) są dostępne bezpłatnie jako pdf online tutaj.

Rozdział 1 – Wprowadzenie
W pierwszym rozdziale znajduje się krótki opis narzędzia jakim jest język R i edytor RStudio.
Zaczynam od pytania ,,Dlaczego warto poznać R?”,
Czytelnik może zapoznać się z przykładowymi fragmentami kodu R do pobierania danych z internetu (z nadzieją na reakcję czytelnika ,,WoW, to się da zrobić w 5 linijkach! Ja też tak chcę!!!”), wizualizacji pobranych danych oraz prostego modelowania statystycznego. Wszystko w zaledwie kilku linijkach kodu, możliwe dzięki dużej ekspresji języka.
Jeżeli ktoś jeszcze nie wie, czy praca z R jest dla niego, ten rozdział pomoże podjąć decyzję.
Jest tutaj też krótka historia rozwoju R, od początków S po lawinowy rozwój R w ostatnich latach/miesiącach.

Czytaj dalej Co nowego w ,,Przewodnik po pakiecie R – wydanie 4.0”?

Hakaton ‘Puls miasta’ @ WhyR 2017

WhyR to Ogólnopolska Konferencja Użytkowników R, która odbędzie się 27-29 września 2017 na Politechnice Warszawskiej (więcej o WhyR). Dzień przed konferencją (26 września) planujemy przeprowadzić bardzo ciekawy hakaton z wykorzystaniem naprawdę dużych miejskich danych.

Jakich danych?
Hakaton realizowany jest w ramach projektu VaVeL (więcej o VaVeL) w którym partnerem jest Ośrodek Badań dla Biznesu PW (więcej o OBB), dzięki czemu będziemy mieli dostęp do danych z najróżniejszych sensorów w Warszawie. Jakich sensorów? Przykładowo dane o położeniu każdego tramwaju i autobusu w praktycznie każdej chwili (live + spora historia), dane o natężeniu ruchu pieszego w różnych punktach miasta, z publicznych kanałów informacyjnych i z wielu innych źródeł (rysunek po prawej to ślad z jednego dnia po sensorach z tramwaju 22). Masa danych. Mikołaj w tym roku przychodzi we wrześniu.

Jak to ogarnąć?
W ramach warsztatów poprowadzimy bezpłatne mini-wykłady z technologii BigData-owych, takich jak Hadoop czy Hive, dzięki czemu uczestnicy będą mogli i będą wiedzieć jak dostać się do tych gigantycznych zasobów. Ale nawet jeżeli ktoś nie przepada za żółtymi słoniami będzie mógł pracować na przetworzonych skrawkach danych lub też będzie mógł wesprzeć zespół od strony wizualizacji, burzy mózgów, tworzenia aplikacji mobilnych czy innych aplikacji.

Co będziemy robić?
Zbieramy różne pomysły na hackaton, ale liczymy też na burzę mózgów podczas samego wydarzenia. Analiza danych oceniających zatłoczenie przystanków na Mordorze? Aplikacja informująca ile się średnio spóźnia linia 10 w okolicach godziny 16? Wizualizacja transferu mieszkańców w różnych godzinach. Zobaczymy co z tego wyjdzie.

Jak się zarejestrować?
Więcej informacji o rejestracji pojawi się po feriach zimowych. Z pewnością warto śledzić stronę konferencji WhyR.

Is it a job offer for a Data Scientist?

screen-shot-2017-01-09-at-21-41-24
TL;DR
Konrad Więcko and Krzysztof Słomczyński (with tiny help from my side) have created a system that is tracing what skills are currently in demand among job offers for data scientists in Poland. What skills, how frequent and how the demand is changing over time.

The full description how this was done. static, +shiny.

Here: The shiny application for browsing skill sets.

Here: The R package that allows to access the live data.

Full version
A data science track (MSc level) will be very soon offered at MiNI department/Warsaw University of Technology and we (i.e. program committee) are spending a lot of time setting up the program. How cool it would be taking into account the current (and forecasted) demand on data science skills on the market? The project executed by Konrad Więcko and Krzysztof Słomczyński is dealing exactly with this problem.

So, the data is scrapped from pracuj.pl, one of the most popular (in Poland) websites with job offers.
Only offers interested to data scientists were used for further analyses.
How these offers were identified? In Poland the job title ‘Data Scientist’ is (still) not that common (except linkedin). And there are different translations and also there is a lot of different job titles that may be interested for a data scientist.
So, Konrad and Krzysztof have developed a machine learning algorithm that scores how much a given offer matches a ‘data scientist profile’ (whatever that means) based on the content of job offer description. And then, based on these predictions, various statistics may be calculated, like: number of offers, locations, demand on skills etc.

Here: Description of the dataset used for the model training.

Here: Description of the machine learning part of the project.

Trends for selected skill sets.

MIMUW vs SuperFarmer

screen-shot-2017-01-04-at-23-02-08
W 1997 roku DeepBlue (IBM) wygrał z mistrzem szachowym Garri Kasparowem.
W 2011 roku Watson (IBM) wygrał w Jeopardy! z dwoma mistrzami Bradem Rutterem i Kenem Jenningsem.
W 2016 roku AlphaGo (Google) wygrał w go z jednym z najlepszych graczy Lee Sedolem.
A w tym semestrze, pod przykrywką zajęć z programowania w R i wizualizacji danych, studenci z MIM UW walczą z grą SuperFarmer. Szukamy strategii wygrywającej (w jakimś sensie).

SuperFarmer to gra wydana przez Granna na bazie gry Hodowla Zwierzątek, którą opracował matematyk, Karol Borsuk, profesor Uniwersytetu Warszawskiego. Zasady są dosyć proste, przez co można grać nawet z małymi dziećmi. Gra jest bardzo dynamiczna i przyjemna nawet dla wytrawnych / starszych graczy.

Póki co, najlepsza znaleziona przez studentów strategia ma medianowy czas gry 34 kroki (tj. w grze jednoosobowej dla najlepszej strategii, połowa gier kończy się zwycięstwem przed 34 krokiem).

rozkladliczbyruchow

Czytaj dalej MIMUW vs SuperFarmer

Równanie Choinki

bokeh_plot-1

Bibliotek i narzędzi do tworzenia interaktywnych wykresów jest cała masa. Poczynając od tych pozwalających przy odrobienie wysiłku na wyrenderowanie praktycznie każdego możliwego wykresu (D3.js), po te generujące wykresy błyskawicznie, ale ograniczone do kilku szablonów (np. NVD3). Aby przetestować elastyczność różnych narzędzi, na ostatnich zajęciach z Technik Wizualizacji Danych wykonaliśmy test choinki – w bibliotece XYZ przygotuj interaktywną choinkę.

Poniższą przygotowali Jan Dyszyński i Maksymilian Mazur z użyciem biblioteki RBokeh (a dokładniej R-owego portu do Bokeh). Kod jest tutaj, przykład poniżej, przy odrobienie zoomu można odczytać równanie tej choinki.



screen-shot-2016-12-24-at-17-30-44

Po lewej i pod tym linkiem jest choinka, której autorem jest Piotr Smuda (najedźcie myszką aby sprawdzić jakie prezenty są pod choinką).

screen-shot-2016-12-23-at-15-03-41

Tutaj jest choinka w googleVis wykonana przez panią Małgorzatę Sobczak.

Kolejna choinka jest w ggiraph. Autorką jest Dorota Łępicka a kod jest tutaj.

screen-shot-2016-12-29-at-20-16-18