Pakiet slidify a prezentacje HTML5 w programie R

W poprzednim wpisie przedstawiałem prezentację dotyczącą statystyk nowotworu piersi. Dziś chciałbym napisać trochę o stronie technicznej, jak powstała ta prezentacja.

W skrócie: została ona wykonana z użyciem pakietu slidify dla R (http://slidify.org/). Pakiet slidify działa podobnie do pakietu knitr, z tą różnicą że w formacie markdown+r opisujemy zawartość poszczególnych slajów (jest to bardzo proste). Następnie mieszanina markdown+r jest konwertowana do prezentacji w postaci strony HTML5. Format HTML5 daje dużo możliwości jeżeli chodzi o interaktywność. W wyniku otrzymujemy prezentację, którą bardzo łatwo umieścić online, wygląda czytelnie i estetycznie (ok, gdybym dziś ją robił to zmieniłbym krój czcionki).

A co najważniejsze w takiej mieszaninie r+markdown możemy umieszczać wykresy/tabele/liczby wyznaczone bezpośrednio w R. Co jest niesamowicie potężnym narzędziem, daje duże możliwości generowania reużywalnych prezentacji/raportów.

Poniżej znajduje się przykład ,,definicji” jednego slajdu z poprzednio prezentowanej prezentacji.

---

### Wielkość guza u zdiagnozowanych kobiet [Polska]

{r fig.width=14, fig.height=5.5}
dane = read.csv("bazaDanych.csv", header=FALSE, sep=";")

par(mar=c(4,8,4,4))
boxplot(dane[,7]~dane[,1], horizontal=TRUE, las=1, xlab="Wielkość guza [mm]", range=10, bty="n",
lend=1, col="#9400D3")
axis(1, seq(0,80,10))
abline(v=0, col="grey", lty=3)

Btw: RStudio pracuje nad własną wersją takiego generatora prezentacji. Na konferencji use!R 2013 dostępna była późna alfa/wczesna beta. Więc pewnie niedługo takie prezentacje będzie można generować łatwo w samym RStudio.

Statystyki dotyczące nowotworu piersi

Jakiś czas temu agencja ExpertPR poprosiła naszą Fundację o zaprezentowanie statystyk dotyczących nowotworu piersi w Polsce. Temat bardzo mnie zainteresował (spędziłem w przeszłości kilka lat na współpracy z onkologami w analizie danych dotyczących nowotworów). Przygotowaliśmy więc prezentację, a Pani Prezes ją przedstawiła.

Dziś chciałbym w skrócie tę prezentację zaprezentować na blogu.

Link do prezentacji znajduje się tutaj. Poniżej prezentowane wykresy są ,,klikalne” i przekierowują na wskazaną stronę prezentacji. Cała prezentacja została wykonana w czystym R [o technikaliach napiszę więcej w czwartek].

W prezentacji przedstawione są wybrane informacje o epidemiologii choroby, o postępach w walce z tą chorobą i o postrzeganiu tej choroby [wybrane, temat jest zdecydowanie szerszy niż pozwalała na jego omówienie półgodzinna prezentacja]. Poniżej przedstawiam cztery wybrane slajdy.

Rośnie liczba zdiagnozowanych przypadków raka piersi

Jak widzimy na poniższym wykresie liczba zdiagnozowanych przypadków szybko rośnie. Ta informacja ma pozytywny wydźwięk. Dlaczego? Rosnąca liczba zdiagnozowanych przypadków jest związana z coraz wcześniejszym wykrywaniem nowotworu. A to z kolei znacząco zwiększa szansę na powodzenie leczenia.

Rośnie liczba artykułów na temat raka piersi

I artykułów naukowych (jest to bardzo gorąca dziedzina badań) i artykułów ,,popularnonaukowych”. To również pozytywne zjawisko. Jednym z problemów pacjentów jest trudność w dotarciu do informacji o chorobie, niepewność, jak leczenie wygląda w Polsce. Większa dostępność informacji o chorobie pomaga chorym przynajmniej w tym aspekcie.

Media społecznościowe a rak piersi

Okazuje się, że media społecznościowe spełniają ważną rolę grupy wsparcia dla osób chorych. Nie mówią tu o akcjach typu klikamy ,lubię tu’, ale o miejscu gdzie osoby chore mogą się spotkać i podzielić obawami/przeżyciami/pytaniami.

Zaskoczony byłem, że np. na Twitterze funkcjonuje kanał #BCSM (Breast Cancer Social Media), na którym organizowane są wideo konferencje, odczyty, przemowy zaproszonych osób. W trakcie takiej konferencji na wskazanym kanale słuchacze dzielą się komentarzami.

Podobne inicjatywy można spotkać na innych mediach.

Przeżywalność 5-letnia a różne czynniki

Nikt nie wie jak potoczą się losy konkretnego chorego. Ale patrząc na średnie można odczytywać jak szanse na przeżycie np. pięciu lub dziesięciu lat zmieniają się w zależności od wielkości i złośliwości odkrytego guza. Zupełnie zgodne z oczekiwaniami jest to, że guzy wcześnie wykryte znacznie lepiej rokują, jeżeli chodzi o szanse leczenia. Ale o ile lepiej i jakie są ,,wyjściowe” szanse?

Więcej informacji można znaleźć w cytowanej prezentacji.

Każdy czy statystyczny, czyli lista zabawnych tytułów artykułów

Trafiłem dzisiaj na artykuł o zabawnym tytule ,,Każdy (statystyczny) Polak posiada infrastrukturę o wartości 142 tys. zł”. Autor nie mógł się zdecydować, czy każdy Polak posiada tę infrastrukturę, czy jednak nie każdy Polak, ale jakiś statystyczny Polak. Strategia prawie jak z testów wielokrotnego wyboru ,,zaznaczę dwie opcje, może którąś trafię”.

W tym jednak przypadku żadna z tych opcji nie ma sensu. Jeżeli uznać, że ,,posiadanie infrastruktury” oznacza prawo do korzystania z niej, to każdy Polak ma prawo do korzystania z całej infrastruktury o wartości 5500 mld zł (chodzi głównie o drogi i lotniska). Jeżeli przyjąć, że ,,posiada” oznacza prawo do dysponowania, odsprzedaży itp, to z pewnością niewielu Polaków ma takie prawo posiadania. Co miałoby znaczyć ,,statystyczny Polak” też nie wiadomo.

Słowo statystyczny/statystycy/statystyka często przez dziennikarzy jest wstawiane w zabawne miejsca (przynajmniej zabawne w moim odczuciu). Ponieważ od jakiegoś czasu agreguję RSSy z różnych portali, postanowiłem sprawdzić, w jakim kontekście pojawia się słowo ,,statysty*” w tytułach artykułów.

Oto zabawniejsze tytuły i podtytuły (ograniczam się do wiadomości z kraju i ze świata, do działu ,,plotki” boję się zaglądać):

,,Częstochowa bezpieczna statystycznie” (czytaj: W Częstochowie jest najmniej przestępstw w przeliczeniu na mieszkańca).

,,Statystyczny bezrobotny to nie magister” (czytaj: Większość bezrobotnych nie ma magistra).

,,Święta statystycznie wesołe” (Nie wyjaśniono o co chodzi z tym ,,statystycznie”).

,,Statystyka sobie, a śnieg sobie. I wciąż go przybywa” (czytaj: W tym roku śnieg później stopniał)

,,Ekonomiści nie mają wątpliwości, że rząd idzie drogą manipulacji statystycznej” (Podtytuł odnoszący się do wypowiedzi jednego ekonomisty)

,,Urząd statystyczny Unii Europejskiej opublikował nowy raport. Analitycy się tego nie spodziewali” (Zabawnie wygląda bez kontekstu, ale dalej jest informacja, że analitycy nie spodziewali się spadającego bezrobocia a nie raportu)

I moje ulubione:

,,Statystycy: dzieje nam się krzywda” (O obniżce wynagrodzeń pracowników US z Katowic).

Recenzja książki ,,Data points”, Nathan Yau, część pierwsza

Ostatnio trafio w moje ręce sporo ciekawych książek o projektowaniu i o wizualizacji danych. Aby pomóc sobie w zdyscyplinowanym czytaniu kolejnych dzieł, postanowiłem przygotowywać mini recenzje dla czytanych pozycji. Nie będą to klasyczne recenzje ani rekomendacje, raczej zbiór ciekawostek, które w tych książkach znalazłem, a o których nie chciałbym zapomnieć. Może Was też zainteresują.

Zacznę od książki ,,Data points” Nathana Yau.

Autor jest statystykiem, który prowadzi bardzo ciekawy blog http://flowingdata.com/. Na swoim blogu przedstawia ciekawe i nieciekawe wizualizacje, które znalazł na sieci, w gazetach czy innych mediach. Poza blogiem pisze też książki o wizualizacji danych. Jak dotąd napisał dwie: ,,Visualize this” i ostatnio ,,Data points”. Dostałem obie, ale lekturę zacząłem od drugiej, zachęcony podtytułem ,,Visualization that means something”.

Właściwie ten podtytuł jest streszczeniem całej książki. Na różnych przykładach pokazywane jest co to właściwie znaczy, że wizualizacja ma znaczenie, coś znaczy, coś mówi. Dostępność narzędzi typu Excel, Tableau, D3, R pozawala na szybkie wygenerowanie dziesiątek wizualizacji. Ale podobnie jak w fotografii cyfrowej łatwość pstrykania idzie w parze z zalewem ,,wizualizacji”. Zachłyśnięci możliwościami programów renderujących wirujące wykresy w 3D, często nie zastanawiamy się co ta wizualizacja ma pokazać. Czy potrzebujemy kolejnych dwudziestu wykresów słupkowych? W rezultacie dostajemy kilkudziesięcio, kilkuset stronicowe raporty wygenerowane przez automat i które tylko automat chciałby czytać.

Nathan Yau ciekawie rozpoczął mówienie o wizualizacji. Mianowicie zaczął od tego, że wizualizacja jest abstrakcją danych. A dane są abstrakcją rzeczywistości, więc wizualizacja jest abstrakcją abstrakcji. Czymś co z założenia może być trudno zrozumieć. Aby ułatwić jej zrozumienie, ważne jest zrozumienie kontekstu w jakim dana wizualizacja będzie czytana.

Pierwszy przykład, który przedstawia, dotyczy wizualizacji fotografii zrobionych podczas dnia jego ślubu. Poniższy histogram pokazuje zarówno liczbę zdjęć zrobionych przez fotografa w czasie, z objaśnieniem ,,ciekawszych momentów”. Dodatkowo zaznaczono dominujący kolor na zdjęciu zrobionym o określonej porze, co osobom będącym na tym weselu pozwoli być może nawet odtworzenie co znalazło się w obiektywie fotografa.

Dalej autor kontynuuje temat wizualizacji danych bliskich osobie wykonującej wizualizacje. Powiedzielibyśmy ,,osobistych”. Znaczenie tych wizualizacji zależy od wiedzy obserwatora na temat danego przedmiotu.

Z wymienionych ciekawych projektów:

Nicholas Felton – projektant, który co roku na tej stronie publikuje raport o tym, co się działo w jego życiu w poprzednim roku. Wizualizuje informację o tym z kim się spotykał, co robił, gdzie był, co czytał. Gdy zmarł jego ojciec przygotował taki raport podsumowujący życie ojca, z informacjami np. jakie książki były w jego biblioteczce, które z nich dotyczyły podróżowania, które były przewodnikami dla turystów i do których z tych krajów ojciec się wybrał a do których nie. Bardzo osobiste, jednocześnie pokazujące znaczenie kontekstu. Ta sama wizualizacja ma zupełnie inne znaczenie dla osób znających ojca Nicholasa a inne dla przypadkowych odbiorców.

Tim Clark – projektant, autor między innymi ,,Atlas of the Habitual”, który można zobaczyć tutaj. Nie tylko zbierał dane o swojej lokalizacji przez kilka lat. Również je zwizualizował. Poszczególne lokalizacje otagował, tak by przy wizualizacji pogrupować pokonane trasy w zależności od celu wyprawy. Jedna z otagowanych aktywności to wizyty u jego dziewczyny, z którą po jakimś czasie zerwał. Powtarzający się przez jakiś czas wzorzec odwiedzin określonej dzielnicy znikł w chwili zerwania. Dla osoby znającej tę historię ,,analiza” tego wzorca ma inną wartość i jest inaczej odczytywana niż dla przypadkowego czytelnika.

Kristian Cvecek – fotograf robiący zdjęcia świetlikom. Przykładowe fotografie znaleźć można tutaj. Również w tym przypadku im więcej wiemy o kontekście tym bardziej losowe mazaje na fotografii zamieniają się w historię o przewidywaniu pozycji świetlika na bazie jego przeszłych pozycji.

,,Efekt rodzica”, czyli o szansach edukacyjnych dzieci a zawodzie rodzicow

Ostatnio dużo pracuję z danymi PISA. [PISA to badanie powtarzane co trzy lata dotyczące wyników 15-latków z całego świata w testach matematycznych, przyrodniczych i dotyczących czytania. Można porównać wyniki uczniów z ponad 50 krajów. W grudniu udostępnione będą dane z edycji 2012, poniżej pokażę wyniki dla edycji 2009.]

To co mnie w tym zbiorze szczególnie interesuje to możliwość oceny jak różne czynniki korelują z wynikami uczniów. Próba rozplątania uwikłanych efektów szkoły, domu (najczęściej rodziców), systemu edukacji i indywidualnych predyspozycji to fantastyczne puzzle.

Jeżeli chodzi o efekt domu to oczywistymi czynnikami korelującymi z wynikami uczniów są zamożność rodziców i poziom wykształcenia rodziców. Okazuje się jednak, że jest inna bardzo ciekawa zmienna, związana z oboma powyższymi a jednocześnie dużo ciekawsza w interpretacji.

Chodzi mianowicie o zawód rodzica. Zawody w badaniu PISA są kodowane zgodnie z klasyfikacją ISCO (International Standard Classification of Occupations). Kod ma cztery cyfry, pierwsza cyfra odpowiada ,,statusowi społecznemu” zawodu (1 – managerowie, 9 proste zawody bez większych kwalifikacji). Druga cyfra określa grupę zawodów (np. 2xxx oznacza wysoko wyszkolonych specjalistów, 21xx inżynierów, 22xx w służbie zdrowia, 23xx w szkolnictwie wyższym, itp). Kolejne cyfry doprecyzowują zawód. Tą cechę jednak trudno analizować ponieważ ma w sumie kilkaset poziomów, dlatego też w analizach często zawód rodziców jest zastępowany jakimś pojedynczym indeksem.

Ale okazuje się, że analiza zawodów daje ciekawe wyniki. Zobaczmy na poniższym drzewie, jakie są średnie wyniki studentów, których przynajmniej jeden rodzic należy do określonej grupy zawodów [Wyniki dla Polski].
Na osi OY wynik z testu matematycznego, im wyżej tym lepiej. Wielkość kropki odpowiada liczbie uczniów w tej grupie. Pozioma kreska to średnia z ,,pierwszej cyfry” ISCO.

Bardzo wyraźnie dzieci rodziców z grupy 2xxx mają wyższe wyniki niż pozostałe grupy. Ta sytuacja powtarza się i dla czytania i dla nauk przyrodniczych i dla większości innych krajów.

Wynik o tyle ciekawy, że zanim go zobaczyłem, spodziewałem się, że to grupa 1xxx będzie miała najwyższą średnią [dzieci osób mających środki i widzę by zapewnić ,,najlepszą szkołę”]. (grupa 1xxx jest średnio bardziej zamożna od 2xxx, z wykształceniem jest już różnie w różnych krajach).

Tymczasem rodzic fizyk, lekarz, inżynier ,,zaraża” (średnio) do nauki bardziej niż wyżej sytuowany manager (wszystko to operacje na średnich).

Zobaczmy jak ta sytuacja wygląda w innych krajach. Za lidera w Europie uważa się Finlandię, kraj przodujący w rankingach. Kraj w którym rozwarstwienie społeczne w szkołach jest uważane za jedno z najmniejszych. Zestawmy wyniki uczniów dla różnych grup zawodowych rodziców Polski i Finlandii.

Co ciekawe okazuje się, że wyniki dla pewnych grup zawodowych w Polsce są porównywalne czy nawet wyższe niż dla odpowiedników z Finlandii.

Wygląda więc na to, że w Finlandii wysoka średnia jest uzyskana dzięki poprawianiu szans edukacyjnych dzieci rodziców z gorszych profesji.

Kuszący wniosek to: nie wystarczy mieć środki by zapewnić (=kupić) dostęp do dobrej szkoły i innych narzędzi edukacyjnych. Istotnym czynnikiem jest ,,zarażenie” dziecka, co jest pewnie łatwiejsze gdy dziecko widzi jak nauka funkcjonuje w świecie rodziców.

Przedmowa do trzeciego wydania ,,Przewodnika po pakiecie R”

To już ostatni wpis z serii pokazującej co nowego w nowym wydaniu ,,Przewodnika…”. Tym razem umieszczam przedmowę do trzeciego wydania. Dlaczego?

Przedmowa odpowiada na dwa pytania. Po pierwsze, dlaczego zamiast rozwijać rozdziały o statystyce zajmuję się funkcjonalnościami związanymi z ,,powtarzalnością badań”. [Jest to moim zdaniem szalenie ważne zagadnienie, któremu nie poświęca się obecnie wystarczającej ilości uwagi] Po drugie, dlaczego, gdy wszystko jest elektronicznie dostępne w Internecie, poświęcam czas na przygotowanie drukowanej książki.

W skrócie odpowiedzią na oba pytania jest moje przekonanie, że w dzisiejszym świecie elementem kształcenia wyższego, czy na kierunkach matematycznych, technicznych, przyrodniczych czy medycznych powinna być analiza danych. Powtarzalność analiz odgrywa tu ważną rolę i trzeba się jej uczyć i uczyć jej innych. Program R nadaje się do tego świetnie. Jest prosty, intuicyjny i potężny. Mam nadzieję, że drukowany, odpowiednio zaprojektowany podręcznik, po którym można pisać, dodawać zakładki, szybko kartkować będzie w tym zadaniu [i uczeni się i uczeniu innych] dużą pomocą.

Ciekaw jestem jakie jest Wasze zdanie na ten temat. Czy warto uczyć o powtarzalnych badaniach? Może przy okazji kursu ,,statystyka” dla studentów kierunków medycznych i przyrodniczych warto też podkreślać jak ważna jest powtarzalność i automatyzacja analiz. Czy warto uczyć się na podstawie drukowanego podręcznika?

Fragment książki ,,Przewodnik po pakiecie R”, wydanie 3, Przemysław Biecek

,,Zanim zaczniemy tę przygodę”

Pierwsze wydanie ,,Przewodnika…” zostało opracowane w latach 2006-2007, czyli ponad 7 lat temu. Od tego czasu program R bardzo się zmienił. Liczba dodatkowych bibliotek zwiększyła się wielokrotnie, przekraczając w tym roku cztery tysiące bibliotek. W międzyczasie rozwinął się również silnik R. Z wersji 2.6.0, przez wersję 2.15.1, aż do wersji 3.0.1 wydanej w kwietniu 2013 roku.

Równie duża zmiana dotyczy autora tego ,,Przewodnika…”. Przez te kilka lat miałem przyjemność prowadzić wykłady, ćwiczenia i laboratoria dla studentów Politechniki Wrocławskiej i Warszawskiej, Uniwersytetu Warszawskiego i Wrocławskiego. Szkolenia dla pracowników naukowych, biologów czy genetyków oraz pracowników instytucji finansowych, banków czy firm konsultingowych. Miałem więc możliwość obserwowania, w jaki sposób różne osoby poznają R, co im ułatwia a co utrudnia naukę i pracę z tym programem.

Moja robocza teoria dotycząca efektywnego poznawania R wyróżnia trzy etapy nauki. Pierwszy etap można nazwać ,,zbieraniem motywacji”. Początkujące osoby zauważają, że do nauki R trzeba włożyć trochę wysiłku i zastanawiają się czy warto. Aby ich przekonać, pręży się muskuły R, pokazuje jak można tworzyć aplikacje sieciowe, animacje, jak prosto zbudować wyrafinowany model statystyczny, jak prosto wygenerować raport czy powtórzyć obliczenia dla zmodyfikowanych danych. Ten etap najlepiej przejść słuchając prezentacji zaawansowanych użytkowników R, na żywo czy w formacie video np. na portalu youtube.com.

Drugi etap to poznawanie zasad funkcjonowania programu R, poznawanie techniki programowania w R, uczenie się filozofii pracy z tym pakietem, budowa mapy/atlasu pojęć związanych z programem R. Na tym etapie idealnie sprawdzają się podręczniki. Jeżeli nie są poświęcone opisowi wąskich, specjalistycznych rozwiązań to mogą zachować aktualność przez wiele lat. Tempo uczenia można sobie indywidualnie dostosować, niektóre rozdziały pominąć, inne przeczytać kilkukrotnie. Na marginesach umieścić komentarze i notatki. Mam nadzieję, że na tym etapie ,,Przewodnik po pakiecie R” będzie bardzo pomocny.

Trzeci etap to szlifowanie i uaktualnianie informacji o programie R. Pakiet się rozwija, warto poznawać nowe możliwości, czy też stare możliwości o których wcześniej nie słyszeliśmy. Tutaj idealnie sprawdza się czytanie blogów (pod adresem http://www.r-bloggers.com/ dostępny jest agregator kilkudziesięciu blogów o R), uczestnictwo w konferencjach, nieformalnych spotkaniach użytkowników R, czy też prozaiczne googlowanie wokół interesujących nas tematów. Na tym etapie bardzo pomocny jest dostęp do Internetu. Zarówno biblioteki programu R zmieniają się szybko, jak i szybko pojawiają się nowe bardziej efektywne, czasem efektowne, rozwiązania.

Na każdym z tych etapów pomocne jest pracowanie z innym użytkownikiem/użytkownikami R. Ponieważ większość problemów można rozwiązać na wiele sposobów, dlatego też bardzo dużo można nauczyć się porównując różne sposoby rozwiązania tego samego problemu. Ostatnio prowadząc zajęcia zadaję studentom ten sam projekt do wykonania, następnie najlepsze projekt są omawiane publicznie. To niesamowite, jak różne są te rozwiązania i jak wiele interesujących ciekawostek różne osoby wyszukują. A to efektywniejsze wczytywanie danych, a to zmiana kroju pisma na wykresie, a to animacja zanurzona w pliku pdf.

Jeżeli chodzi o takie ciekawostki czy nowości, nie sposób przecenić użyteczności Internetu i portali typu stats.stackexchange.com (Cross-Validated). Głównie z powodu łatwości wyszukiwania informacji w Internecie. Wiedząc czego się szuka w kilka minut można znaleźć odpowiedź na jakimś forum, w dokumentacji czy roboczych notatkach innego użytkownika. Papierowa ,,mini encyklopedia” nie będzie nawet w części tak przydatna jak internetowa wyszukiwarka. Jednak uczenie się wyłącznie na bazie samych ciekawostek i zespołowych projektów (a i takie eksperymenty robiłem) owocuje fragmentaryczną wiedzą. Ciekawostki są otaczane koślawymi rozwiązaniami, czcionka na wykresie jest ciekawa ale sam wykres niedopracowany a dane błędnie przetworzone.

Jest wiec w procesie nauki R miejsce dla podręczników. Na drugiem etapie uczenia zbudowanie bazy, szkieletu, przedstawienie krok po kroku filozofii pracy z programem R jest bardzo ważne. Pozwala spojrzeć szerzej co jest dostępne na horyzoncie możliwości. Ułatwia późniejsze wyszukiwanie informacji i uaktualnianie naszej wiedzy o programie R. Uważam wręcz, że dobry kurs programu R to połączenie odpowiedniego podręcznika do samodzielnego czytania i projektowej pracy z rzeczywistymi problemami. Wymaga to czasu i wysiłku, ale owocuje znacznie lepszymi efektami niż uczenie się od początku na samych przykładach.

,,Przewodnik po pakiecie R” powstał po to by towarzyszyć w nauce, by przedstawiać atlas rozwiązań, by wskazywać mielizny i rafy. Mam nadzieję, że ta pozycja oferuje szerokie a jednocześnie jednolite spojrzenie na wiele rozwiązań dostępnych w R. Zarówno jeżeli chodzi o możliwości obliczeniowe, możliwości w modelowaniu statystycznym jak i możliwości w zakresie prezentacji danych. Starałem się zachować rosnący poziom trudności, przygotowując łatwe do zrozumienia i interesujące przykłady z komentarzami. Zostawiając też miejsce dla czytelnika do samodzielnego sprawdzenia ,,co się stanie”.

Trzecie wydanie przeszło gruntowny lifting. Usunąłem informacje o pakietach, które już nie są używane (np. świetny pakiet \verb:CoCo: został już usunięty z serwerów CRAN), dodałem informacje o aktualnie używanych rozwiązaniach, takich jak np. RStudio (rewelacyjny edytor do R). Wciąż uczę się też pisać. Przeformułowałem wiele zdań, przykładów czy komentarzy sprzed kilku lat. Mam wrażenie, że pewne rzeczy potrafię teraz przedstawić lepiej, zobaczymy co będę o tym myślał za kolejnych kilka lat. Pisanie bloga jest moim zdaniem świetną praktyką języka. Choć oczywiście zdaję sobie sprawę, że jeszcze wiele rzeczy do poprawienia.

Zmiany dotyczą również formy. Zmieniłem krój pisma na Minion Pro, zmieniłem sposób formatowania kodu R i sposób umieszczania komentarzy. Papierowe książki nie męczą tak wzroku jak aktywnie świecące ekrany. Autor ma pełną kontrolę nad typografią i projektem książki, może rozmieścić treść tak by łatwo było porównać napis z lewej strony z napisem na prawej stronie. Przyjemny w czytaniu krój pisma może pozytywnie nastawić czytelnika. To efekty, których nie doceniałem kilka lat temu, teraz jednak przekonany jestem, że są one ważne.

Jest też kilka zupełnie nowych podrozdziałów, które odzwierciedlają moje obecne zainteresowania. W wydaniu drugim rozbudowany został rozdział o grafice i wydajnym przetwarzaniu. W tym wydaniu dodałem opisy pakietów knitr, slidify i shiny pozwalających na wsparcie komunikacji pomiędzy statystykiem a końcowym odbiorcą. Więcej miejsca poświęciłem tematowi powtarzalnych analiz i obliczeń, łatwych do zweryfikowania i powtórzenia.% Ten temat staje się coraz ważniejsze i w nauce i w przemyśle.

Powtarzalność badań odgrywa olbrzymią rolę. Zarówno w~nauce jak i przemyśle. Jest to tak ważne zagadnienie, że powinien towarzyszyć kursom ze statystyki i analizy danych dla wszystkich studentów nauk medycznych, przyrodniczych i oczywiście technicznych. W przemyśle pozwala zwiększyć produktywność i~oszczędzić dużo czasu, zarówno gdy wracamy do pewnego zagadnienia po pewnym czasie, jak i~gdy musimy ponownie wykonać pewien raport. W~nauce możliwość odtworzenia wyników to fundamentalny wymóg, każdego rzetelnego badania. Mam nadzieję, że ten podręcznik przedstawi możliwości R w zakresie badań powtarzalnych.

Na koniec chciałbym podziękować wszystkim osobom, które przyczyniły się do powstania tego wydania. Jest ich na szczęście zbyt wiele by wymienić je wszystkie. Najbardziej dziękuję mojej żonie, Karolinie, bez której nie tylko to wydanie ale też wiele innych projektów nigdy by nie powstało.

Moją aspiracją przy pisaniu trzeciego wydania było zbudowanie i pokazanie atlasu rozwiązań dostępnych w R, pozwalających na zrozumienie możliwości, logiki, schematów pracy z R. Programowanie w R może być przyjemnością, która wynika z braku ograniczeń jak i z estetyki dostępnych rozwiązań. Mam nadzieję, że uda mi się tę estetykę i tę przyjemność pracy z danymi pokazać. Życzę więc wielu fantastycznych wrażeń w pracy z programem R.

Przemysław Biecek
Paryż, 2013

The Future of Programming

Całkiem przypadkiem trafiłem na prezentację ,,The Future of Programming” przedstawioną przez Breta Victora. Link do prezentacji znajduje się tutaj.

Prezentacja jest ciekawa i ze względu na formę i ze względu treść. Główne przesłanie jest takie, że często wpada się w pułapkę szablonu ,,wiem co robię i wiem jak to powinno być robione”. Autor ładnie ilustruje tę pułapkę na przykładzie ewolucji języków programowania czy architektury komputerów. Ale oczywiście ta pułapka pojawia się w wielu miejscach, ,,wiem, że uprawiam naukę, przecież właśnie to jest nauka [=publikowanie w czasopismach]” lub ,,wiem, że analizuję dane, przecież właśnie tak się analizuje dane [=używam regresji i testów t-studenta]”. [notka dla szybko czytających konserwatystów: NIE uważam, że nie należy publikować czy używać regresji czy testu t].

Bret Victor – The Future of Programming from Bret Victor on Vimeo.

[Jeżeli poniżej nic się nie pojawia to dwudziestokilkuminutowe wideo można znaleźć tutaj]

Gdzie w Polsce czeka się najdłużej w kolejce do lekarza specjalisty?

Tydzień temu pisałem o danych opublikowanych przez NFZ dotyczących kolejek do lekarzy specjalistów [wpis tutaj].

W między czasie ściągnąłem dane ze wszystkich województw. Użyłem pakietu SmarterPoland aby pobrać z google maps współrzędne poradni. Wykorzystałem regresję k-sąsiadów by dla każdej lokalizacji w Polsce oszacować średni czas oczekiwania w kolejce do lekarzy specjalistów (w skrócie średnia z 10 najbliższych poradni).

Poniżej wyniki dla specjalności, dla których w Polsce jest przynajmniej 600 poradni (przy mniejszej licznie poradni obszary są ,,kanciaste”).

Co ciekawego można wyczytać?
Z poniższej mapy np. to, że w Częstochowie do specjalisty alergologa trzeba średnio czekać do pół roku, ale wystarczy wybrać się w okolice Katowic by średni czas oczekiwania spadł do dwóch miesięcy.

[Legenda po prawej stronie opisuje średnią liczbę dni czekania w kolejce na podstawie 10 najbliższych poradni.
Czarne kropki oznaczają poradnie z danej dziedziny]

Ale w przypadku endoskopii jest już odwrotnie. Czasem aby skrócić okres czekania warto wybrać się z Katowic do Częstochowy.

A pozostałe poradnie?

Czytaj dalej Gdzie w Polsce czeka się najdłużej w kolejce do lekarza specjalisty?

Zabawy z typografią, czyli co nowego w ,,Przewodniku po pakiecie R” wydanie trzecie.

W poprzednich dwóch wpisach przedstawiłem dwa nowe fragmenty trzeciego wydania ,,Przewodnika po pakiecie R” (pakiety plyr i shiny). Tak się jednak składa, że zmieniło się również dużo w zakresie typografi. I o tych zmianach napiszę dzisiaj.

Napiszę z pewną nieśmiałością. Typografia to dziedzina, w której nowicjusze (a za nowicjusza się uważam) nie powinni zdawać się na intuicję, bo ta łatwo wyprowadzi ich na manowce. Zbyt wiele możliwości by zawierzyć intuicji.

Skoro to taka niebezpieczna dziedzina, to po co pchać palce między drzwi i samodzielnie składać książkę? Czy nie lepiej zlecić to komuś kto na sprawie się zna? A jeżeli już składać to może pozostać przy domyślnych ustawieniach LaTeXa?

Dla składu książki może byłoby lepiej, może nie, nie wiadomo. Ale z pewnością gdybym ten skład zlecił komuś innemu, to nie miałbym okazji się go nauczyć. A w przyszłości, im bardziej niestandardowe pomysły, tym skład może odgrywać większą rolę.

Zresztą, może bym nie targnął się na dużą zmianę wyglądu, gdyby nie to, że w maju dotarło do mnie nowe wydanie ,,Elementarza stylu w typografii” Roberta Bringhursta. Zacząłem czytać. Na początku zdziwiło mnie, że tak przeszkadzają mi ogonki litery y w tej książce, która to niby ma być elementarzem stylu. A później się w nich zakochałem. [ok, przesada, ale bardzo mi się podobają]

Spędziłem więc kilka tygodni na różne eksperymentach, próbując dziesiątek różnych wersji ,,Przewodnika …”. Trwało to długo bo po każdej większej zmianie potrzebowałem czasu by nabrać do niej dystansu. A później pomyślałem, że byłoby miło zobaczyć jak wyglądała ścieżka ,,badanych” rozwiązań. Szczęśliwie Dropbox ma możliwość przeglądania historii zmian pliku, dzięki czemu mając już jedno wybrane rozwiązanie, można przyjrzeć się jak wglądały poprzednie wersje.

Zobaczmy więc jak zmieniało się oznaczenia kodu programu R w trzecim wydaniu.

Formatujemy kod R

Punktem wyjścia było szare tło z ramkami po bokach, takie jak w drugim wydaniu Przewodnika.

Pierwsza zmiana polegała na przejściu z kodowaniem na UTF8. To kodowanie było mi potrzebne by móc pracować z XeLaTeXem i korzystać z dodatkowych krojów pisma. Niestety otoczenie listings zupełnie nie radziło sobie z tym kodowaniem.

Naprawimy to później. W pierwszym kroku chciałem pozbyć się znaków ‘>’ i ‘+’ przed kodem R. Znaki te rozpraszają. Co więcej, im więcej pracuje się w edytorze a mniej w konsoli, tym rzadziej ogląda się te znaki.
Ale jeżeli usunąć ‘>’ i ‘+’ to trzeba jakoś inaczej oznaczyć który fragment kodu jest wejściowy a który jest wynikiem.
Może szarym tłem?

Nie wyglądało to najlepiej, może więc odwrotnie, niech wynik będzie na szarym tle.

To też wyglądało źle, gdy na stronie pojawia się tylko jedna linia wyniku. Pojedyncza szara linia nie wiadomo co znaczy. Może więc zmienimy grubość linii ramki wokół wyjścia.

Z cienkimi liniami jest jednak dużo problemów przy wydruku. Może więc je poszerzmy.

Potrzebowałem kilku dni by odkryć że wygląda to tragicznie. Najgorsze wrażenie robiła zebra fragmentów wejściowych i wyjściowych. Zrezygnujmy więc z niej. Niech tło będzie białe a to co jest wejściem lub wyjściem niech oznacza grubość linii ramki.

Cienka ramka wygląda źle, może więc ją pogrubimy?

Pogrubiona też wygląda źle. Te nieciągłości w grubości wyglądały jakby miały zranić czytelnika.
Zobaczmy jak wyglądać będzie stała szerokość.

Ale teraz nie wiadomo co jest wejściem a co wynikiem. Wynik oznaczymy więc znakiem ##, tak jak to robi pakiet knitr.

Wciąż za mało rzuca się w oczy co jest wejściem a co wynikiem. Dodajmy więc przerwę w ramce tam gdzie kończy się wynik a zaczyna kolejny fragment kodu R.

Dopiero w tym miejscu dotarło do mnie, że nadużywam komentarzy. Po co komentarze w kodzie R, skoro piszę książkę i mogę dowolnie komentować kod językiem naturalnym. Kiedyś uważałem, że wklejanie komentarzy w kodzie R to dobry pomysł, ale to było lata temu, i już nie pamiętam czemu tak uważałem.

Komentarze w języku naturalnym wyglądają lepiej. Ale usuńmy wcięcia, bo te wyglądają strasznie sztucznie.

W tym miejscu zaczęły mi przeszkadzać przerywane linie ramki. Na stronach gdzie było dużo kodu takie przerywane brzegi wyglądały jak serie z karabinu. Zastąpmy je szarym tłem.

Lepiej, ale na szarym tle szare komentarze są mało widoczne. Zróbmy je ciemniejszymi.

Ponieważ wokół kodu jest sporo pustej przestrzeni, mogę trochę ten kod pomniejszyć. Dzięki temu skrócę książkę o ponad 20 stron, nie wpłynie to na czytelność, a odrobinę mniejsza czcionka będzie dodatkowo pełniła rolę wyróżnika.

Zmniejszymy też marginesy.

Małe marginesy gorzej wyglądają, wrócimy do poprzednich,
I czas jeszcze dopracować te koślawe komentarze.

Ostatecznie zmieniłem czcionkę z Palantino na Minion Pro + Inconsolata. Po tych zmianach ramka wygląda następująco.

W tym miejscu uznałem, że ta forma gotowa jest do użycia.

Wybieramy krój pisma

Wspomniana książka ,,Elementarz stylu w typografii” została złożona krojem Minion Pro. Pięknym krojem. Przez kilkanaście dni próbowałem zmusić LaTeXa by zaczął go używać. Niestety na wszystkich frontach i w wersji na MacOS, i Windows, i Ubuntu zostałem pokonany.

Ale nie wszystko stracone, jest inny podobny i też ładny krój. Palantino… (i cała kolekcja różnych jego klonów) Zanim do niego jednak dojdziemy, zobaczmy jak wyglądało wydanie drugie, złożone domyślną czcionką LaTeXową, czyli Computer Modern, zaprojektowaną przez Donalda Knutha.

Używając XeLaTeXa (niestety związane to było z przejściem na UTF8) najłatwiej było mi zacząć z TeX Gyre Pagella. Czcionka wzorowana na Palantino URW.

Kolejnym krokiem było UTW Palantino. Zobaczmy jak zmieniły się ogonki.

Ale w powyższej wersji ligaturki są złe, co widać np. po cudzysłowach. Naprawiamy to.

I w między czasie nauczyłem się jak używać Minion Pro. Czas więc przejść na tę czcionkę [XeLaTex pozwala na wykorzystywanie czcionek zainstalowanych w systemie. Wystarczy wiec sciagnac/kupic kroj w formacie OT lub TT aby go używać w XeLaTeXu].

I tak już zostanie.