Zjednodušený návod na software R Text vychází z textu K. Konečné a J. Koláčka – Jak pracovat s jazykem R. Textu bude využíváno pro předmět Pravděpodobnost a statistika na TUL.
J. Chudoba Verze 1.02 Liberec 5. října 2014
1 První setkání s jazykem R 1.1 Základní ovládání Program lze získat z webových stránek projektu http://www.r-project.org Po spuštění programu se objeví okno s konzolí, ve které se dají spouštět funkce, vkládat objekty, provádět výpočty a zobrazit základní výstupy. Dále se lze setkat s dalšími typy oken: okno nápovědy – volá se příkazem help() grafické okno editor programu – zobrazí se v menu File – New Script. Toto okno je určeno k tvorbě programů. Jestliže se nezmění základní nastavení, příkazy jsou odlišeny červenou barvou, výstupní řádek barvou modrou. Příkaz spustíme klávesou ENTER. Listovat v příkazech lze pomocí kláves a . Příkazy jsou vkládány na nový řádek, v případě více příkazů za sebou jsou oddělovány středníkem. Složitější příkazy, které mají být spuštěny bezprostředně po sobě, jsou seskupeny do složených závorek. Argumenty lze uvádět v libovolném pořadí ve tvaru název.argumentu=hodnota. Názvy proměnných či objektů se mohou skládat z velkých a malých písmen, číslic, tečky a podtržítka. Název musí začínat písmenem. R rozlišuje malá a velká písmena. Pro ukončení programu se používá příkaz q(). Vložení výrazu do proměnné
> a <- 2 >a [1] 2
Komentář se vkládá za maltézský kříž
> a <- 2 # komentar >a [1] 2
1.2 Nápověda Otevření okna nápovědy Zobrazení nápovědy k určité funkci Zobrazení argumentů příkazu
help() help(nazev.funkce) ?nazev.funkce args(nazev.funkce)
Hledání nápovědy i podle klíčového slova help.search(‘nazev.funkce’)
1.3 Pracovní prostor Program R načítá data z jakéhokoliv adresáře. Nejjednodušší je ukládat data do pracovního adresáře. Chceme-li zjistit, ve kterém adresáři se právě nacházíme, použijeme příkaz getwd(). Ten zobrazí kompletní cestu aktuální složky. Změna pracovního adresáře setwd(„cesta.k.adresáři“) Zobrazení názvu souborů v aktuálním adresáři dir() Zobrazení souborů v zadaném adresáři list.files(„cesta.k.adresáři“) Uložení objektů pro pozdější práci
File – Save Workspace.
Vypsání všech používaných objektů
objects() ls()
2 Rozdělení objektů 2.1 Datové typy objektů
číslo – k oddělení desetinných míst se využívá tečka > 1.234 komplexní číslo – numerická hodnota je doplněna o komplexní jednotku. > 0 + 2i [1] 0 + 2i logické hodnoty – hodnoty TRUE, T, FALSE, F > 2.3 > 3 [1] FALSE řetězec – používá se pro textové hodnoty, pro popis os a názvů grafů. Řetězec musí být zadán do jednoduchých apostrofů (‘ ‘) nebo uvozovek (“ “). K dispozici jsou rovněž hodnoty: NA, která představuje neznámou nebo chybějící hodnotu. NULL – prázdný objekt, Inf – nekonečno NaN – nedefinované výpočty (například 0/0)
2.2 Datové struktury
3 Vektory 3.1 Základní příkazy, tvorba vektorů Všechny prvky vektoru musí být stejného datového typu – numerický, komplexní, logický nebo typu řetězec. Některé prvky vektoru však nemusí být známy. Vytvoření vektoru Komplexní vektor Vektory logických hodnot Vektory textových hodnot
x <- c(-1.2, 31.8, 10.7, 5.6, 9.22) c(-1.2, 31.8, 10.7, 5.6, 9.22)->x assign(“x”,c(-1.2, 31.8, 10.7, 5.6, 9.22)) x<-c(1+1i, 2+0i,3i) z <- (x<12 & x>-1) ovoce<-c(„banan“, „broskev“)
Vytvoření vektoru daného typu mode a dané délky length s nulovými hodnotami vector(mode,length) Generování posloupnosti čísel operátor : > 4:10 [1] 4 5 6 7 8 9 10 Generování posloupnosti čísel od čísla 1 do čísla uvedeného v argumentu funkce > sequence(c(3,5)) [1] 1 2 3 1 2 3 4 5 Generování složitějších posloupností seq(from=a, to=b, by=krok, length=délka) > seq(from=2, to=15, by=3) [1] 2 5 8 11 14 Opakování posloupnosti rep(times=počet_opakování) rep(each=počet_opakování_každé_složky) rep(length.out=výsledná délka vektoru) > x <- 2:5 > rep(x, times=3) [1] 2 3 4 5 2 3 4 5 2 3 4 5 > rep(x, each=3) [1] 2 2 2 3 3 3 4 4 4 5 5 5 > rep(x, length.out=10) [1] 2 3 4 5 2 3 4 5 2 3
Náhodná permutace prvků ve vektoru sample(x,size,replace) x název vektoru size počet prvků replace TRUE, FALSE, s opakováním nebo bez opakování prvků.
3.2 Subvektory K výpisu určité podmnožiny prvků vektoru lze použít hranatých závorek []. > x <- 2:16 > x[7] [1] 8 > x[4:12] [1] 5 6 7 8 9 10 11 12 13
3.3 Délka a změna délky vektoru Stanovení délky vektoru > length(x) [1] 8 Vypsání prvků vektoru > u[c(1, 3, 5)] [1] 5 7 9 > u[-c(1, 3, 5)] [1] 6 8 10 11 12
length(x)
vypíše 1., 3. a 5. prvek vektoru vynechá 1., 3. a 5. prvek vektoru
3.4 Faktory Faktory jsou speciální případ vektorů s normálními nebo ordinálními daty. Jedná se o datovou strukturu, která umožňuje přiřadit smysluplné názvy jednotlivým kategoriím. Faktory obsahují informaci Levels – konečná množina hodnot, kterých proměnná může nabývat. Prvky Levels jsou uspořádány podle jejich typu. > factor(c("kocka", "kun", NA, "pes", "kocka", "pes", "pes")) [1] kocka kun
pes kocka pes pes Levels: kocka kun pes Argument labels se používá k definici popisků: > factor(c(0, 1, 1, 0, 1), labels=c("nepritomen", "pritomen")) [1] nepritomen pritomen pritomen nepritomen pritomen Levels: nepritomen pritomen
4 Matice a pole 4.1 Základní příkazy, tvorba matic a polí Matice je 2-dimenzionální datová strukturu skládající se z řádků a sloupců. Stejně jako vektory musí být všechny prvky matice stejného datového typu. Pole je k-dimenzionální struktura, matice je jejím speciálním typem pro k=2. Vytvoření matice
> u <- 1:20 > dim(u) <- c(4, 5)
dim(u) matrix(u,4,5) uspořádání prvků po sloupcích matrix(u,4,5,byrow=TRUE) uspořádání prvků po řádcích
>u [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20 Vytvoření k-rozměrného pole array(vektor,c(velikost,velikost)) > ar <- array(u, c(2, 5, 2)) ,,1 [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 ,,2 [,1] [,2] [,3] [,4] [,5] [1,] 11 13 15 17 19 [2,] 12 14 16 18 20 Uspořádání vektoru u do n sloupců matrix(u,ncol=n) Uspořádání vektoru u do n řádků matrix(u,nrow=n) Zjištění velikosti matice (pole) dim() Spojení vektorů do matice po řádcích rbind(u,v) Spojení vektorů do matice po sloupcích cbind(u,v) > cbind(1:3, 4:6) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 Pozor, jestliže vektory mají různou velikost, potom se opět řetězí od začátku.
4.2 Submatice Přístup k prvku v matici (poli) b<-A[1,2] prvek na prvním řádku a ve druhém sloupci Přístup k části matice b<-A[1:3,2:5]
4.3 Funkce pro manipulaci s maticemi Počet řádků pole Počet sloupců pole Dimenze pole Diagonála matice Determinant matice Vlastní čísla a vlastní vektory QR rozklad Stopa matice
nrow() ncol() dim() diag() det() eigen() qr() sum(diag())
Násobení matic po složkách * Pozor při nestejně dlouhých vektorech se kratší vektor řetězí
> u <- c(1, 2, 3) > v <- c(1, 2, 3, 4, 5) > x=u*v In u * v : longer object length is not a multiple of shorter object length >x [1] 1 4 9 4 10 Maticové násobení
%*%
Řešení soustavy rovnic rovnice Ax=b
x=solve(A,b)
Inverzní matice
solve(A)
5 Datové tabulky 5.1 Základní příkazy, tvorba datových tabulek a seznamů Datová tabulka je 2 dimenzionální struktura, která slouží k uchování souboru dat. Soubor dat se skládá z množiny proměnných (sloupce), které jsou pozorovány na množství případů (řádky). Jednotlivé sloupce mohou být různých datových typů, ale prvky každého sloupce musí být stejného datového typu. Počet případů musí být pro každou proměnnou stejný. Seznam je neobecnější datová struktura v R, která seskupuje několik i různých objektů do objektu většího rozsahu. Jedná se o datovou strukturu skládající se z posloupnosti objektů, kterým se říká složky. Každá složka může obsahovat objekt jakéhokoliv datového typu. Seznam tedy může obsahovat vektory různých datových typů a délek, matice, pole, datové tabulky, funkce a/nebo jiné seznamy. Vytvoření datové tabulky: Specifikace názvu sloupců a jejich hodnoty data.frame(nazev_1=vektor_1, nazev_2=vektor_2, ...) Argumenty: row.names check.names
názvy případů (řádků) TRUE kontroluje správnost pojmenování řádků
> data.frame(obor=factor(c(1, 0, 0, 1, 1), labels=c("OM", "MAEK")), + body=c(18, 13, 15, 20, 15)) obor body 1 MAEK 18 2 OM 13 3 OM 15 4 MAEK 20 5 MAEK 15 > data.frame(obor=factor(c(1, 0, 0, 1, 1), labels=c("OM", "MAEK")), + body=c(18, 13, 15, 20, 15), row.names=c("Petr", "Pavel", "Jirina", + "Adela", "Matej")) obor body
Petr Pavel Jirina Adela Matej
MAEK OM OM MAEK MAEK
18 13 15 20 15
Funkce list() slouží k vytvoření seznamu. Stejně jako u funkce data.frame() mohou být i složky seznamu pojmenovány pomocí argumentů. dim() names() contens() Poznámka:
vypisuje dimenzi tabulky dat zobrazuje názvy proměnných vrací vnitřní strukturu tabulky Je nutné instalovat balíček funkcí Hmisc příkazem install.packages(„Hmisc“) library (Hmisc)
5.2 Podmnožiny seznamů K vypsání podmnožiny seznamu lze použít jednoduchých závorek [ ] nebo [[ ]]. Jednoduchými závorkami uvádíme, které složky seznamu chceme získat. Jestliže jednotlivé složky nejsou pojmenovány požadovanou složku specifikujeme jejím číslem K výpisu více složek lze použít operátoru : nebo funkce c(). Příkaz dvojitých hranatých závorek vrací objekt takového typu, jakým byl při definování seznamu.
5.3 Funkce pro manipulace s datovými tabulkami a seznamy Přidání dalších sloupců do datové tabulky datova_tabulka$nazev_noveho_sloupce<-hodnoty přiřazení pomocí funkce data.frame() > (knihy <- data.frame(nazev=c("Dekameron", "Maj", "Temno", "Bidnici", + "Babicka"), autor=c("Boccaccio", "Macha", "Jirasek", "Hugo", + "Nemcova"))) nazev autor 1 Dekameron Boccaccio 2 Maj Macha 3 Temno Jirasek 4 Bidnici Hugo 5 Babicka Nemcova > knihy$pocet <- c(3, 6, 4, 3, 5) > knihy nazev autor pocet 1 Dekameron Boccaccio 3 2 Maj Macha 6 3 Temno Jirasek 4 4 Bidnici Hugo 3 5 Babicka Nemcova 5 Přidání dalších složek do seznamu
seznam$nova_slozka<-objekt Odstraňování řádků a sloupců se provádí použitím operátoru $ a nastavením na hodnotu NULL > knihy$pocet <- NULL Slučování datových tabulek cbind() sloučení tabulek po sloupcích rbind() sloučení tabulek po řádcích Řazení order()
vrací vektor indexů vzestupně nebo sestupě.
6 Konstanty, operátory a matematické výpočty 6.1 Aritmetické operátory sčítání odečítání násobení dělení umocňování maticové násobení zbytek po celočíselném dělení celá část z celočíselného dělení transpozice matice
+ * / ^ %*% %% %/% t()
6.2 Porovnávání a logické operátory Výstupem dostáváme vektor hodnot TRUE a FALSE. rovno není rovno menší menší nebo rovno větší větší nebo rovno logické a logické nebo negace
== != < <= > >= & | !
6.3 Množinové operátory testuje, zda jsou všechny složky pravdivé all(relace) > all(z > -10) testuje, zda alespoň jedna složka relace je pravdivá any(relace) vrácení pozicí vektoru, které jsou pravdivé which(relace) x je podmnožinou y x%in%y průnik množin intersect(množiny) sjednocení množin union(množiny)
rozdíl množin, vrací prvky vektoru x neobsažené v y
setdiff(x,y)
6.4 Matematické funkce absolutní hodnota druhá odmocnina signum(x) logaritmus logaritmus s jiným základem exponenciální funkce
abs(x) sqrt(x) sign(x) log(x), log10(x), log2(x) log(x, základ) exp(x)
trigonometrické funkce hyperbolické funkce inverzní trigonometrické funkce inverzní hyperbolické funkce
sin(x), cos(x), tan(x) sinh(x), cosh(x), tanh(x) asin(x), acos(x), atan(x) asinh(x), acosh(x), atanh(x)
gamma funkce faktoriál kombinační číslo
gamma(x) factorial(x) choose(n,k)
maximum prvku ve vektoru minimum prvku ve vektoru součet prvků vektoru součin prvků vektoru
max(x) min(x) sum(x) prod(x)
částečný vektor maxim cummax(x) částečný vektor minim cummin(x) částečný vektor součtu cumsum(x) částečný vektor součinu cumprod(x) > a <- c(1, 2, 3, 5, 8, 2, 4, 1, 2, 2) > cumsum(a) [1] 1 3 6 11 19 21 25 26 28 30 > cummin(a) vždy nerostoucí posloupnost prvkù [1] 1 1 1 1 1 1 1 1 1 1 > cummax(a) vždy neklesající posloupnost prvkù [1] 1 2 3 5 8 8 8 8 8 8 minimum, maximum prvku range(x) průměrná hodnota mean(x) mediánová hodnota median(x) směrodatná odchylka sd(x) rozptyl var(x) k% kvantily quantile(x, probs=c(k1,k2)) > quantile(x,probs=c(0.01,0.05)) kovariance vektorů cov(x,y) korelace vektorů cor(x,y) rozptyl a další jsou u matice počítány ze sloupců minimum,dolní kvartil, mediáln, horní kvartil, maximum quantile(x) maximální prvky na odpovídajících pozicích minimální prvky na odpovídajících pozicích
pmax(a,b,...) pmin(a,b,...)
střední hodnota, součty, rozptyly ve sloupcích matice colMeans(x), colSums(x), colVars(x) střední hodnota, součty, rozptyly v řádcích matice rowMeans(x), rowSums(x), rowVars(x) setřídění vektoru vzestupně setřídění vektoru sestupně indexy setříděných hodnot
sort(x, decreasing=F) sort(x, decreasing=T) order(x)
převrácení pořadí hodnot vektoru
rev(x)
6.5 Zaokrouhlování zaokrouhlení k nejbližšímu většímu číslu zaokrouhlení k nejbližšímu menšímu číslu zaokrouhlení směrem k 0, celá část čísla zaokrouhlení k nejbližšímu celému číslu zaokrouhlí na n desetinných míst zaokrouhlení na n platných cifer
ceiling(x) floor(x) trunc(x) round(x, digits=n) signif(x,digits=n)
6.6 Konstanty Ludolfovo číslo e komplexní jednotka poslední hodnota
pi exp(1) i Last.value
7 Další příkazy v R 7.1 Práce s knihovnami Výpis seznamu nainstalovaných knihoven Nainstalování další knihovny
search() install.packages(„nazev_knihovny“) library(nazev_knihovny)
7.2 Práce s daty 7.2.1 Funkce scan – načtení vektoru nebo seznamu Funkce pro načítání vektoru nebo seznamu z konzole nebo souboru scan(file,what,sep,dec,nmax) file textový řetězec uvádějící cestu k souboru what typ načítané hodnoty (numerické, komplexní, ...) sep znak, kterým jsou odděleny jednotlivé položky dec znak pro desetinnou čárku nmax maximální počet hodnot, který má být načten Příklad data 2; 4; 6; 1; 3; 5 > x <- scan(file="clipboard", sep=";") Read 6 items >x [1] 2 4 6 1 3 5
> x <- scan(file="clipboard", sep=";", what=character()) Read 6 items >x [1] "2" "4" "6" "1" "3" "5"
7.2.2 Načtení tabulky Načtení dat do tabulky dat read.table(file, header, sep, dec, row.names, col.names) file, sep, dec viz funkce scan header logická hodnota, zda je v datech obsažena hlavička row.names textový řetězec názvů řádků nebo číslo odkazující na sloupec názvů col.names vektor názvů sloupců Příklad 1,2,3,4,5 3,2,1,1,2 > read.table(file="clipboard", row.names=6, col.names=c("sl1", "sl2", + "sl3", "sl4", "sl5", "sl6")) sl1 sl2 sl3 sl4 sl5 r1 1 2 3 4 5 r2 3 2 1 1 2
7.2.3 Ukládání dat Ukládání objedků do souboru
save(object, file=““)
7.3 Vlastnosti objektů výpis minima, 1. kvartil, medián, průměr, 3. kvartil a maximum
summary() str() nastavení nebo vypsání komentáře k objektu comment() > comment(tab) <- "Pocty aut jednotlivych barev behem 4 casovych obdobi." > comment(tab) [1] "Pocty aut jednotlivych barev behem 4 casovych obdobi." vypsání atributů objektu attributes() změna datového typu as.something() > u <- 1:10 [1] 1 2 3 4 5 6 7 8 9 10 > v <- as.character(u) [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" > w <- as.integer(v) [1] 1 2 3 4 5 6 7 8 9 10
8 Grafika v R kapitola 8.1 kapitole 8.2 kapitola 8.3
vytváří nový graf s osami, popisky a názvem přídavné funkce do existujícího grafu, další body, čáry a popisky interaktivní grafika pomocí myši přidává data do existujícího grafu.
8.1 High level funkce Všechny grafy jsou vytvořeny pomocí high-level funkcí, které vytváří kompletní graf. To znamená, že jsou automaticky vygenerovány osy, popisky a nadpis. High level funkce vykreslí vždy nový graf, v případě že některý již existuje, přepíší jej.
Argumenty k high-level funkcím: axes implicitně TRUE, v případě FALSE potlačí vykreslování os log nastavením na hodnoty log=“x“, log=“y“, log=“xy“ budou mít osy logaritmické měřítko main textový řetězec pro název grafu sub textový řetězec, je umístěn pod grafem a psán menším fontem type typ výstupního grafu type=“p“ vykreslí samostatné body type=“l“ linie type=“b“ přerušované linie s body type=“c“ přerušované linie bez bodů type=“o“ body navzájem spojené liniemi type=“h“ vertikální linie type=“s“ schodovitý graf s první linií horizontální type=“S“ schodovitý graf s první linií vertikální type=“n“ žádné vykreslování dat, vykresleny jsou pouze osy, rozsah souřadného systému závisí na datech xlab, ylab textové řetězce pro názvy os x a y, tyto argumenty mění implicitně zadané názvy os xlim, ylim 2 prvkový vektor specifikující minimální a maximální hodnotu k vykreslení dané osy
8.1.1 Graf plot plot(x) Pro vektor vrací jednoduchý graf s indexy na ose x a hodnotami na ose y Pro matice vrací graf s hodnotammi prvního sloupce na ose x a odpovídajícími hodnotami druhého sloupce na ose y. Ostatní sloupce jsou ignorovány. Pro faktory vykreslí sloupcový graf četností jednotlivých kategorií Pro datové tabulky vykreslí bodový graf závislostí proměnných Pro funkce vykresluje hladkou čáru. plot(x,y) Jestliže jsou vektory stejné délky vykreslí bodový graf s hodnotami y na pozicích x Parametry main, sub, type, axes, xlim, ylim, xlab, ylab viz výše ann, col, bg, pch, cex, lty, lwd viz kapitola 8.3 Příklad > plot(function(x) 2*x^3, xlim=c(-3, 3), ylab="f(x)", main="Graf funkce + f(x)=2*x^3") > benzen <- c(3.34, 4.76, 4.87, 5.11, 3.89, 4.83, 5.02) > plot(benzen, pch=8, xlab="cislo pozorovani", ylab="obsah benzenu + [mg/m^3]", main="Obsah benzenu v ovzdusi") > plot(benzen, type="p", main="type='p'", ylab="benzen [mg/m^3]") > plot(benzen, type="l", main="type='l'", ylab="benzen [mg/m^3]") > plot(benzen, type="b", main="type='b'", ylab="benzen [mg/m^3]") > plot(benzen, type="c", main="type='c'", ylab="benzen [mg/m^3]") > plot(benzen, type="o", main="type='o'", ylab="benzen [mg/m^3]")
> plot(benzen, type="h", main="type='h'", ylab="benzen [mg/m^3]") > plot(benzen, type="s", main="type='s'", ylab="benzen [mg/m^3]") > plot(benzen, type="S", main="type='S'", ylab="benzen [mg/m^3]")
8.1.2 Graf barplot() – sloupcový graf Parametry axes, main, sub, xlab, ylab, xlim, ylim viz výše beside lze použít pouze pro matice FALSE – implicitně nastaveno – vykreslí více obdélníků nad sebou TRUE – vykreslí více obdélníků vedle sebe width šířka sloupce space velikost místa mezi sloupci horiz FALSE vykresluje hodnoty vertikální, TRUE vykresluje hodnoty horizontálně
8.1.3 Graf hist() – histogram Parametry breaks freq right labels
šířka argumentů, implicitně nastaveno Sturgesovým pravidlem log2n+1. TRUE (implicitně) vykreslí absolutní četnost, FALSE relativní četnost TRUE (implicitně) intervaly jsou zprava uzavřené TRUE (implicitně)
8.1.4 Graf pie() – koláčový graf Využití pro vektor nezáporných celých čísel Parametry labels vektor textových hodnot vyjadřující název jednotlivých dílů grafu edges numerická hodnota vyjadřující počet vrcholů polygonu clockwise TRUE vykreslední po směru hodinových ručiček init.angle počáteční úhel pro natočení grafu
8.1.5 Graf boxplot() – krabicový graf range notch names horizontal
vymezuje rozpětí fousů do vzdálenosti range*interkvartilové rozpětí. Implicitně 1,5. implicitně FALSE, TRUE zobrazení odlehlých měření vektor textových řetězců k jednotlivým krabicovým grafům vykresluje graf horizontálně
Výstupní hodnoty: stats matice s informacemi o hodnotách dolního fousu, dolní část krabice, medián, horní část krabice, horní fous. n vektor počtu pozorování z každé skupiny conf matice, jejíž sloupci obsahují horní a dolní extrémní hodnoty out odlehlé hodnoty
8.1.6 Graf stripchart() Pro numerické vektory, seznamy a tabulky dat vykresluje diagram rozptýlení. Použití pro jednoduché zobrazení dat.
8.1.7 Graf matplot() Vykreslení více datových řad do jednoho z grafu.
8.1.8 Graf qqnorm() a qqline() Grafy pro ověření normality dat. Graf qqnorm() vykreslí normální kvantil kvantilový graf (QQ plot), qqline() navíc přidá do již existujícího grafu přímku odpovídající normálnímu rozložení.
8.1.9 Graf curve() Vykreslí křivku.
8.1.10
Graf image()
Vytvoří mřížku s obdélníky různého stupně šedi, slouží k zobrazení 3 dimenzionálních nebo prostorových dat.
8.1.11
Graf persp() – 3D graf
Parametry xlim, ylim, zlim main, sub, col theta phi shade
pro vykreslování hodnot na osách x, y a z viz výše úhel pro otočení grafu v horizontálním smyslu úhel pro otočení grafu ve vertikálním smyslu stínování
8.2 Low level funkce points(x,y,type,pch,col, bg, cex, lwd, ...) lines(x,y,type, lty, lwd, ...) segments(x0, y0, x1, y1, col, lty, lwd, ...)
dle nastavení vykreslí body daných tvarů a barev vykreslí lomenou čáru mezi dvěma body o určitých souřadnicích vykreslí úsečky mezi dvěma body
abline(a,b, ...)
vykreslí přímku se směrnicí b a průsečíkem s osou y v bodě a
legend(x,y,legend, ...) title(main, sub, xlab, ylab, ...) grid (nx, ny) axis (side, at, labels, tick, lty, lwd, col, ...)
vytiskne legendu na souřadnice x, y. vypíše název, podtitulek a popisky os vykreslí mřížku nx a ny označují počet čar. vykreslí osu, umožňuje nastavit značky a popisky libovolných os vypíše textový řetězec labels do grafu na pozici o souřadnicích x, y. vypíše textový řetězec na okraj grafu
text(x,y,labels, ...) mtext(text, side, ...)
8.3 Funkce par() Funkce slouží k nastavení a změnám parametrů aktuálního grafu. Text adj ann cex
zarovnání textu pro název grafu 0 –zarovnat vlevo, 1 – vpravo, 0.5 – střed TRUE – výpis názvu a popisek os, FALSE – výpis potlačen relativní velikost znaků
bg col
barva pozadí grafu barva bodů, obrysů nebo spojnice 0-bílá, 1- černá, 2- červená, 3- zelená, 4modrá, 5 – modrozelená, 6 – fialová, 7 – žlutá, 8 – šedá.
Barva
Graf pty textový řetězec specifikující tvar grafické oblasti mfcol 2 prvkový vektor tvaru c(počet řádků, počet sloupců) rozdělující graf na odpovídající počet podgrafů. Grafy jsou řazeny po sloupcích mfrow stejně jako mfcol, grafy jsou řazeny po řádcích Osy las
0 – x vodorovně, y svisle 2 – x svisle, y vodorovně
1 – x i y vodorovně 3 – x i y svisle
Body a čáry lty numerická hodnota udávající typ čáry lwd numerická hodnota pro šířku čáry pch numerická hodnota pro znak vykreslovaných bodů
8.4 Další užitečné funkce otevření dalšího grafického okna uložení grafu uložení grafu jako objekt složený graf obsahující několik grafů různé velikosti dělení grafického prostředí
dew.new() File – Save as recordPlot() layout() split.screen()
9 Programování v R Programy v jazyce R lze rozdělit do dvou skupin – dávkové soubory a funkce. Hlavním rozdílem je ten, že objekty definované uvnitř funkce nejsou k dispozici v pracovním prostoru.
U dávkových souborů nezáleží na tom, z jakého adresáře jsou volány, objekty definované uvnitř dávky jsou v pracovním prostoru stále k dispozici. Funkce nazev<-function(argumenty) {telo funkce} , kde název označuje název funkce argumenty je čárkami oddělená posloupnost vstupních argumentů tělo posloupnost příkazů uzavřené v { } závorkách. Funkce lze vytvářet v příkazové řádce, při složitějších zdrojových kódech je vhodnější používat editory. Jazyk R má k dispozici zabudovaný vlastní editor, který lze nalézt v menu File – New Script. V případě, že funkce je vytvořena v příkazové řádce, spouští se zavoláním svého názvu s argumenty v kulatých závorkách. V případě, že je vytvořena v textovém editoru je nutné funkce načíst pomocí příkazu source(). Argumentem je textový řetězec obsahující celý název souboru i s koncovkou .r a cestou k němu. Zobrazení výstupní hodnoty return() V případě více výstupních hodnot musí být použito seznamu list() > kvadr <- function(a, b, c){ + obsah <- 2*(a*b + b*c + c*a) + objem <- a*b*c + return(list(obsah=obsah, objem=objem))} > vystup <- kvadr(1, 2, 3) > vystup $obsah [1] 22 $objem [1] 6 Dávkové soubory Jedná se o posloupnost příkazů, která může využívat již definovaných objektů z pracovního prostoru. Zpravidla se vytváří v libovolném textovém editoru, název souboru musí mít přípodu .R. Dávkové soubory se spouští funkcí source s názvem dávkového souboru uvedeným jako textový řetězec. > a <- 1; b <- 2; c <- 3 > source("kvadr.R") > obsah [1] 2 > objem [1] 6
9.1 Lokální a globální proměnné V jazyce R není nezbytně nutné deklarovat proměnné uvnitř funkce. Při vyhodnocování funkce R používá pravidlo, které rozhodne, zda je objekt lokální nebo globální proměnnou.
9.2 Podmíněné příkazy if
if(podminka){ prikaz} Provede příkaz v případě, že podmínka je vyhodnocena jako TRUE. > x <- 5 > if (x > 3) {"Podminka splnena."} [1] "Podminka splnena." if else if(podminka){prikaz1} else {prikaz2} V případě vyhodnocení podmínky jako TRUE je proveden příkaz 1, v opačném případě příkaz 2. > if (x > 3) f"Podminka splnena."g + else f"Podminka nesplnena."g [1] "Podminka splnena." ifelse ifelse(podminka, prikaz1, prikaz2) V případě vyhodnocení TRUE je proveden příkaz 1, FALSE příkaz 2. switch switch(vyraz, prikazy, prikazy_jine) Slouží k větvení programu. Jestliže vyraz je celé číslo, na výstupu je vrácena hodnota odpovídajícího prvku příkazy. Pokud nedojde ke spojení hodnoty vyraz s prvkem prikazy, funkce vrací hodnotu NULL. > switch(2, "vyborne", "velmi dobre", "dobre", "uspokojive", + "dostatecne", "nedostatecne") [1] "velmi dobre" > switch(7, "vyborne", "velmi dobre", "dobre", "uspokojive", + "dostatecne", "nedostatecne") [1] NULL > switch("vyborne", vyborne="znamka A", velmi dobre="znamka + B", dobre="znamka C", uspokojive="znamka D", dostatecne="znamka E", + neuspokojive="znamka F", "znamka neexistuje") [1] "znamka A"
9.3 Příkazy cyklů for for(promenna in vyraz) {prikaz} Provede sérii příkazů prikaz, proměnná označuje indexační proměnnou, vyraz může být vektor nebo seznam pro jehož každou složku je příkaz vyhodnocen. > for (i in 1:5) {cat("pruchod cyklem", i, "nn")} pruchod cyklem 1 pruchod cyklem 2 pruchod cyklem 3 pruchod cyklem 4 pruchod cyklem 5
while while (podminka) {prikaz} Příkaz se opakuje, doku je splněna podmínka v závorce. repeat repeat(prikaz) Cyklus repeat opakuje vyhodnocování příkazu do té doby, dokud nedosáhne konce. Po ukončení se používá příkaz break, který je součástí posloupnosti příkazů prikaz.
9.4 Skupiny funkcí apply() Funkce apply(), lapply(), sapply(), tapply(). Společnou vlastností všech těchto funkcí je schopnost aplikovat funkci na vybrané části struktury bez použití cyklu, což můžže mít výhody v přehlednosti a rychlosti výpočtu.
10 Základy statistického zpracování dat 10.1 Pravděpodobnostní rozložení Práce s rozloženími pravděpodobností se realizuje pomocí čtveřice funkcí, které vyhodnocují: distribuční funkci P(X<x) pxxxx(x, parametry rozdělení) hustotu pravděpodobnosti dxxxx(x, parametry rozdělení) kvantilovou funkci P(X x) > q qxxxx(pravděpodobnost, parametry rozdělení) generátor náhodných čísel rxxxx(počet náh. čísel, parametry rozdělení) Distribution beta rozdělení binomické rozdělení Cauchy rozdělení chi-kvadrát rozdělení exponenciální rozdělení F gamma rozdělení geometrické rozdělení hypergeometrické rozdělení log-normal logistické rozdělení negative binomické normalní rozdělení Poisson Studentovo rozdělení jednotkové Weibullovo rozdělení
R name beta binom cauchy chisq exp f gamma geom hyper lnorm logis nbinom norm pois t unif weibull
přidané argumenty tvar1, tvar2 velikost, pravděpodobnost poloha, tvar stupně volnosti intenzita stupně volnosti 1, stupně volnosti 2 tvar, posun pravděpodobnost m, n, k střední hodnota, směrodatná odchylka poloha, tvar velikost, pravděpodobnost střední hodnota, směrodatná odchylka lambda stupně volnosti min, max tvar, poloha
10.2 Testy statistických hypotéz Test rozdělení shapiro.test(x)
provede Shapirův-Wilkův test normality dat. Výstupem je hodnota statistiky a p-value. > load(file="obsah.leciva.dat")
ks.test(x,y)
ks.test(x,y)
> shapiro.test(obsah.leciva) provede Kolmogorovův-Smirnovův test shody rozložení. x je vstupní vektor, y je řetězec označující typ rozdělení (např. y=“pnorm“). Výstupem je hodnota testové statistiky a p-value. x, y jsou numerické vektory, zjistí shodu rozdělení. Výstupem je hodnota testové statistiky a p-value.
Test shodnosti rozptylů 2 výběrů var.test(x,y, ratio=1, alternative, conf.level) x,y vstupní vektory ratio stanovuje poměr rozptylů daných výběrů alternative two.side oboustranná, less pravostranná, greater levostraná conf.level spolehlivost testu. Výstupem: hodnota kritéria F, počet stupňů volnosti čitatele a jmenovatel, konfidenční interval spolehlivosti a vypočtený poměr rozptylů. Testování hypotézy pro dva výběry na shodu středních hodnot t.test(x,y,alternative,mu,var.equal, conf.level) x,y vstupní vektory mu rozdíl středních hodnot var.equal TRUE stejné rozptyly, FALSE odlišné roztpyly alternative two.side oboustranná, less pravostranná, greater levostraná conf.level spolehlivost testu. Výsledkem je hodnota testového kritéria t, počet stupňů volnosti, p-value, interval spolehlivosti a odhad střední hodnoty/hodnot. Testování hypotézy pro jeden výběr na shodu středních hodnot t.test(x,alternative,mu,var.equal, conf.level) Jednofaktorová ANOVA Posouzení vlivu jednoho faktoru na sledovanou proměnnou. Hypotéza H0: střední hodnoty jednotlivých výběrů jsou shodné, H1: alespoň jedna dvojice středních hodnot se liší. anova(objekt) argument objekt je objekt obsahující výsledky regresního modelu. Výstupem je ANOVA tabulka obsahující počet stupňů volnosti, součet čtverců, průměrné čtverce, hodnotu testové veličiny F a p hodnotu. V případě zamítnutí je třeba provést vícenásobná porovnání pro zjištění , které úrovně faktoru nabývají významných rozdílů.
10.3 Grafická zobrazení Některé další grafické výstupy: matice xy grafů v jednom okně. Graf lze využít při základní analýze závislosti proměnných dotchart() vykreslí bodový graf dat, osa y zobrazuje indexy dat, osa x zobrazuje jejich hodnoty. Na vstupu je vektor nebo matice. spineplot() sloupcový graf pro 2 rozměrná data mosaicplot() mozaikový graf pro zobrazení vztahů v kontingenčních tabulkách pairs()