Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.


Obrazek


Ponieważ często słyszę pytanie "Ale dlaczego właśnie R? Czy możesz uzasadnić twój wybór?", postanowiłem zebrać w jednym miejscu garść informacji, które mogą pomóc w odpowiedzi na to pytanie. Może komuś z Was przyda się ten wpis w sytuacji, gdy otrzyma od swego klienta bądź pracodawcy pytanie w podobnym tonie.
___________________________________________________________________________________

GNU R to środowisko obliczeniowe (i zarazem język) do przeprowadzania analiz statystycznych i dataminingowych. Cieszy się rosnącą popularnością i uznaniem właszcza w Europie Zachodniej, gdzie od lat jest standardem w dziedzinie analiz statystycznych, zwłaszcza w ośrodkach naukowych i badaniach klinicznych.

[...]R is also the name of a popular programming language used by a growing number of data analysts inside corporations and academia. It is becoming their lingua franca partly because data mining has entered a golden age, whether being used to set ad prices, find new drugs more quickly or fine-tune financial models. Companies as diverse as Google, Pfizer, Merck, Bank of America, the InterContinental Hotels Group and Shell use it.
Źródło: Data Analysts Captivated by R’s Power (The New York Times)

Swą pozycję R zawdzięcza wielu czynnikom, z których najważniejsze, to:

Cena
GNU R to bezpłatne do zastosowań komercyjnych narzędzie rozpowszechniane na zasadach Open Source

Możliwości
Repozytorium CRAN zawiera, na chwilę obecną, > 6200 pakietów rozszerzających możliwości środowiska R.

