R (język programowania)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
R
Logo języka
Pojawienie się 2000-10-2626 października 2000
Aktualna wersja stabilna 3.0.3 / 6 marca 2014
Twórca The R Foundation for Statistical Computing
Licencja GNU GPL
Platforma systemowa Linux/Unix, Windows, Mac OS X
Książki w Wikibooks Książki w Wikibooks
www.r-project.org

GNU R to język programowania i ś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 Lucent Technologies) 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. W tej chwili GNU R rozprowadzany jest w postaci kodu źródłowego oraz w postaci binarnej wraz z wieloma dystrybucjami Linuksa. Dostępna jest także wersja dla Microsoft Windows i Mac OS.

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ę szczególnie dobrze do przeprowadzania analiz w ramach badań klinicznych[4][5].

R jest wykorzystywany w wielu znanych 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 wspoł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[edytuj | edytuj kod]

Istnieje kilka graficznych interfejsów dla R, wśród nich wymienić można RKWard, SciViews-R, Rcmdr oraz RStudio. Wiele edytorów ma specjalne tryby pracy dla R, np. Emacs (Emacs Speaks Statistics), jEdit, Kate 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]

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 | 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]

Linki zewnętrzne[edytuj | edytuj kod]

Przypisy