Hlavní navigace

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

Rado Bonk 18. 7. 2002

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?
Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Root.cz: 250 Mbit/s po telefonní lince, když máte štěstí

250 Mbit/s po telefonní lince, když máte štěstí

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu