Rmd source


Istnieje życie bez arkusza kalkulacyjnego: R i Rstudio

R to język programowania do obliczeń statystycznych i tworzenia wykresów statystycznych. R został opracowany w połowie lat 90. na Uniwersytecie w Auckland (Nowa Zelandia).

Od tego czasu R stał się jednym bardziej popularnych narzędzi do analizy danych, używanym w wielu dyscyplinach naukowych

BTW: skąd taka dziwna jednoliterowa nazwa (R)? Ano dawno temu (lata 60-te) popularne było używanie krótkich nazw języków komputerowych (Na przykład C). W AT&T Bell Labs (John Chambers) w połowie lat 70. powstał język zorientowany na obliczenia statystyczne pn S (zapewne od statystyka). R to jedna litera przed literą S w alfabecie.

Rstudio to środowisko, dzięki któremu można wygodnie używać R. W Rstudio można jednocześnie pisać kod, uruchamiać program, zarządzać danymi, oglądać wynik obliczeń. Rstudio to produkt komercyjny rozpowszechniany na podwójnej licencji RStudio, Inc.  Głównym twórcą RStudio jest Hadley Wickham kolejny genialny Nowozelandczyk (https://en.wikipedia.org/wiki/Hadley_Wickham)

Ostatnimi czasy R wiele zawdzięcza zaangażowaniu się firmy Microsoft, która w szczególności kupiła firmę Revolution Analytics, sprzedającej (od dawna) komercyjną wersję systemu. MS sprzedaje też R w wersji SaaS (Software as a Service) Wsparcie MS oznacza niechybnie że system będzie jeszcze bardziej popularny, np zostanie zintegrowany z popularnymi produktami MS…

Powtarzalne badania czyli o większą wiarygodność obliczeń

Abandoning the habit of secrecy in favor of process transparency and peer review was the crucial step by which alchemy became chemistry. (Jawność zamiast sekretów było przełomowym momentem w którym alchemia zamieniła się w chemię)

Eric S. Raymond, E. S. Sztuka programowania w systemie UNIX: Addison-Wesley.

Replikowalność (replicability): niezależny badanie weryfikujące tą samą hipotezę potwierdza ją.

Powtarzalność (reproducibility): zdolność do powtórzenia obliczeń z dokładnie takim samym wynikiem jak pierwotnie otrzymane [do tego potrzebne jest udostępnienie opis metody, kodu, programu oraz danych.

Nauki ilościowe (comptational sciences) stoją w obliczu kryzysu wiarygodności: jest niemożliwa weryfikacja większość wyników obliczeń prezentowanych na konferencjach oraz publikowanych w czasopismach naukowych. (Donoho D. 2009)

google: `"reproducible research"= 649000 (styczeń / 2021)

Australopithecus (typowy współczesny modus operandi)

Korzyści

  • Łatwy do nauczenia (w teorii)

Problemy

  • Żmudne/marnujące czas/kosztowne.

  • Nawet niewielkie zmiany danych/metody skutkują często koniecznością powtórnego wykonania obliczeń i poprawienia raportu.

  • Podatne na błędy (prone to errors): trudne do zarejestrowania/zapamiętania „historii kliknięć”.

Słynny przykład: kontrowersja Reinharta i Rogoffa

Kraje o bardzo wysokim wskaźniku PKB do zadłużenia cierpią z powodu niskiego wzrostu. Obliczenia RR okazały się w wielu miejscach ca całkowicie błędne, co odkryto gdy autorzy ujawnili zbiór danych, który wykorzystywali w swojej analizie (por. (https://en.wikipedia.org/wiki/Growth_in_a_Time)

Homo habilis (ulepszenie obecnej praktyki)

Korzyści

  • większe: niezawodność, przejrzystość i automatyzacja; niższe koszty (w dłuższej perspektywie).

Problemy

  • Bardziej stroma krzywa uczenia się.

  • Być może wyższe koszty w krótkim okresie.

Homo Erectus (statystyczne Literate Programming)

Literate Programming to koncepcja programowania w którym program i opis (komentarz) stanowią jedną całość.

Kod obliczeń statystycznych jest przepleciony opisem. System komputerowy potrafi zamienić to automatycznie na gotowy raport

LSP: Korzyści

LSP: Problemy

Wiele m.in. koszty i krzywa uczenia się

LSP: Narzędzia

  • Język Markdown do opisu.

  • Język programu: R (lub Python)

  • Frontendy: RStudio

Github dla niewtajemniczonych

Github jest systemem kontroli treści (aka Systemy kontroli wersji VCS). Podstawową ideą systemu VCS jest to, że zamiast ręcznie rejestrować zmiany wprowadzone w danych, dokumentach itp., używa sie do tego programu komputerowego.

VCS nie tylko zarządza treścią, rejestrując każdą jej modyfikację, ale kontrolować również dostęp do treści. W ten sposób wiele osób może pracować nad wspólnym projektem (porównaj to z typowym scenariuszem kiedy wiele osób wymienia się danymi przez email – co najmniej wysoce nieefektywne)

Istnieją wysoce niezawodne i publicznie dostępne usługi VCS a GitHub jest najpopularniejszym z nich.

GitHub jest własnością Microsoft (nie używaj, jeśli bojkotujesz MS :-))

Darmowe konto GitHub jest publiczne. Jest to dla mnie ok. Jeśli chcesz ukryć to co przechowujesz na swoim koncie Github możesz kupić licencję na konto komercyjne (lub nie używać GitHuba.)

Zasoby