Hlavní navigace

Zabudnite na gnuplot, prichádza "R" (2)

Rado Bonk

V minulej časti sme si spravili krátky výlet do štatistického jazyka a zároveň prostredia "R". Jemne načrtli, čo dokáže v numerickej aj v grafickej oblasti. Ak to s eRkom myslite vážne, dozviete sa, ako sa inštaluje, ktoré balíky sú v default inštalácií a ako pridať rozširujúce balíky. Takisto budeme pokračovať v úvode do analýzy dát, a samozrejme produkovať grafické výstupy.

Inštálacia a štruktúra súborov.

Domovská stránka projektu „R“ nás odkazuje na stránku CRAN (The Comprehensive R Archive Network), čo je vlastne FTP server, kde sú uložené zdrojové kódy aj binárky eRka. Treba si nalistovat binárky podľa OS a platformy. Najnovšie zdrojáky aj binárky eRka majú označenie 1.5.1. Treba si stiahnuť nasledovné balíky:

R-base-1.5.1–1.i386.rpm
R-recommended-1.5.1–2.i386.rpm

inštalujú sa príkazom:

Tabulka č. 292
[root@templar temp]$ rpm -Uvh R*.rpm

Na svojom systéme (LRH 7.2) som musel doinštalovať ešte balík:

readline41–4.1–10.i386.rpm

Kde sa eRko nainštalovalo? Domácim predvoleným adresárom je „/usr/lib/R“, v ňom sa vytvorila nasledovná adresárová štruktúra:

./afm
./bin
./doc
./library
./share
./etc
./includes
./modules

Adresár ./library je asi najzaujímavejší. Obsahuje totiž adresáre, pomenované podľa balíkov, ktoré sa nainštalovali v základnej inštalácií eRka. Jednoducho sa tak dá zisťiť, ktoré balíky sú nainštalované. Do týchto adresárov pozerám aj preto, že sú tam manuály, a takisto príklady použitia jednotlivých balíkov. Napr. balík cclust sa používa na klastrovú analýzu dát a hľadanie skupín (zhlukov) v dátach. Obsahuje tri príkazy: clustIndex, cclust, a predict.cclust.

Základné balíky sa museli nainštalovať preto, pretože dodatočné balíky sa inštalujú už z promptu eRka, alebo za použitia prikazu „R“. Zoznam rozširujúcich balíkov aj s popisom je tu. Treba si stiahnuť príslušný *.tgz balík a nainštalovať ho príkazom (ako root užívateľ):

Tabulka č. 293
[root@ ~/tmp]# R CMD INSTALL -l /usr/lib/R \
cclust_0.6-9.tar.gz

Keď sa teraz pozriete do /usr/lib/R/library, mal by sa tam objaviť adresár s menom balíka, čo ste práve nainštalovali. Zoznam nainštalovaných balíkov sa dá získať aj príkazom installed.pac­kages(). Inštalácia zo zdrojových kódov je popísaná v dokumente „R Instalation and Administration“. ERko máme nainštalované, poďme sa pozrieť, čo dokáže.

Operácie s vektormi.

Tu doplníme informácie o vektoroch z minulého dielu, sú vysvetlené na príkladoch:

Tabulka č. 294
> x <- c(3,6,12,17,22,25)       # definovanie vektora

> x[c(2,4)]     # extrakcia 2 a 4 prvku v poradi
[1] 6 17
> x[-c(2,4)] # vsetko okrem elementov na 2 a 4 mieste
[1] 3 12 22 25
> x>11  # vygeneruje logicky vektor (T alebo F)
[1] FALSE FALSE TRUE TRUE TRUE TRUE
> x[x>11]      # vypis elementov vyhovujucich podmienke
[1] 12 17 22 25

Vstup dát so súborov.

Z predchádzajúceho dielu vieme, ako vygenerovať vektor priamo v eRku. Pri veľkých objemoch dát, ak by sme sa aj neupísali, celkom iste by sme spravili chybu. Naimportujme teraz do eRka dáta zo vstupného ASCII súboru. Súbor predstavuje priemerné mesačné prietoky na piatich riekach. Rieky sú organizované v riadkoch a mesačné prietoky v stĺpcoch. Po spustení eRka ho naimportujeme takto:

