R (język programowania)

język programowania

GNU Rinterpretowany 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.

R
Logo języka R
Logo języka
Pojawienie się

2000-10-26 26 października 2000(dts)

Aktualna wersja stabilna

4.4.2
(31 października 2024) [±]

Twórca

The R Foundation for Statistical Computing

Licencja

GNU GPL

Platforma systemowa

Linux/Unix, Windows, Mac OS X

Strona internetowa

Obszary zastosowań

edytuj

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.

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.

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

Przykład 1.

edytuj
 
Histogram wygenerowany za pomocą kodu z przykładu 1.

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

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

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

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

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

Przypisy

edytuj
  1. 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. 
  2. bioconductor - zestaw narzędzi do analizy genomu o otwartym kodzie źródłowym, oparty na R
  3. Gentleman R. et al. Bioconductor: open software development for computational biology and bioinformatics.. „Genome Biology”, 2004. DOI: 10.1186/gb-2004-5-10-r80. 
  4. R in Clinical Research and Evidence-Based Medicine [online], r-clinical-research.com [dostęp 2017-11-26].
  5. FDA: R OK for drug trials (Revolutions) [online], blog.revolutionanalytics.com [dostęp 2017-11-26].
  6. Companies Using R [online], Revolution Analytics [zarchiwizowane z adresu 2016-07-12] (ang.).
  7. StatSoft Cross-Industry Solutions [online], StatSoft [dostęp 2017-11-26] [zarchiwizowane z adresu 2014-02-22] (ang.).
  8. IBM - Produkty [online], www-03.ibm.com [dostęp 2017-11-26] (pol.).
  9. R Interface Now Available in SAS/IML Studio [online], support.sas.com [dostęp 2017-11-26] (ang.).

Linki zewnętrzne

edytuj