Rozdział 1 R

1.1 Kilka słów o R

R to bardzo dynamicznie rozwijający się język programowania używany przede wszystkim do analiz statystycznych, przetwarzania i wizualizacji danych. Jego rosnąca w ostatnich latach popularność jest związana przynajmniej z kilkoma czynnikami. Oto niektóre z nich:

  • W porównaniu do wielu innych języków programowania nauka R jest często dużo łatwiejsza (głównie dzięki relatywnie łatwej składni i interaktywności związanej z brakiem konieczności kompilacji).

  • Popularność R mocno poszybowała w górę od czasu wydania zintegrowanego środowiska programistycznego (IDE) RStudio, które w znacznym stopniu usprawnia komfort pracy.

  • Multiplatformość - R można uruchamić na niemal każdym współczesnym systemie operacyjnym (Windows, Mac OS, Linux/UNIX), zarówno na komputerach PC, jak i na dużych klastrach obliczeniowych.

  • R jest oprogramowaniem bezpłatnym i otwartoźródłowym - oznacza to, że korzystanie z R oraz modyfikowanie kodu na mocy licencji GPL nie nastręcza dodatkowych kosztów. Małe firmy tną w ten sposób koszty, giganci (m.in. Google, Yahoo, Facebook, Microsoft, NYSE, Wirtualna Polska, itp.) dostosowują rozwiązania bazujące na R do własnych potrzeb.

  • R jest językiem programowania, co oznacza że nawet jeśli nie ma interesującego nas algorytmu w natywnie zainstalowanym R możemy takie narzędzie stworzyć samemu. Najczęściej jednak okazuje się, że ktoś inny napisał już analogiczne lub podobne rozwiązanie i opublikował je w postaci pakietu programistycznego, który możemy bezpłatnie wykorzystać. Obecnie w serwisie CRAN znajduje się ponad 10000(!) takich pakietów dedykowanych dla szerokiego grona odbiorców.

  • Liczba danych na których możemy jednocześnie pracować w standardowych rozwiązaniach ograniczona jest jedynie pamięcią RAM (dla wersji 64-bitowej). Obecnie jest to ok. 1-2 rzędy wielkości więcej w porównaniu do najczęściej stosowanych arkuszy kalkulacyjnych (Microsoft 2016).

  • W przypadku napotkania problemów możemy skorzystać z pomocy społeczności użytkowników R, którzy bardzo szybko reagują na forach dyskusyjnych (np. stackoverflow.

To tylko część z zalet związanych z stosowaniem środowiska programistycznego R do przetwarzania danych. Z punktu widzenia analizy danych meteorologicznych niezwykle istotne staje się wykorzystanie jednego środowiska pracy zamiast kilku oddzielnych aplikacji. W R możliwe jest jednoczesne zautomatyzowanie procesu pobierania i wstępnego przygotowania (czyszczenia) danych, rozbudowanej analizy statystycznej danych (także wielowymiarowych), wykorzystania różnych formatów danych (w tym np. GIS) i wykonania analiz czasowo-przestrzennych z finalną konwersją i wizualizacją danych w postaci statycznych lub interaktywnych rozwiązań.

W odróżnieniu od zwykle wykorzystywanych arkuszy kalkulacyjnych praca w R pozwala na dużą dozę automatyzacji całego procesu eksploracji danych od momentu ich importu do środowiska R, poprzez ich weryfikację i czyszczenie, transformację do wybranego formatu i skończywszy na etapie wizualizacji (ewentualnego modelowania/prognozowania) oraz końcowego przekazu do odbiorców końcowych (Wickham and Grolemund 2016).

Typowy przebieg kolejnych etapów data science według Hadleya Wickhama (Wickham and Grolemund 2016)

Typowy przebieg kolejnych etapów data science według Hadleya Wickhama (Wickham and Grolemund 2016)

1.2 Dlaczego warto uczyć się R?

Prawdopodobnie dotychczas do Twojej pracy z danymi wystarczała znajomość obsługi arkusza kalkulacyjnego, gdzie wszystkie dane swobodnie mieściły się w pojedynczym arkuszu i mogłeś je jednocześnie poukładać według własnego uznania i wizualizować za pomocą intuicyjnego, klikanego interfejsu graficznego. Filozofia pracy w R zdecydowanie różni się od powyższego schematu postępowania. R jest językiem programowania, co dla osób nie posiadających wcześniejszego przygotowania programistycznego oznacza mozolne poznawanie specyficznej składni i funkcji programistycznych.

Oznacza to także konieczność porzucenia własnych przyzwyczajeń. Jest to trudne, zwłaszcza na początku i wymaga wielu godzin wytężonej pracy połączonej z twórczym eksperymentowaniem i korygowaniem niezliczonej liczby własnych błędów. Z pewnością jednak spędzony czas przy nauce R jest w relatywnie krótkim okresie rekompensowany z nawiązką, a analiza danych uprzednio zajmująca długie godziny często skraca się do czasu wykonywania pojedynczej linii kodu.

Umiejętność programowania w R jest coraz częściej doceniana na rynku pracy, co pokazuje rosnąca liczba ofert dla kandydatów z zaawansowaną obsługą środowiska R. Ten trend obserwuje się także w środowiskach naukowych oraz we wiodących ośrodkach badań atmosfery, gdzie R i blisko pokrewne języki wysokiego poziomu stają się lingua franca analizy danych.

1.3 X przykazań nauki R

Choć nie ma uniwersalnej recepty na naukę R warto pamiętać o poniższych wskazówkach, które pomogą w początkowych etapach pracy:

  1. Nie bój się stromej krzywej uczenia (rys. (???)(fig:krzywauczenia)). Efektywna nauka programowania wymaga długich godzin praktyki. Eksperymentuj z różnymi kombinacjami składni, które przyjdą Ci do głowy i sprawdzaj ich wyniki.
  2. Interpretuj błędy pojawiające się po każdej błędnej komendzie.
  3. Pracuj na własnych, dobrze znanych zbiorach danych. Łatwiej będzie Ci zrozumieć działanie poszczególnych funkcji i wyłapać ewentualne błędy.
  4. Staraj się unikać początkowo dużych zbiorów danych jeśli nie jest to wymagane.
  5. Korzystaj z systemu pomocy zarówno wbudowanej natywnie, jak i dostępnej online (google oraz stackoverflow).
  6. Zrozumienie podstaw jest kluczowe aby analizować bardziej skomplikowane przypadki (dające dużo większą satysfakcję).
  7. Twórz możliwie dużo i możliwie jak najbardziej opisowych komentarzy.
  8. Staraj się utrzymywać odpowiedni porządek w składni tworzonego kodu oraz w nazwach plików.
  9. R nie jest środowiskiem idealnym do wszystkich zastosowań. Prowadzenie budżetu domowego czy stworzenie pojedynczej, poprawnej kartograficznie mapy jest prawdopodobnie łatwiejsze i szybsze w innych programach.
  10. Rób przerwy. Czasem najlepsze pomysły przychodzą w najmniej oczekiwanych momentach. Niekoniecznie przy komputerze.
Porównanie stromej krzywej uczenia **R** i arkuszy kalkulacyjnych

Rysunek 1.2: Porównanie stromej krzywej uczenia R i arkuszy kalkulacyjnych

 

 

1.4 Od czego zacząć?

Tematyce programowania w R poświęcono sporą liczbę podręczników, artykułów naukowych oraz internetowych tutoriali omawiających tajniki data science. Stanowią one cenne uzupełnie niniejszego kursu, który wiele zagadnień (zwłaszcza technicznych) traktuje bardzo pobieżnie.

Spośród dostępnych źródeł książkowych opublikowanych w języku polskim na szczególną uwagę zasługują przede wszystkim podręczniki:

  • Przewodnik po pakiecie R (Biecek 2008) - najbardziej popularny podręcznik w Polsce, dostępny w kilku różnych wydaniach z których najłatwiejsze powinno być ostatnie (2017). Pierwsze rozdziały dostępne bezpłatnie na stronie autora biecek.pl/R.
  • Programowanie w języku R. Analiza danych, obliczenia, symulacje (Gągolewski 2016) - podręcznik zdecydowanie bardziej zaawansowany technicznie, rekomendowany dla osób mających wcześniejszy kontakt z programowaniem. Dostępny bezpłatnie ze strony internetowej biblioteki uniwersyteckiej UAM.
  • Geostatystyka w R (Nowosad 2016) - Książka opisująca rozszerzone standardy modelowania GIS. Dostępna bezpłatnie na stronie https://bookdown.org/nowosad/Geostatystyka/.
  • Skrypt wprowadzający do R udostępniony na stronie internetowej Zakładu Klimatologii UAM - jest to bardzo krótkie wprowadzenie do R w dużym w zarysie prezentujące najważniejsze elementy niezbędne do pracy w tym środowisku. http://klimat.amu.edu.pl/?page_id=2500.

oraz

  • An Introduction to R (Venables et al. 2004) - aktualizowany na biężaco oficjalny podręcznik deweloperów (R. C. Team 2016) omawiający podstawowe aspekty pracy w R.

Kursy:

  • Pogromcy danych: pogromcydanych.icm.edu.pl - dwuczęsciowy kurs internetowy autorstwa Przemysława Biecka będący wprowadzeniem do zagadnień data science w R
  • Coursera: dostępnych przynajmniej kilka kursów internetowych związanych z przetwarzaniem danych z R coursera.org.