Najgorszy wykres 2017 roku

Zbliża się Sylwester, czas więc wybrać najgorszą prezentację danych opublikowaną w roku 2017.
Konkurs na najgorszą wizualizację przeprowadzamy co roku od 2012 (edycja 2016, edycja 2015, edycja 2014, edycja 2013, edycja 2012). W tym roku było wiele ciekawych zgłoszeń przesłanych przez facebook, emailem, od studentów przedmiotu Techniki Wizualizacji Danych. Ze zgłoszeń wybrałem 10 niezwykłych wykresów, mogących moim zdaniem śmiało rywalizować o tytuł najgorszego wykresu ever.

Zasada plebiscytu jest prosta. Do końca roku można wskazywać swoje typy na najgorszy wykres, głosując za pomocą ankiety umieszczonej na końcu tego wpisu (w jednym dniu można głosować tylko raz. Jednocześnie można wskazać do 5 kandydatów). Po nowym roku zobaczymy, który wykres otrzymał najwięcej głosów. To on otrzyma tytuł „Zniekształcenie roku 2017”. Aby ułatwić głosowanie, każdy kandydat ma skrótową wpadającą w ucho nazwę.

1. Detale są bez znaczenia

Ten wykres pochodzi z tvn24. Za pomocą słupków przedstawiono nakłady na zdrowie jako % PKB. Co jednak ciekawe, długość słupków wcale nie jest proporcjonalna do prezentowanych liczb. Słupki systematycznie sobie rosną zaznaczając wyłącznie kolejność. Wartość zakodowana przez pierwszy słupek różni się od wartości zakodowanej przez czwarty tylko o 1,2 pp. Różnica pomiędzy dwoma ostatnimi to 1,5 pp. Długość słupków tylko wprowadza w błąd. Wartości liczbowe zostały zignorowane – jak widać to tylko detale.

Screen Shot 2017-10-24 at 21.55.04

2. 12%

Ten wykres pochodzi z benchmarku nvidia. Wygląda na to, że wzrost wydajności jest naprawdę duży (pierwszy słupek jest 3x mniejszy od ostatniego), przynajmniej dopóki nie spojrzy się na oś. Więcej podobnych ciekawych zniekształceń jest opisanych tutaj.

nvidia

3. Gdzie jest Wally?

Mapki (czyli kartogramy) są wspaniałe, wyglądają elegancko, często są kolorowe i jeszcze powodują przyjemne uczucie zrozumienia, przecież ‚łał widziałem gdzieś ten kształt – to chyba kontury Polski’.
Do pewnych analiz kartogramy się jednak zupełnie nie nadają, a jedną z nich jest porównywanie dwóch kartogramów.
Np. jak znaleźć istotne różnice na poniższych kartogramach?
Przykład pochodzi z biqdata.

Screen Shot 2017-10-23 at 15.47.11

4. Będzie lepiej!

Wykresy słupkowe to jedna z najprostszych w użyciu technik prezentacji danych. Trudno zrobić je źle, a jednak, poniższy wykres pokazuje, że się da. Prezentuje dane z lat 2016/2017 oraz prognozy. A prognozy nie dość, że są optymistyczne, to jeszcze narysowane w taki sposób…
Źródło

Screen Shot 2017-01-25 at 15.17.38

5. Jak tankować, to tylko na Śląsku

Za Forbes podajemy wykres ze średnimi cenami benzyny w różnych województwach. Gdzieś musi być drożej, a gdzieś musi być taniej, ale czy z poniższego wykresu łatwo odczytać, że maksymalna różnica cen pomiędzy województwami to 5%?

tabelka-ceny-paliw

6. Nie interesuję się

Poniższy wykres pochodzi z portalu oko.press i prezentuje odpowiedzi na pytanie które wydarzenia można uznać za najważniejsze w 2016 roku.
Jeden z nielicznych przypadków w których legenda jest 3 razy większa niż wykres, sam wykres całkowicie nieczytelny, właściwie jedyne co można odczytać to, że na pytanie ,,Które wydarzenie było najważniejsze” w poprzednim roku najczęstsza odpowiedź to ,,Nie wiem, nie interesuję się, nie zastanawiałem się”.

screen-shot-2016-12-31-at-10-12-02

7. Walec

