Programowanie i analiza danych w R 2018/2019
(Programming & Data Analysis in R)
Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, przedmiot obieralny, studia mgr., kier. Matematyka

Informacje ogólne

Wykład: prof. nzw. dr hab. inż. Marek Gągolewski śr., 16-18, s. 102
Laboratoria: prof. nzw. dr hab. inż. Marek Gągolewski śr., 18-20, s. 219
mgr Agnieszka Geras śr., 18-20, s. 217

Uczestnicy kursu mają możliwość poznania zaawansowanych technik programowania w języku R oraz zrozumienia, w jaki sposób przeprowadzane są obliczenia w tym środowisku. Zdobywają umiejętność nie tylko świadomego i krytycznego wykorzystywania dostępnych w różnych pakietach (np. z repozytorium CRAN) gotowych funkcji i metod – m.in. znanych z dziedziny analizy danych, uczenia maszynowego itp. – ale przede wszystkim ich samodzielnej implementacji oraz testowania. Szczególny nacisk kładziony jest na omówienie i ćwiczenie zagadnień przydatnych w pracy matematyka-praktyka (m.in. na stanowiskach analityk danych, statistical programmer, junior data scientist) i w zastosowaniach naukowo-badawczych.

Istotną część kursu stanowi implementowanie – przy użyciu najbardziej do tego odpowiednich algorytmów i struktur danych – wybranych procedur analizy danych w języku C++, do których studenci tworzą interfejs dla języka R za pośrednictwem pakietu Rcpp. Szeroko pojęta jakość generowanych przez nich wyników (np. precyzja i czułość w przypadku algorytmów klasyfikacji binarnej) jest porównywana już w R z innymi znanymi metodami na podstawie wsadowej analizy wielu zbiorów benchmarkowych, a wnioski z przeprowadzonych eksperymentów przedstawiane są w postaci raportów.

Harmonogram zajęć

Wymagane oprogramowanie

Wymagania wstępne (przedmioty poprzedzające)

  • Podstawy programowania strukturalnego w języku C i/lub C++
  • Programowanie obiektowe
  • Algorytmy i struktury danych
  • Metody numeryczne
  • Rachunek prawdopodobieństwa i statystyka matematyczna

Literatura i odnośniki

Podstawowa:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016
  2. Jones O., Maillardet R., Robinson A., Introduction to Scientific Programming and Simulation Using R, Chapman & Hall/CRC, 2014
  3. Matloff N.S., The Art of R Programming: A Tour of Statistical Software Design, No Starch Press, 2011
  4. Wickham H., Advanced R, Chapman & Hall/CRC, 2014
  5. Wickham H., Grolemund G., R for Data Science, O'Reilly, 2017
  6. Eddelbuettel, D., Seamless R and C++ integration with RCpp, Springer, 2013
Uzupełniająca:
  1. Chambers J.M., Programming with Data, Springer, 1998 (The Green Book)
  2. Chambers J.M., Extending R, Chapman & Hall/CRC, 2016
  3. Grolemund G., Hands-On Programming with R, O'Reilly, 2014
  4. Venables W.N., Ripley B.D., S Programming, Springer, 2000
  5. Mittal H.V., R Graphs Cookbook, Packt Publishing, 2011
  6. Murrell P., R Graphics, Chapman & Hall/CRC, 2006
  7. Abelson H., Sussman J., Sussman G.J., Struktura i interpretacja programów komputerowych, WNT, Warszawa, 2002
  8. Wickham H., testthat: Getting started with Testing, R Journal 3(1), 2011, s. 3-10
  9. Wickham H., Grolemund G., R for Data Science, O'Reilly, 2016

Ciekawe strony

  1. Strona projektu R
  2. Strona domowa RStudio IDE
  3. The R Journal
  4. R-bloggers: R news & tutorials from the Web
  5. knitr: Elegant, flexible and fast dynamic report generation with R
  6. Mathematical Annotation in R
  7. tikzDevice: A device for R graphics output in PGF/TikZ Format

Tydzień 1. (2018-10-03)

Wprowadzenie do R i RStudio,
Klasyfikacja typów danych w R,
Podstawowe typy atomowe: Wektory i NULL

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 1, 2
  2. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. Uwaga: należy „obserwować” (Watch) ww. repozytorium, gdyż inaczej nie będą Państwo otrzymywać wiadomości e-mail nt. aktualizacji, ogłoszeń itp. (sekcja Issues)

  4. Dokumentacja RStudio (szczególnie warty przeczytania jest punkt skróty klawiszowe)
  5. Markdown intro
  6. Markdown basics @ GitHub
  7. RMarkdown basics @ RStudio
  8. RMarkdown output formats @ RStudio
  9. Pandoc
  10. knitr chunk options

Zwracamy uwagę na funkcję source(). Możemy wywoływać ją w plikach .R i dokumentach knitra.

Zachęcamy do pracy w stylu: każde „duże zadanie” (np. praca domowa) – osobny projekt w RStudio.

Tydzień 2. (2018-10-10)

Zwektoryzowane operacje na wektorach atomowych,
Przekształcanie i filtrowanie zmiennych,
Agregacja danych

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 3
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 3. (2018-10-17)

Listy,
Funkcje,
Atrybuty obiektów,
Podstawy programowania obiektowego w stylu S3

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 4, 5, 6
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 4. (2018-10-24)

Typy złożone: Macierze, czynniki, ramki danych

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 7
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. dplyr
  4. data.table
  5. RSQLite

Tydzień 5. (2018-10-31)

(zajęcia będą odpracowane)

Tydzień 6. (2018-11-07)

Instrukcje sterujące, obsługa wyjątków
Tworzenie wykresów cz. 1

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 8, 9, 12
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 7. (2018-11-14)

Tworzenie wykresów cz. 2

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 12
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 8. (2018-11-21)

Przetwarzanie napisów cz. 1

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 10
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. stringi – dokumentacja on-line
  4. regular-expressions.info
  5. Regular Expressions – ICU User Guide

Tydzień 9. (2018-11-28)

Przetwarzanie napisów cz. 2,
Wyrażenia regularne

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 10
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. stringi – dokumentacja on-line
  4. regular-expressions.info
  5. Regular Expressions – ICU User Guide

Tydzień 10. (2018-12-05)

Data i czas,
Przetwarzanie plików

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 11
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 11. (2018-12-12)

Przetwarzanie plików (cd.),
Rcpp cz. 1 – Łączenie C++ i R

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 20
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. rcpp

Tydzień 12. (2018-12-19)

Rcpp cz. 2 – Łączenie C++ i R

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 20
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. rcpp

Tydzień 13. (2019-01-09)

Tworzenie własnych pakietów R
Wybrane algorytmy i struktury danych przydatne w implementacji algorytmów ML

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 20
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. rcpp

Tydzień 14. (2019-01-16)

Środowiska

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 17
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Tydzień 15. (2019-01-23)

Środowiskowy model obliczeń i niestandardowa ewaluacja

Materiały pomocnicze:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 — rozdz. 18
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie