R (język programowania)
GNU R – interpretowany język programowania oraz środowisko do obliczeń statystycznych i wizualizacji wyników. Jest to projekt GNU podobny do języka i środowiska S stworzonego w Bell Laboratories (dawniejsze AT&T, obecnie Nokia) przez Johna Chambersa i jego współpracowników. R jako implementacja języka S została stworzona przez Roberta Gentlemana i Rossa Ihakę na uniwersytecie w Auckland[1].Nazwa pochodzi od pierwszych liter imion twórców oraz jest nawiązaniem do języka S. GNU R rozprowadzany jest w postaci kodu źródłowego oraz w postaci binarnej wraz z wieloma dystrybucjami GNU/Linuksa. Dostępna jest także wersja dla Microsoft Windows i Mac OS.
Logo języka | |
Pojawienie się | (dts) 26 października 2000 |
---|---|
Aktualna wersja stabilna | 4.3.3 |
Twórca | The R Foundation for Statistical Computing |
Licencja | |
Platforma systemowa | |
Strona internetowa |
Obszary zastosowań
R jest podstawowym językiem programowania w bioinformatyce, spopularyzowanym głównie dzięki stworzonemu przez Roberta Gentlemana repozytorium Bioconductor[2].Artykuły Gentlemana o R i Bioconductorze[3] należą do najczęściej cytowanych w bioinformatyce (ponad 4000 cytowań według Google Scholar). R nadaje się do przeprowadzania analiz w badaniach klinicznych[4][5].
R jest wykorzystywany w wielu firmach, w tym m.in. Facebook, Google, Merck, Altera, Pfizer, LinkedIn, Shell, Novartis, Ford, Mozilla czy Twitter[6]. Producenci komercyjnych pakietów statystycznych (SPSS, SAS, RapidMiner, Statistica) oferują dedykowane mechanizmy zapewniające ich współpracę z R[7][8][9].
Kod źródłowy R opublikowany jest na zasadach licencji GNU GPL. Dostępne są prekompilowane binarne wersje dla systemów Windows, Macintosh i wielu systemów uniksowych.
GUI
Istnieje kilka graficznych interfejsów dla R, wśród nich wymienić można RKWard, SciViews-R, Rcmdr, RStudio, JGR, Statistical Lab oraz R Commander. Wiele edytorów ma specjalne tryby pracy dla R, np. Emacs (Emacs Speaks Statistics), jEdit, Kate, Visual Studio (Microsoft R Tools for Visual Studio) i Tinn. Jest także wtyczka R plug-in dla Eclipse.
Cechy
R dostarcza szeroką gamę technik statystycznych (liniowe i nieliniowe modelowanie, klasyczne testy statystyczne, analiza szeregów czasowych, klasyfikacja, grupowanie,...) i graficznych. W dodatku R jest rozszerzalne za pomocą dodatkowych pakietów oraz skryptów pisanych przez użytkownika.
Jedną z mocnych stron R jest łatwość, z jaką można tworzyć dobrze zaprojektowane wykresy z jakością nadającą się do publikacji. Dotyczy to także symboli i formuł matematycznych. Wiele uwagi poświęcono minimalizacji wyborów, jakie musi wykonać użytkownik, nadając formę wykresowi. Mimo istnienia ustawień domyślnych użytkownik ma możliwość pełnej kontroli wykresu.
Przykładowe skrypty
Przykład 1.
Generowanie liczb losowych i wykreślenie histogramu
# generowanie 3000 liczb losowanych z rozkładu normalnegox <- rnorm(3000)# obliczenie histogramu (bez rysowania) dla 50 przedziałówhistX <- hist(x, breaks=50, plot=FALSE)# wykreślenie histogramu z kolorem wypełnienia słupków ustawionym na czerwonyplot(histX, col="red")
Przykład 2.
Podstawowe statystyki – w trybie interakcyjnym obliczane są proste statystyki dla danych w wektorze x wygenerowanym w poprzednim przykładzie
> summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max.-3.47300 -0.71500 -0.04161 -0.02642 0.63570 3.05000>
Przykład 3.
Podstawowe operacje:
Przypisanie to <-
. Wektor to c(pierwszy element, drugi element, ...)
. Większość operacji można wykonywać zarówno na skalarach jak i na wektorach – w tym drugim przypadku jeśli operacja nie ma sensu wektorowego jest wykonywana na wszystkich elementach wektora.
> x <- 2> x[1] 2> y <- c(1,7,10)> y[1] 1 7 10> sin(y)[1] 0.8414710 0.6569866 -0.5440211> 1:100 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 91 92 93 94 95 96 97 98 99 100> sin(1:100) + 3 [1] 3.841471 3.909297 3.141120 2.243198 2.041076 2.720585 3.656987 3.989358 [9] 3.412118 2.455979 2.000010 2.463427 3.420167 3.990607 3.650288 2.712097 [17] 2.038603 2.249013 3.149877 3.912945 3.836656 2.991149 2.153780 2.094422 [25] 2.867648 3.762558 3.956376 3.270906 2.336366 2.011968 2.595962 3.551427 [33] 3.999912 3.529083 2.571817 2.008221 2.356462 3.296369 3.963795 3.745113 [41] 2.841377 2.083478 2.168225 3.017702 3.850904 3.901788 3.123573 2.231745 [49] 2.046247 2.737625 3.670229 3.986628 3.395925 2.441211 2.000245 2.478449 [57] 3.436165 3.992873 3.636738 2.695189 2.033882 2.260819 3.167356 3.920026 [65] 3.826829 2.973449 2.144480 2.102072 2.885215 3.773891 3.951055 3.253823 [73] 2.323228 2.014854 2.612218 3.566108 3.999520 3.513978 2.555887 2.006111 [81] 2.370112 3.313229 3.968364 3.733190 2.823924 2.076542 2.178182 3.035398 [89] 3.860069 3.893997 3.105988 2.220534 2.051718 2.754748 3.683262 3.983588 [97] 3.379608 2.426618 2.000793 2.493634> mean(sin(1:100) + 3)[1] 2.998728> var(sqrt(80:1))[1] 4.359722
Przykład 4.
Regresja liniowa:
Zmiennej x przypisujemy wartości 1,2,..,10, natomiast zmiennej y wartości funkcji liniowej o współczynniku nachylenia 3 oraz stałej 5 plus błąd losowy o rozkładzie normalnym (średnia=0, odchylenie standardowe=1).Komenda lm(y~x) dopasowuje do wygenerowanych danych model regresji liniowej.
> x<-c(1:10)> y<-5+3*x+rnorm(10)> summary(lm(y~x))lm(formula = y ~ x)Residuals: Min 1Q Median 3Q Max-2.2687 -0.6058 0.1234 0.8704 2.0585Coefficients: Estimate Std. Error t value Pr(>|t|)(Intercept) 4.6991 0.9836 4.778 0.00139 **x 3.0101 0.1585 18.989 6.12e-08 ***---Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1Residual standard error: 1.44 on 8 degrees of freedomMultiple R-Squared: 0.9783, Adjusted R-squared: 0.9756F-statistic: 360.6 on 1 and 8 DF, p-value: 6.121e-08
Przykład 5.
Regresja logistyczna:Przykładowe dane:
y <- c(5,8,15,25)N <- c(100,100,100,100)x <- factor(c(1:4))
Komenda glm(cbind(y,N-y)~x,family=binomial) dopasowuje do danych model regresji logistycznej.Wynik estymacji (w kolumnie Estimate jest logarytm OR czyli ilorazu szans):
Call:glm(formula = cbind(y, N - y) ~ x, family = binomial)Deviance Residuals:[1] 0 0 0 0Coefficients: Estimate Std. Error z value Pr(>|z|)(Intercept) -2.9444 0.4588 -6.417 1.39e-10 ***x2 0.5021 0.5886 0.853 0.393606x3 1.2098 0.5375 2.251 0.024407 *x4 1.8458 0.5137 3.593 0.000326 ***---Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1(Dispersion parameter for binomial family taken to be 1) Null deviance: 2.0424e+01 on 3 degrees of freedomResidual deviance: -2.2871e-14 on 0 degrees of freedomAIC: 24.455Number of Fisher Scoring iterations: 3
Polskie książki o R
- Przewodnik po pakiecie R. Autor: Przemysław Biecek, Oficyna Wydawnicza GiS 2008 (wydanie pierwsze), 2011 (wydanie drugie), 2014 (wydanie trzecie), 2017 (wydanie czwarte), ISBN 978-83-89020-79-6
- Analiza danych z programem R. Modele liniowe z efektami stałymi, losowymi i mieszanymi, Autor: Przemysław Biecek, Wydawnictwo Naukowe PWN 2011 (wydanie pierwsze), 2013 (wydanie drugie), ISBN 978-83-01-17453-8
- Programowanie w języku R. Analiza danych, obliczenia, symulacje. Autor: Marek Gągolewski, Wydawnictwo Naukowe PWN 2014 (wydanie pierwsze), 2016 (wydanie drugie poszerzone), ISBN 978-83-01-18939-6
- Podstawy statystyki z przykładami w R. Autor: Tomasz Górecki, Wydawnictwo BTC 2011, ISBN 978-83-60233-69-6
- Edyta Łaszkiewicz: Ekonometria przestrzenna III. Modele wielopoziomowe - teoria i zastosowanie. Warszawa: Wydawnictwo C. H. Beck, 2016. ISBN 978-83-255-8598-3. (pol.). (skrypty w R)
- Ekonometryczne modelowanie polskiej gospodarki z pakietem R. Autor: Michał Rubaszek, Oficyna Wydawnicza SGH 2012, ISBN 978-83-7378-742-1
- Marek Walesiak, Eugeniusz Gatnar, Andrzej Bąk: Statystyczna analiza danych z wykorzystaniem programu R. Warszawa: Wydawnictwo Naukowe PWN, 2009. ISBN 978-83-01-15661-9. OCLC 316571581. (pol.).
- Adam Zagdański, Artur Suchwałko: Analiza i prognozowanie szeregów czasowych : praktyczne wprowadzenie na podstawie środowiska R. Warszawa: Wydawnictwo Naukowe PWN, 2016. ISBN 978-83-01-18356-1. OCLC 932224606. (pol.).
- Jakub Nowosad, Geostatystyka w R, Poznań: Space A, 2019, ISBN 978-83-953296-0-9 .
- Jakub Nowosad, Elementarz programisty: wstęp do programowania używając R, Poznań: Space A, 2019 .
- Piotr Śliwka, Anna Świstowska: Metody prognozowania gospodarczego z pakietem R, Warszawa, Wydawnictwo UKSW, 2019, ISBN 978-83-8090-666-2.