Trudno wskazać podobnie wszechstronne komercyjne oprogramowanie o podobnych graficznych: galeria 1 (strona nieaktywna, podgląd z webcache'a), galeria 2, galeria 3. Rewelacyjna biblioteka ggplot2, służąca do tworzenia wykresów za pomocą (uproszczonej) implementacji tzw. "gramatyki do opisu grafiki" ("grammar of graphic") Lelanda Wilkinsona, stanowi w rękach wprawnego użytkownika niezwykle silne narzędzie do atrakcyjnej prezentacji danych. Oto skromna próbka możliwości biblioteki ggplot2. Początkującym użytkownikom stawianie pierwszych kroków z ggplot ułatwi Deducer plot builder (zobacz).

W rankingach popularności pakietów statystycznych R zajmuje stabilną pozycję w czołówce, konkurując z największymi, m.in. SAS.

Wsparcie naukowe
R tworzą doświadczeni statystycy, często z dużym dorobkiem naukowym. Każda sekcja tematyczna posiada swojego opiekuna naukowego. Z projektem związany jest The R Journal będący kopalnią wiedzy naukowej i przykładów wykorzystania R do profesjonalnych analiz. R jest szczególnie dobrze przystostowany do przeprowadzania analiz w zakresie epidemiologii, genetyki i badań klinicznych.

W internecie można znaleźć liczne materiały e-learningowe dotyczące R, organizowane przez różne ośrodki akademickie (Pricenton, Stanford, Hopkins, etc.), np.tutaj.

Za Wikipedią
R jest podstawowym językiem programowania w bioinformatyce, spopularyzowanym głównie dzięki stworzonemu przez Roberta Gentlemana repozytorium Bioconductor. Artykuły Gentlemana o R i Bioconductorze należą do najczęściej cytowanych w bioinformatyce (ponad 4000 cytowań według Google Scholar).

Wsparcie społeczności
Z R korzystają tysiące osób (w tym naukowców) które wymieniają się doświadczeniami zarówno na oficjalnych grupach dyskusyjnych jak również na wielu różnych forach, blogach i serwisach tematycznych. Wielu użykowników pisze samouczki dla początkujących i wydaje publikacje książkowe.

Użytkownicy R często organizują konferencje (w Polsce to np: WZUR, PAZUR).

Wsparcie biznesu
Najwięksi "gracze" na rynku analiz statystycznych i dataminingowych dostrzegają potencjał R i oferują narzędzia do integracji swoich produktów z R. Przykłady: Oracle, Statsoft, SPSS.

"Biznes" nie tylko wspiera rozwój R, lecz także intensywnie z niego korzysta: FDA (Food and Drug Administration), Facebook, Google, Bing, Novartis, Phizer, Merck, Cardio DX,
LinkedIn, Mozilla, The New York Times, Shell, Bank of America, Altera, Ford, Twitter i wiele innych firm i organizacji.

Obsługiwane formaty danych
R potrafi odczytywać i zapisywać dane w wielu popularnych formatach, np.: Excel, Stata, EpiInfo, SAS, SPSS, Systat, Minitab, CSV, XML.

Istnieją także pakiety pozwalające na połączenie R z bazami danych: SQL Server, Oracle, MySQL, dBase, PostgreSQL, ODBC, JDBC.

Interoperacyjność
R to nie tylko popularny pakiet statystyczny, ale także "silnik obliczeniowy", który wielu programistów wykorzystuje w swoich programach. Istnieje wiele różnych bibliotek i narzędzi programistycznych pozwalających na komunikację z pakietem na wiele różnych sposobów (COM, TCP/IP, Webserwisy, DDE, DLL) z poziomu wielu różnych języków (C++, Java, .NET, Python i inne).

Osobom zainteresowanym wykorzystaniem GNU R w swoich programach polecam wątek poświęcony wykorzystaniu GNU R z poziomu platformy .NET / Mono.


Obrazek


Większość z tych narzędzi jest rozpowszechniana na zasadach Open Source. Przykłady: R.NET | RServe | RServeCLI + RServeCLI 2

Istnieją także pakiety pozwalające wykorzystywać z poziomu R biblioteki procedur napisanych w różnych językach, np: rJava | rClr (.NET/Mono) | Rcpp (C++) | rPython

Warto także wspomnieć, że R może służyć jako serwer obliczeń obsługiwany przez stronę www: nieco starszy RWeb oraz nowoczesny Shiny (galeria przykładów).

Dodatkowo z poziomu R można budować graficzne interfejsy użytkownika w oparciu o biblioteki takie, jak Tcl/Tk, RGtk2 lub wxWidgets.
Z ich pomocą można przygotować zestaw okien dialogowych dla użytkowników, którzy dzięki temu będa mogli wykonywać potrzebne analizy bez potrzeby znajomości języka R. Jest także dostępny pakiet gWidgets, który bazuje na powyższych oferując ujednolicone podejście do tworzenia GUI.

Wieloplatformowość
Pakiet R można uruchomić w praktycznie każdym systemie operacyjnym: Windows, Unix, Linux, MacOS, a nawet... iOS (iPhone, iPad), Android oraz Maemo na Nokii N900 :-) R radzi sobie także na Raspberry PI, polecam jednak wersję B (wiecej RAMu).

Warto także pamiętać, że R można uruchomić bez instalacji, np. z płyty CD lub karty pamięci. Istnieje także wersja R przeznaczona do uruchamia na platformie PortableApps.

Mnogość sposobów prezentacji wyników analiz
R oferuje wiele sposobów prezentacji wyników obliczeń. Niektóre metody sprowadzają się jedynie do wydania odpowiedniej komendy, która przygotuje sformatowany dokument z tabelami i wykresami.
Inne wymagają pewnych umiejętności programistycznych, jednak oferują w zamian szerokie możliwości uzyskania pożądanego wyniku.

W R wyniki analiz oraz wykresy zapisywać można:
* do plików graficznych: jpg, png, bmp, postscript, pdf
* do plików arkusza kalkulacyjnego MS Excel (tylko dane)
* w postaci dokumentów RTF, MS Word (OpenXML - ReporteRs),
OpenDocument, PostScript i PDF (w oparciu o język LATEX)
* w postaci strony HTML z wykorzystaniem kaskadowych arkuszy styli CSS

Możliwości optymalizacji obliczeń
W przypadku wykonywania złożonych obliczeń na dużych zbiorach danych znaczenia nabierają możliwości ich optymalizacji w celu przyszepieszenia procesu bądź w ogóle umożliwienia jego wykonania.

R pozwala optymalizować obliczenia na różnych płaszczyznach:

* Diagnostyka obciążenia procesora i zajętości pamięci przez procedury obliczeniowe za pomocą tzw. profilera. Profiler analizuje wykonywany kod, po czym generuje diagram obrazujący czasy wykonania poszczególnych procedur. W ten sposób pozwala znaleść "wąskie gardło" procesu i zoptymalizować go.

* Kompilacja kodu R w locie (JIT; ang. just in time compilation]).
Pozwala ona osiągnąć znaczne, nawet n-dziesięciokrotne przyspieszenie obliczeń, zwłaszcza, gdy w kodzie znajdują się pętle i instrukcje warunkowe.

* Wektoryzacja obliczeń, czyli unikanie pętli na rzecz funkcji operujących na wektorach bądź macierzach obiektów. Rozwiązanie to pozwala to na kilkukrotne skrócenie czas wykonania niektórych algorytmów.

* Użycie dedykowanych dla konkretnego procesora (Intel, AMD) bibliotek do obliczeń algebraicznych (BLAS) pozwala kilkukrotnie przyspieszyć wykonywanie tego rodzaju operacji. Podobnie dostępne są biblioteki do różniczkowania algorytmicznego (Projekt ADMB) pozwalające znacznie skrócić czas obliczeń podczas modelowania nieliniowego.

* Uruchomienie R w tzw. "klastrze obliczeniowym", czyli rozproszenie obliczeń na kilka komputerów

* Wykorzystanie przez R mocy obliczeniowej procesora karty graficznej. W R dostępne są pakiety wykorzystujące procesory kart graficznych firmy NVIDIA (architektura CUDA).
Trwają także prace nad zaimplementowaniem w R interfejsu OpenCL, który pozwalałby wykorzystywać moc obliczeniową procesorów także innych firm.

Możliwości pracy z dużymi zbiorami danych
R pozwala pracować z dużymi zbiorami danych, nie mieszczących się w pamięci RAM pojedycznego procesu.
W systemach 32 bitowych jest to ok. 2GB na proces, zaś w systemach 64 bitowych - ok. 2TB, jednak nawet w systemie 64-bitowym nie uda się zaalokować pojedynczej zmiennej o rozmiarze większym, niż 2^34-1B (8GB). Opracowano specjalne biblioteki, które rozwiązują ten problem na kilka sposobów, a mianowicie poprzez:

* komunikację z bazami danych, co pozwala pobrać z nich do pamięci jedynie potrzebny podzbiór danych

* budowanie modeli (w ramach GLZ - Uogólnionego Modelu Liniowego, np. regresja logistyczna) na kolejno ładowanych do pamięci fragmentach (ang. chunks) danych. Realizująca tę funkcjonalność bibilioteka (biglm) może korzystać nie tylko ze źródeł plikowych, ale także z baz danych.

* symulację "dyskowej pamięci wirtualnej", czyli mapowania dużych zbiorów danych na pliki i traktowanie ich jak rzeczywistej pamięci RAM

* przechowywanie dużych zbiorów danych w pamięci RAM poza obszarem pamięci danego procesu

Trudno jest choćby skrótowo przedstawić ilość wiedzy, publikacji i rozwiązań naukowo-biznesowych związanych z pakietem R. Dużo informacji znajduje się w Wikipedii. Powstała nawet dedykowana wyszukiwarka informacji dotyczących R - rseek.org.
Na koniec - interesujące porównanie: R na tle innych pakietów statystycznych.

Polecam także jako ciekawostkę następujące artykuły: How Google and Facebook are using R (2009), The Popularity of Data Analysis Software (2012; niemal wykładniczy wzrost popularności R), Data Mining/Analytic Tools Used (2011), blog firmy rconvert.com.

W Internecie dostępnych jest kilka wartościowych narzędzi usprawniających pracę z R. W swej pracy wykorzystuję następujące rozwiązania:

* R Studio - wygodne zintegrowane środowisko obliczeniowe, stanowiące "nakładkę" na konsolę R. Posiada wiele udogodnień dla analityków i programistów.

* R Analytic Flow- Narzędzie do projektowania analiz w postaci diagramów przepływu. Pozwala świetnie zorganizować analizę danych i zwizualizować ją w postaci "bloczków".