Jak przedstawić cztery liczby by wyglądały poważnie? Dodajmy dwie kategorie, masę cyfr najlepiej nic nie wnoszących i koniecznie pokażmy dane w 3D. Gdy jeszcze zastosujemy różne agregacje dla różnych słupków oraz dwie kategorie, wtedy będziemy mogli być pewni, że z wykresu niewiele da się odczytać.

Żródło wyjaśnia związek tego wykresu ze smogiem w Wadowicach.

Screen Shot 2017-10-24 at 22.04.01

8. Ślub tylko w miesiącu z r i roku z 0

W serwisie Bankier znaleźć można taki zaskakujący wykres przedstawiający liczbę małżeństw.
Z jakichś niezwykłych powodów autor wykresu zdecydował się pomiędzy pomiarami dodać dołki aby wykres był ciekawszy.

Screen Shot 2017-02-14 at 16.38.49

9. Wrocław na tle innych miast

Na portalu wroclaw.pl znaleźć można porównanie finansów Wrocławia z pięcioma innymi dużymi miastami. Dane ciekawe, ale sposób prezentacji dziwaczny (w raporcie jest więcej takich kwiatków). Np. co można odczytać z poniższej szarlotki (podpowiedź, segmenty szarlotki NIE są posortowane po wielkości)?

Screen Shot 2017-12-28 at 01.03.31

10. Będzie impreza

Na portalu biznes.onet umieszczono portret zamożnego Polaka. Poniższy wykres pokazuje rozkład wielkości miesięcznych oszczędności. Nie przypuszczałem, że to powiem, ale: te dane znacznie lepiej byłoby pokazać na wykresie kołowym. A tutaj, skąd te kolory, skąd te wielkości?

kola

Który wykres zasługuje na tytuł ,,Zniekształcenie roku 2017''?

View Results

Loading ... Loading ...

chRistmas tRees

Year over year, in the last classes before Christmas I ask my students to create a Christmas tree in R.
Classes are about Techniques of data visualisation and usually, at this point, we are discussing interactive graphics and tools like rbokeh, ggiraph, vegalite, googleVis, D3, rCharts or plotly. I like this exercise because with most tools it is easy to create a barchart, but how good must be the tool and the craftsman to handle a christmas tree?

Here is what they did this year (having around 1 hour to finish the task). Knitr scripts.

Update: I am still getting new submissions, feel free to submit yours as well.

Screen Shot 2017-12-22 at 13.07.26Screen Shot 2017-12-22 at 13.04.49

Screen Shot 2017-12-21 at 23.10.40Screen Shot 2017-12-21 at 23.10.23

Screen Shot 2017-12-21 at 22.06.35Screen Shot 2017-12-21 at 22.00.11

Screen Shot 2017-12-21 at 23.11.45Screen Shot 2017-12-21 at 23.11.19

Screen Shot 2017-12-21 at 21.57.54Screen Shot 2017-12-22 at 13.07.54

Screen Shot 2017-12-22 at 23.09.48Screen Shot 2017-12-22 at 23.09.25

Screen Shot 2018-01-09 at 22.37.20Screen Shot 2018-01-09 at 22.20.51

Screen Shot 2018-01-09 at 22.13.01Screen Shot 2018-01-09 at 21.57.06

Screen Shot 2018-01-09 at 21.47.06Screen Shot 2018-01-09 at 21.43.25

Screen Shot 2018-01-09 at 21.39.49Screen Shot 2018-01-09 at 21.22.31

Screen Shot 2017-12-21 at 23.10.48

Czekamy na zgłoszenia do tegorocznej edycji ,,Najgorszego wykresu roku”

Na koniec roku przygotowujemy szóstą (!!!) edycję konkursu na najgorszy wykres roku.
Jeżeli widzieliście w mediach papierowych lub elektronicznych wykresy zniekształcające dane, powodujące, że prosta informacja staje się całkowicie nieczytelna, zgłoście ją do konkursu!
Wykres/wizualizacja powinna być opublikowana w 2017 roku.
Zgłoszenia można przesyłać w komentarzach lub na adres email: przemyslawbiecek na serwerze gmail.com.

Jakie wykresy stawały w szranki w poprzednich latach?

archivist: Boost the reproducibility of your research

A few days ago Journal of Statistical Software has published our article (in collaboration with Marcin Kosiński) archivist: An R Package for Managing, Recording and Restoring Data Analysis Results.

Why should you care? Let’s see.

Starter

a
Would you want to retrieve a ggplot2 object with the plot on the right?
Just call the following line in your R console.

