Programowanie i analiza danych w R 2017/2018
(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. 328
Laboratoria: prof. nzw. dr hab. inż. Marek Gągolewski śr., 18-20, s. 219
mgr Agnieszka Geras śr., 18-20, s. 218

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. (2017-10-04)

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. (2017-10-11)

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. (2017-10-18)

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

Praca domowa nr 1 (15 p.) – termin oddania: 27.10.2017.

Tydzień 4. (2017-10-25)

NULL

Uwaga: zajęcia 2017-10-25 są odwołane. Bez obaw i smutku jednak – wykład nadrobimy, przedłużając kolejne spotkania o 15 minut.

Tydzień 5. (2017-11-08)

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

Praca domowa nr 2 (15 p.) – termin oddania: 17.11.2017.

Tydzień 6. (2017-11-15)

Dzień PW

(godziny rektorskie – brak zajęć)

Tydzień 7. (2017-11-22)

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

Praca domowa nr 3 (20 p.) – termin oddania: 22.12.2017.

Tydzień 8. (2017-11-29)

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ń 9. (2017-12-06)

Przetwarzanie napisów cz. 1,
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
Z powodu choroby :( prowadzącej zamiast laboratoriów mamy dodatkowe 2h wykładu :)

Tydzień 10. (2017-12-13)

Przetwarzanie plików,
Data i czas

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. (2017-12-20)

Rcpp cz. 1

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

Praca domowa nr 4 (Data Science: Airline on-time performance; max 25 p.) – termin oddania: 12.01.2018.

Tydzień 12. (2018-01-03)

Rcpp cz. 2

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

Praca domowa nr 5 (analiza skupień (badawcza); max 25 p.) – termin oddania: 26.01.2018.

Tydzień 13. (2018-01-10)

Rcpp cz. 3

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. (2018-01-17)

Ś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. (2018-01-24)

Ś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