* R Commander- Wygodna "nakładka" pozwalająca pracować z R w trybie "wskaż i kliknij" zamiast wpisywania komend. Obecnie już z niej nie korzystam, jednak bardzo polecam początkującym analitykom. Program posiada duże walory edukacyjne, gdyż zawarto w nim wiele różnych procedur analitycznych i przeglądając wygenerowany przez niego kod można się bardzo wiele nauczyć.

* Rattle - Bogata w możliwości "nakładka" do analiz typu data mining. Wykorzystywana jest w poważnych insytucjach rządowych i dużych korporacjach takich, jak np.: Australian Taxation Office, Australian Department of Immigreation, Ulster Bank, Toyota Australia, USGS i inne. Korzystają z niej także takie ośrodki naukowe, jak np.: Harbin Institute of Technology, Shenzhen Graduate School, Australian National University, University of Canberra, University of South Australia, Yale University, University of Liège Belgium, University of Wollongong, University of Southern Queensland, Australian Consortium for Social and Political Research.

Deducer - Nakładka graficzna na R * przydatnym narzędziem do generowania wykresów za pomocą biblioteki ggplot2.

Przy okazji: R Data Mining

------------------------------------------------

Te i wiele innych informacji znajdziecie w dość rozbudowanej (>350 slajdów) prezentacji pod adresami:

- http://r-clinical-research.com
- http://www.scribd.com/doc/208352322/Is-R-suitable-enou...Ten post został edytowany przez Autora dnia 14.06.15 o godzinie 02:20

Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.

Na podstawie powyższego wpisu, na potrzeby pewnej dyskusji powstała prezentacja pt. is R suitable enough for clinical research.

Zawiera wszystkie powyższe informacje plus kilka dodatkowych, przydatnych dla osób zajmujących się badaniami klinicznymi.Ten post został edytowany przez Autora dnia 25.02.14 o godzinie 17:57
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.

Bardzo fajnie zebrane! Dzięki.

Dorzucam "trzy grosze": dla medyków jeszcze warto wiedzieć, że istnieje taki dokument
http://www.r-project.org/doc/R-FDA.pdf
Przydaje się w argumentowaniu, że R można uzywać w kontekstach, które zwykle wymagają certyfikowanego oprogramowania.

~m.

Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.

Tak, ten dokument był/jest kluczowy dla biostatystyków pracujących przy badaniach klinicznych, coś o tym wiem :) Swoją drogą - warto wspominać, że R jest wspierany m.in. przez Merck (gsDesign), to zawsze robi wrażenie :)
http://www.revolutionanalytics.com/content/merck-optim...

“We use R for adaptive designs frequently because it’s the fastest tool to explore designs that interest us. Off- the-shelf software, gives you off-the-shelf options. Those are a good first order approximation, but if you really want to nail down a design, R is going to be the fastest way to do that.”

Keaven Anderson
Executive Director Late Stage Biostatistics,
Merck


Zresztą, eRowe pakiety rozwija cała masa biostatystyków z licznych ośrodków naukowych. Na "dziadostwo" nie traciliby czasu (ani reputacji) :)Ten post został edytowany przez Autora dnia 25.02.14 o godzinie 18:06

Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.

Hah, 6 tysięcy pakietów :)
http://blog.revolutionanalytics.com/2014/10/r-312-rele...

R w liczbach - najnowsze podsumowania: http://r4stats.com/articles/popularity/


Obrazek


Obrazek


Obrazek

Temat: Dlaczego GNU R? Krótka charakterystyka środowiska.

Uaktualniłem moją prezentację poświęconą zastosowaniu R w badaniach klinicznych. Dokument może przydać się szczególnie biostatystykom, którzy pracowali dotychczas w SAS i dopiero poznają R.

Zapraszam do przeglądania :)

HTML: http://r-clinical-research.com W przyszłości będzie tam pełnoprawny serwis poświęcony Rowi w medycynie, a na razie - wersja HTML prezentacji.
PDF: http://www.scribd.com/doc/208352322/Is-R-suitable-enou...Ten post został edytowany przez Autora dnia 12.06.15 o godzinie 06:45



Wyślij zaproszenie do