archivist::aread('pbiecek/Eseje/arepo/65e430c4180e97a704249a56be4a7b88')

Want to check versions of packages loaded when the plot was created?
Just call

archivist::asession('pbiecek/Eseje/arepo/65e430c4180e97a704249a56be4a7b88')

Wishful Thinking?

When people talk about reproducibility, usually they focus on tools like packrat, MRAN, docker or RSuite. These are great tools, that help to manage the execution environment in which analyses are performed. The common belief is that if one is able to replicate the execution environment then the same R source code will produce same results.

And it’s true in most cases, maybe even more than 99% of cases. Except that there are things in the environment that are hard to control or easy to miss. Things like external system libraries or dedicated hardware or user input. No matter what you will copy, you will never know if it was enough to recreate exactly same results in the future. So you can hope that results will be replicated, but do not bet too high.
Even if some result will pop up eventually, how can you check if it’s the same result as previously?

Literate programming is not enough

There are other great tools like knitr, Sweave, Jupiter or others. The advantage of them is that results are rendered as tables or plots in your report. This gives you chance to verify if results obtained now and some time ago are identical.
But what about more complicated results like a random forest with 100k trees created with 100k variables or some deep neural network. It will be hard to verify by eye that results are identical.

So, what can I do?

The safest solution would be to store copies of every object, ever created during the data analysis. All forks, wrong paths, everything. Along with detailed information which functions with what parameters were used to generate each result. Something like the ultimate TimeMachine or GitHub for R objects.

With such detailed information, every analysis would be auditable and replicable.
Right now the full tracking of all created objects is not possible without deep changes in the R interpreter.
The archivist is the light-weight version of such solution.

What can you do with archivist?

Use the saveToRepo() function to store selected R objects in the archivist repository.
Use the addHooksToPrint() function to automatically keep copies of every plot or model or data created with knitr report.
Use the aread() function to share your results with others or with future you. It’s the easiest way to access objects created by a remote shiny application.
Use the asearch() function to browse objects that fit specified search criteria, like class, date of creation, used variables etc.
Use asession() to access session info with detailed information about versions of packages available during the object creation.
Use ahistory() to trace how given object was created.

Lots of function, do you have a cheatsheet?

Yes! It’s here.
If it’s not enough, find more details in the JSS article.

Data Science Masters – najlepsze prace magisterskie z Data Science i Uczenia Maszynowego

DataScienceMasters_Mail_Banner 27.11

Do 20 stycznia 2018 można zgłaszać prace do konkursu Data Science Masters.
Zgłaszać można prace magisterskie obronione na dowolnej polskiej uczelni w latach 2016 lub 2017.

Data Science i Uczenie Maszynowe to dwie bardzo szerokie dziedziny. Aby je objąć w Jury znajdują się matematycy i informatycy z czterech różnych uczelni z szeroką gamą zainteresowań, od bioinformatyki, ekonometrii po Big Data czy analizę obrazów.

Łączna pula nagród to 8 500 zł, a prezentacja zwycięskiej pracy jest zaplanowana na dzień liczby Pi, czyli 14 marca.

Celem konkursu jest pokazanie jak ciekawe problemy rozwiązywane są w ramach prac magisterskich w Polsce. Mamy nadzieję, że będą one inspirowały przyszłe tematy prac.

Więcej informacji: https://www.datasciencemasters.edu.pl/

Explain! Explain! Explain!


Predictive modeling is fun. With random forest, xgboost, lightgbm and other elastic models…
Problems start when someone is asking how predictions are calculated.
Well, some black boxes are hard to explain.
And this is why we need good explainers.

In the June Aleksandra Paluszynska defended her master thesis Structure mining and knowledge extraction from random forest. Find the corresponding package randomForestExplainer and its vignette here.

In the September David Foster published a very interesting package xgboostExplainer. Try it to extract useful information from a xgboost model and create waterfall plots that explain variable contributions in predictions. Read more about this package here.

In the October Albert Cheng published lightgbmExplainer. Package with waterfall plots implemented for lightGBM models. Its usage is very similar to the xgboostExplainer package.

Waterfall plots that explain single predictions are great. They are useful also for linear models. So if you are working with lm() or glm() try the brand new breakDown package (hmm, maybe it should be named glmExplainer). It creates graphical explanations for predictions and has such a nice cheatsheet:

breakDownCheatsheet

Install the package from https://pbiecek.github.io/breakDown/.

Thanks to RStudio for the cheatsheet’s template.