R (język programowania)
Logo języka | |
Pojawienie się |
(dts) 26 października 2000 |
---|---|
Aktualna wersja stabilna |
4.4.2 |
Twórca |
The R Foundation for Statistical Computing |
Licencja | |
Platforma systemowa | |
Strona internetowa |
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 macOS.
Obszary zastosowań
[edytuj | edytuj kod]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, macOS i wielu systemów uniksowych.
GUI
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]Przykład 1.
[edytuj | edytuj kod]Generowanie liczb losowych i wykreślenie histogramu
# generowanie 3000 liczb losowanych z rozkładu normalnego
x <- rnorm(3000)
# obliczenie histogramu (bez rysowania) dla 50 przedziałów
histX <- hist(x, breaks=50, plot=FALSE)
# wykreślenie histogramu z kolorem wypełnienia słupków ustawionym na czerwony
plot(histX, col="red")
Przykład 2.
[edytuj | edytuj kod]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.
[edytuj | edytuj kod]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.
[edytuj | edytuj kod]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.0585
Coefficients:
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 ` ' 1
Residual standard error: 1.44 on 8 degrees of freedom
Multiple R-Squared: 0.9783, Adjusted R-squared: 0.9756
F-statistic: 360.6 on 1 and 8 DF, p-value: 6.121e-08
Przykład 5.
[edytuj | edytuj kod]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 0
Coefficients:
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.393606
x3 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 freedom
Residual deviance: -2.2871e-14 on 0 degrees of freedom
AIC: 24.455
Number of Fisher Scoring iterations: 3
Polskie książki o R
[edytuj | edytuj kod]- 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.
Przypisy
[edytuj | edytuj kod]- ↑ Ihaka R.,Gentleman R.. R: A language for data analysis and graphics.. „Journal of Computational and Graphical Statistics”, 1995. DOI: 10.1080/10618600.1996.10474713.
- ↑ bioconductor - zestaw narzędzi do analizy genomu o otwartym kodzie źródłowym, oparty na R
- ↑ Gentleman R. et al. Bioconductor: open software development for computational biology and bioinformatics.. „Genome Biology”, 2004. DOI: 10.1186/gb-2004-5-10-r80.
- ↑ R in Clinical Research and Evidence-Based Medicine [online], r-clinical-research.com [dostęp 2017-11-26] .
- ↑ FDA: R OK for drug trials (Revolutions) [online], blog.revolutionanalytics.com [dostęp 2017-11-26] .
- ↑ Companies Using R [online], Revolution Analytics [zarchiwizowane z adresu 2016-07-12] (ang.).
- ↑ StatSoft Cross-Industry Solutions [online], StatSoft [dostęp 2017-11-26] [zarchiwizowane z adresu 2014-02-22] (ang.).
- ↑ IBM - Produkty [online], www-03.ibm.com [dostęp 2017-11-26] (pol.).
- ↑ R Interface Now Available in SAS/IML Studio [online], support.sas.com [dostęp 2017-11-26] (ang.).