Nikola Kaspříková

Návod k R

R snadno a rychle (... a snad jenom trochu špatně)

1 Co je R

R je program pro statistické výpočty, je k dispozici na stránkách R Project, kde je i podrobná dokumentace R. Velkou předností R je zejména promyšlený návrh, flexibilita a volná dostupnost v licenci GNU GPL.
O něco podrobnější charakteristika R


2 Technika základní obsluhy programu R


3 Jak pracovat s dokumentací R a kde ji najít

online nápovědu lze vyvolat funkcí help(), například pro informace o funkci lm:

 > help(lm)

Určitý řetězec v nápovědě lze vyledat pomocí funkce help.search(), například:

> help.search("Student")

Referenční manuály jsou k nalezení na stránkách www.r-project.org. Jsou k dispozici návody a pomůcky vytvořené uživateli R - užitečný může být například přehled stručný příkazů, dostupný v CRAN. Mezi česky psané knihy pojednávající mimo jiné o programu R patří [Stano Pekár, Marek Brabec: Moderní analýza biologických dat. Zobecněné lineární modely v prostředí R. Scientia 2009. ISBN 978-80-86960-44-9.]. Vyšel také druhý díl Lineární modely s korelacemi v prostředí R.


4 (některé) Předdefinované funkce v R

Načtení dat ze souboru data.txt uloženého v pracovním adresáři do objektu pod názvem mojeData:

> mojeData <–read.table("data.txt", header=TRUE)

Obrázky a export obrázků do souboru: plot()
Příklad. Uložení grafu hustoty chi-kvadrát rozdělení do souboru .jpg.

> x=seq(-3,13,length=500);
jpeg("hustotaChikvadrat.jpg", width = 500, height = 500);
plot(x,dchisq(x,df=5),xlim=c(0,13),ylim=c(-0.0,0.22),type="l",xlab="",ylab="",
las=1,xaxp=c(0,12,4),yaxp=c(0,0.2,2), bty="l",xaxs="i",yaxs="i",lwd=2,
main="Hustota Chi^2 rozdělení s 5 stupni volnosti");
mtext(expression(f(x)),at=0.22,side=2,las=1,line=1);mtext("x",at=13,side=1,line=1);
mtext(expression({chi[0.95]^2}(5)),at=11,side=1,line=0.4);
xchi=seq(0,qchisq(p=0.95,df=5),length=1400);ychi=dchisq(xchi,df=5);
 polygon(c(0,xchi,qchisq(p=0.95,df=5)), c(0,ychi,0), col="grey80", lty=0);
text(3,0.08,0.95);
lines(x,dchisq(x,df=5));
segments(qchisq(p=0.95,df=5),-0.1,qchisq(p=0.95,df=5),dchisq(qchisq(p=0.95,df=5),df=5));
segments(0,0,qchisq(p=0.95,df=5),0);
dev.off();

graf hustoty chi-kvadrát rozdělení s pěti stupni volnosti
Pro export do souboru .eps je využitelná funkce postscript()


Spojování hodnot do vektoru a některé další funkce

> tstc=c(20,23,5)
> tstc
[1] 20 23  5
> c(tstc,tstc)
[1] 20 23  5 20 23  5
> mean(tstc)
[1] 16
> mean(c(tstc,c(0,0,0)))
[1] 8
> summary(c(tstc,c(0,0,0)))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    2.50    8.00   16.25   23.00 
> length(c(tstc,c(0,0,0)))
[1] 6

5 Definování nových funkcí v R

K definování nových (uživatelských) funkcí se používá předdefinovaná funkce function(). Například

> tstfce=function(x,y) {2*(x+y)}
> tstfce
function(x,y) {2*(x+y)}
> tstfce(1,3)
[1] 8

Příklad. Ukázka implementace algoritmu Eratosthenovo síto - k nalezení všech prvočísel nejvýše rovných zadanému číslu n.
> prvocisla=function(n_) {
if (n_ < 2) stop("Chyba, zadejte cislo 2 nebo vetsi.")  ## n_ má být alespoň 2
if (n_==2) return(2) else {
vystup=c(2);  	  ## inicializace seznamu pro ukládání výsledku
sez_=seq(from=3,by=2,to=n_);   ## generování seznamu lichých čísel, která se budou testovat na prvočíselnost
nasobky=function(i_,l_) seq(from=i_,by=2*i_, to=l_); ## generování seznamu lichých násobků čísla i_  do l_ včetně
while (length(sez_)>0) {
vystup=append(vystup,sez_[1]);
sez_=setdiff(sez_,nasobky(sez_[1],n_));}  ## sez_[1] vybírá první prvek objektu sez_; setdiff je rozdíl množin
return(vystup);}}
Příklad použití funkce prvocisla - nalezení všech prvočísel nejvýše rovných číslu 34
> prvocisla(34)
 [1]  2  3  5  7 11 13 17 19 23 29 31
Zjištění, kolik existuje prvočísel menších nebo rovných zadanému číslu 10000
> x=prvocisla(10000)
> length(x)
[1] 1229
Ilustrace závislosti počtu prvočísel menších nebo rovných n na n
počet prvočísel menších nebo rovných n

6 Další příklady

Shluková analýza vícerozměrných dat v programu R - popis a ukázka aplikace některých shlukovacích algoritmů - fuzzy shluková analýza, shlukování kolem medoidů (partitioning around medoids, PAM) a modifikace metody PAM pro velké datové soubory CLARA. Pozornost je také věnována prostředkům pro hodnocení kvality výsledného modelu, R nabízí pro tento účel užitečný nástroj, totiž graf obrysu shluků (silhouette plot).