Tabulka č. 295
> prietoky <- read.table("prietoky.txt", header=TRUE>
> names(prietoky)

Funkciou read.table sa načítali dáta z ASCII súboru. Pri tejto funkcii sa dá zadať typ oddeľovača hodnôt v súbore, treba si len pozrieť manuál. Ak máte svoje dáta vygenerované v Exceli, pozrite si príkaz read.csv. Voľba header=TRUE vraví eRku, že prvý riadok vo vstupnom súbore predstavuje názvy stĺpcov, nie hodnoty. Môže však nastať aj prípad, že na niektorých miestach v matici vstupného súboru budú chýbajúce dáta, reprezentované napr. znakom „“, vtedy treba použiť voľbu na.strings=„“. Príkazom names(prietoky) sme zasa vylistovali názvy stĺpcov v objekte. Ak chcete spoznať rozmery vytvoreného objektu (resp. rozmery matice), skúste príkazy length(prietoky) a dim(prietoky). Objekt sa maže príkazom rm().

Poďme na prvé analýzy. Základnú numerickú štatistiku získame funkciou summary(). Zobrazené štatistické ukazovatele (min. hodnota, prvý kvartil, median, priemer, tretí kvartil, a max. hodnota) sú pre každý stĺpec, teda pre kažý mesiac, v ktorom sa sledoval priemerný prietok. Podobné štatistiky by sme získali aj jednotlivými funkciami: mean(), median() a range(). Čo ale ak chceme získať základné štatistické ukazovatele nie pre mesiace, ale pre daný tok. Musíme upraviť vstupný súbor tak, aby stĺpce v novom súbore obsahovali prietoky za dvanásť mesiacov (teda riadky z originálneho súboru). Znamená to vytvoriť transponovanú maticu k originálnej matici pomocou funkcie t(). Potom zistíme rozmery transponovanej matice a nakoniec základné štatistiky funkciou summary().

Tabulka č. 296
> prietoky.tr <- t(prietoky)
> dim(prietoky.tr)
> summary(prietoky.tr)

Vizuálne znázornenie prietokov je viacej prehľadnejšie. Pre náš účel sa používa stĺpcovy diagram (barplot). V eRku je implementovaný funkciou barplot(). Táto funkcia berie ako argument alebo maticu (vtedy môžme vykresliť viacero pozorovaní do jedného grafu), alebo vektor (vtedy môžme vykresliť práve jedno pozorovanie do grafu, napr. priemerné mesačné prietoky pre jeden tok). Predtým než funkciu použijeme potrebujeme vygenerovať maticu prietokov bez názvov tokov v prvom stĺpci.

Tabulka č. 297
> prietoky.new <- as.matrix(prietoky[1:6,2:13])
> barplot(prietoky.new, beside=T)

Cez znak „:“ sme objektu prietoky.new priradili prvý až šiesty riadok a druhý až trinásty stĺpec z objektu prietoky, a vykreslili stĺpcovy diagram (Obr. 1). Skúste voľbu beside=F, je na užívateľovi, aby sa rozhodol, ktorá forma mu vyhovuje viacej.


Graf, aby sa dal naozaj použiť, treba doplniť o nadpis, legendu a popis osí. Toto všetko sa špecifikuje pri použití funkcie. Najprv vytvorime vektor zložený z reťazcov legendy (musia byť v úvodzovkách) a potom zadáme ostatné voľby pre funkciu barplot() (Obr. 2).

Tabulka č. 298
> legenda <- c("Liestany/Nitrica","Biskupice/Bebrava",
+ "Nadlice/Bebrava","Chalmova/Nitra","Chynorany/Nitra",
+ "Nitrianska Streda/Nitra")
> barplot(prietoky.new, beside=T, legend.text=legenda,
+ main="Average monthly discharges of upper
+ Nitra rivers", sub="(1931 - 1980)", xlab="month",
+ ylab="discharge [m^3/s]")


Toľko na úvod do grafických možností eRka, nakoniec ešte niekoľko príkazov ktorými sa dá v eRku dovoľať nápovedy:

Tabulka č. 299
> help(prikaz)              # manualova stranka
> example(prikaz)           # priklady pouzitia
> apropos("tematika")       # prikazy pre tematiku
> help(package=meno.balika) # zoznam prikazov v baliku

Nabudúce si ukážeme niektoré rozšírené grafické možnosti na rovnakom dátovom súbore a budeme pokračovať s analýzou dát. Ak chcete študovať trochu dopredu začnite napríklad príkazom demo(graphics).

Našli jste v článku chybu?
7. 11. 2008 14:41
kornut (neregistrovaný)
Dobry den, neviem, ci som na spravnom miest, najskor asi nie, ale neviem, kde sa obratit. Vedl by mi prosim niekto poradit ohladom prace v R cran? Nasiel som k tomu dost vela dokumentacie, ale kazda sa tyka programovania a ja som v tomto tupota... Existuje moznost nainstalovat nejake baliky/rozhrania/nieco podobne, ktore by mi umoznili mudovat statisticke modely, vytvarat grafy, zistovat rozdelenia, testovat hypotezy tak, ako je to v beznych statistickych softveroch v nejakom grafickom rozhrani?…
31. 3. 2006 0:38
Mám taky problém s importem dat do R-ka. Nevím jak z dat udělat čísla - asi mi to bere jako textové hodnoty - mohlo by to být tím, že je v tom desetiná čárka místo tečky?