Uvod do předmětu Aplikovaná statistika I • Základní informace o předmětu — Kód předmětu: MAS 10c — Název předmětu: Aplikovaná statistika I — Vyučující předmětu: Mgr. Veronika Bendová — Kontakt na vyučující: 375612@mail.muni.cz; bendova.veroonika@gmail.com — Konzultační hodiny: Dohodou • Podmínky k získání zápočtu — Aktivní účast na cvičení s maximálním počtem tří absencí (omluvené i neomluvené) — Vypracování krátkého domácího úkolu zadaného na prvním cvičení — Vypracování sady příkladů zadaných za domácí úkol — Poznámka: Zápočtová písemka se nepíše. • Domácí úkol — Obsah: Šest až osm příkladů (podle náročnosti) — Období zadání úkolu: Druhá polovina semestru — Doba na vypracování domácího úkolu: 14 dní — Forma řešení úkolu: RSkript obsahující kompletní řešení příkladů, komentáře popisující postupy řešení a interpretace získaných výsledků — Hodnocení úkolu: U každého příkladu se hodnotí správnost řešení, design grafů, interpretace výsledků, komentáře použitých postupů a přehlednost kódu. — Kontrola úkolu: Vyučující má 14 dní na zkontrolování a opravení domácího úkolu. — Splnění úkolu: Získání alespoň 75 % bodů z maximálního možného počtu bodů. V případě, že student potřebný počet bodů nezíská, bude mu úkol jedenkrát navrácen k přepracování. — Zvláštní pravidlo: Student může domácí úkol vypracovávat společně se svými spolužáky a konzultovat s nimi řešení úkolu. — Zvláštní omezení: Student nesmí od spolužáků kopírovat řešení, kopírovat interpretace výsledků a kopírovat Q! kód. V případě porušení dochází k penalizaci domácího úkolu, jejíž míra je stanovena podle závažnosti porušení: od stržení extra bodů z celkového hodnocení úkolu až po neuznání řešení úkolu a neudělení zápočtu. • Další doporučení pro studenty: — Účast na přednáškách — Domácí příprava na cvičení z hodiny na hodinu - průběžně si opakujte; principy se budou stále opakovat, průběžné chápání látky usnadní přípravu na zkoušku — Interagujte s vyučující, ptejte se, e-mailujte, konzultujte, pomáhejte si a hlavně tomu rozumějte :). 1 • Doporučená a zajímavá literatura: — Aplikovaná statistika I: Sbírka řešených příkladů ~- I Soubor řešených příkladů pokrývající svým obsahem látku probíranou v kursu Apliko-vaná statistika I. Sbírka slouží k samostatnému domácímu procvičování probírané látky. Obsahuje zadání příkladů, výpočetní řešení, řešení pomocí softwaru je potřebné naučit se jeho syntaxi * Balíčky funkcí vytváří uživatelé —> je potřebné studovat nápovědu k používaným funkcím pro získání jistoty, že funkce fungují dle našich předpokladů * Nápověda dostupná pouze v angličtině, většina diskusí též v angličtině Citace a odkazy — Citace softwaru <5I: R CORE TEAM. R: A Language and Environment for Statistical Computing. The R Project for Statistical Computing, 2017 [cited 2018 Sep 21]. URL: https://www.R-project.org/ — Html stránka pro software 'Cit: https://www.r-project.org/ — Html stránka pro RStudio: https://www.rstudio.com/ • RStudio: Uživatelsky přístupné prostředí pro práci se softwarem ^1 — Po otevření RStudia * Zahájíme nový projekt: File —> New flle —> R Skript * Uložíme projekt: File —> Save —> 'Název projektu' —> Save * Nastavíme absolutní cestu do složky s projektem: Session —> Set Working Directory —> To Source File Location — Nyní máme RStudio rozdělené na čtyři okna 1. Pracovní/programovací okno * Prostor pro vytváření našeho kódu * Kód = posloupnost příkazů a funkcí —> vlastnosti funkce specifikujeme volbou jejich argumentů * Provedení příkazu nebo funkce: Ctrl + Enter 2. Workspace * Environment - Seznam proměnných uložených v paměti * History - Seznam naposledy provedených příkazů * Vymazání uložených proměnných: Session —> Clear Workspace —> Yes 3. Konzole (výstupové okno) * Zobrazuje provedené příkazy a jejich výstupy * Vyčištění konzole: Ctrl+L 4. Multifunkční okno (obsahuje více záložek) * Plots - Grafické okno • Prostor pro zobrazení vykreslených grafů * Packages - Seznam nainstalovaných balíčků + instalace nových balíčků • Instalace balíčku nortest: Packages —> Install —> nortest —> Install * Help - Nápověda • Každá funkce má svou nápovědu obsahující: i. Description- stručný popis funkce ii. Usage - tvar příkazu se všemi povinně volitelnými argumenty iii. Arguments - Předhled všech argumentů (povine volitelných i volitelných) iv. Values - popis výstupů funkce v. Details - Bližší detaily, například o vzorcích a metodách, na nichž je funkce založena vi. See Also - tipy na příbuzné funkce, které by nás dále mohly zajímat vii. Examples - Ilustrační příklady správného použití funkce — Nastavení vzhledu RStudia: Tools —> Options —> Appearance ops:-*: 9~ -1 í*!^- a til - * s-^/wr H-aají™- m*"***0*«m>- Cm «l>| Environ, Hi^ry Cnn^on, = = 1 aJ 1 B □ Source on Save 1 0, /* - |J &\Osmhb -1 • Pracovní/programovací okno 1 GluLul Erivííoriniťril -Workspace > 1 Konzole (výstupové okno) Multifunkční okno (Grafické okno, seznam balíčků, nápověda) 4 • Přehled základních matematických objektů - Proměnná = označení objektu (číslo, vektor, matice, tabulka, funkce) * Číslo: a <— 3 * Vektor: a <- (3, 6, 9) f2 3 7\ * Matice: A <- I g 4 1 »2 «3 * Tabulka: Tab <- ri 2 3 7 8 4 5 * Funkce: funkce(" ■ Objekt, do kterého vložíme vstup (IN) a získáme výstup (OUT) • sum(vektor) —> číslo • matrix(vektor, 2, 2) —> matice • mean(matice) —> číslo • Úvod do syntaxe programovacího jazyka 0? - Jazyk ď je tzv. case sensitive —» názvy sum, Sum, SUM, sUm, sUM, ... znační různé objekty - Vytvoření proměnné * Číslo: a <- 3 * Vektor: aa <- c(1.2, 5.3, 6.4) * Matice;: A <- matrix(c(l, 2, 3, 4, 5, 6), nrow = 2, neol = 3, byrow = T) * Datová tabulka: Tab <- data.frame(A, row.names = c('rľ, 'r2')) names(Tab) <- c('sľ, 1 s2 1 , 1 s3 1) - Základní operace * +, -, *, / 3 + 2- 6*9 / (8 + 9-5) * Operace s čísly a <- 25 b <- 5 a / b * Operace s vektory x <- c(l, 2, 3) y <- c(3, 2, 1) x - y x + y z <- c(0, 1, 2, 3) x + y + z # '.Pozor, vektor z je delsi nez vektory x a y. # R sice nápise varovnou hlásku, ale vypočet i tak provede! * Operace s maticemi 5 B <- matrix(c(l, 1, 1, 1, 1, 1), nrow = 2, ncol = 3) A - B C <- matrix(c(l, 1, 1, 1, 1, 1), nrow = 3, ncol = 2) A - C # '.Matice A ma rozměr 2x3, matice C ma rozměr 3x2. # Nyni jiz R vypočet neprovede, pouze zahlasi chybu. — Pokročilé operace * Délka vektoru a dimenze matice length(z) dim(A) * Minimální a maximální hodnota vektoru a matice min(z) max(z) min(A) max(A) * Součet hodnot a aritmetický průměr vektoru a matice sum(z) sum(A) mean(z) mean(A) * Mocniny a odmocniny (odmocnina <- sqrt(2)) odmocnina " 2 * Zakrouhlování round(odmocnina, digits = 3) # klasické zaokrouhleni na tri desetinná mista floor(odmocnina) # zaokrouhleni na nejblizsi nizsi cele cislo ceiling(odmocnina) # zaokrouhleni na nejblizsi vyssi cele cislo - Vytváření posloupností * Posloupnosti čísel se vzdáleností 1 (x <- 1:10) (y <- 50:55) * Posloupnosti čísel s libovolnou ale ekvidistantní vzdáleností # Posloupnost cisel s předem zadanou délkou (R dopocita vzdálenost mezi sousedicimi cisly) (pst <- seq(from =0, to = 1, length = 12)) # Posloupnost cisel s předem zadanou vzdálenosti mezi sousedicimi cisly (R dopocita délku) (pst2 <- seq(from = 0, to = 1, by = 0.09)) * Posloupnosti opakujících se čísel vana <- c(58, 61, 57, 59, 60, 54, 64, 71, 66, 70) divky <- rep(l, 6) chlapci <- rep(2, 4) (pohlavi <- c(divky, chlapci)) * Přidání nového řádku (resp. sloupce) ke stávajícímu vektoru (i (data <- matrix(c(vaha, pohlavi), nrow = 2, ncol = 10, byrow = T)) (data.r <- rbind(vaha, pohlavi)) # pridaní radku k vektoru (vznikne matice dimenze 2x10) (data.c <- cbind(vaha, pohlavi)) # přidáni sloupce k vektoru (vznikce matice dimenze 10x2) diabetes <- rep(0, 10) (data.r2 <- rbind(data.r, diabetes)) # přidáni radku k matici 2x10 (vznikce matice 3x10) (data.r3 <- cbind(data.r2, c(62, 2, 1))) # přidáni sloupce k matici 3x10 (vznikce matice 3x11) * Přidání nového řádku (resp. sloupce) ke stávající matici data <- matrix(c(vaha, pohlavi), nrow = 2, ncol = 10, byrow = T) data.r <- rbind(vaha, pohlavi) # přidáni radku k vektoru (vznikne matice dimenze 2x10) data.c <- cbind(vaha, pohlavi) # přidáni sloupce k vektoru (vznikce matice dimenze 10x2) diabetes <- rep(0, 10) data.r2 <- rbind(data.r, diabetes) # přidáni radku k matici 2x10 (vznikce matice 3x10) data.r3 <- cbind(data.r2, c(62, 2, 1)) # přidáni sloupce k matici 3x10 (vznikce matice 3x11) — Podmnožiny vektorů a matic * Výběr konkrétních hodnot z vektoru vyska <- c(133, 132, 145, 126, 127) vyska[c(2, 3, 4)] vyska [2:4] * Výběr konkrétních řádků z matice data.r3[l, ] # vyber prvního radku data.r3[2, ] # vyber druhého radku * Výběr konkrétních sloupců z matice data.r3[ ,4] # vyber čtvrtého sloupce data.r3[ ,8] # vyber osmého sloupce data.r3[ , c(3, 5, 8)] # vyber tretiho, pátého a osmého sloupce najednou data.r3[l:2, 5:7] # vyber cisel z prvniho a druhého radku a pátého, šestého a sedmého sloupce — Práce s datovým souborem * Zjištění absolutní cesty k aktuální složce a výpis všech souborů z této složky getwdO # absolútni cesta k aktuálni složce dir() # vypiš souboru * Načtení datového souboru a vypsání prvních tří řádků z datového souboru (tabulky) # Načteni datového souboru: read.delimO # sep: separator sloupců, napr. tabulátor '\t '; středník ';' nebo carka ',' # dec: oddělovač desetinných mist použity v souboru, napr. carka ', ' nebo tečka '. ' data <- read.delim(1 Záznam teploty.txt1, sep = 1\t1 , dec = '.') head(data, n = 3) # vypsáni prvních tri radku Hodina Teplota 1 0 38.0 2 2 37.7 3 4 37.3 * Výběr konkrétních řádků z tabulky data[4:6, ] * Výběr konkrétních sloupců z tabulky (více možností) 7 # Vyber prvniho sloupce s nazvem 'Hodina' data[ ,1] data[ ,1 Hodina1] data$Hodina # Vyber druhého sloupce s nazvem 'Teplota' data[ ,2] data[ , 'Teplota'] data$Teplota hodiny <- data$Hodina teploty <- data$Teplota — Logické operátory * Rovnost ==, větší >, menší <, větší nebo rovno >=, menší nebo rovno <= (teploty == 37.7)*1 sum((teploty==37.7)*l) # kolikrát byla teplota rovna 37.7 (teploty <= 37.7)*1 (teploty >= 37.7)*1 (teploty < 37.7)*1 (teploty > 37.7)*1 * Výběr řádků s konkrétní vlastností data[data$Teplota == 37.7, ] data[data$Teplota == 37.7, 'Hodina'] — Tvorba základních grafů příkazem plot (x, y) 1. Povinně volitelné argumenty funkce plot (x, y) * x - proměnná, která se vykreslí na ose x * y - proměnná, které se vykreslí na ose y 2. Volitelné argumenty funkce plot (x, y) * main - nadpis grafu (v publikacích nepoužíváme, nahrazujeme popiskem pod grafem) * xlab - popisek osy x v grafu * ylab - popisek osy y v grafu * col - základní barva objektů (body, čáry) v grafu * type - typ grafu • type = 'p': bodový graf • type = 'ľ: spojnicový graf • type = 'b': kombinace bodového a spojnicového grafu • type = 'n': prázdný graf * pch - typ bodů • pch = 1: kruh bez výplně • pch = 19: výplň kruhu • pch = 21: kruh s výplní (možnost volby různých barev obvodu kruhu a obsahu kruhu) • Další typy bodů viz nápověda funkce points() —> Details —> 'pch values' * bg - barva vnitřku bodu v případě, že pch = 21 * cex - velikost bodů (defaultně cex = 1) * lwd - šířka čáry (defaultně lwd = 1) * lty - typ čáry • lty = 1: klasický styl 8 • lty = 2: čárkovaný styl • lty = 3: tečkovaný styl • lty = 4: čerchovaný styl * xlim = c(a, b) - rozsah osy x od a do b * ylim = c(a, b) - rozsah osy y od a do b * las = 1 - popisky měřítka osy y vodorovně s osou x plot(hodiny, teploty, main = 'Teplota 17.9. 2018', xlab = 'cas (v hodinách)', ylab = 'teplota (Celsius)1 col = 'orchid3', type = 'b', pch = 21, lwd = 2, lty = 2, bg = 'bisque1, xlim = c(-l, 23), ylim = c(36, 39), las = 1) Teplota 17.9. 2018 39.0 -38.5 -1» 38.0 to OJ ä 37.5 H co o ju 37.0 -36.5 36.0 o 10 i 15 I 20 cas (v hodinách) - Doplnění legendy do grafu příkazem legend() * Umístění legendy ■ 'toprighť: vpravo nahoře • 'toplefť: vlevo nahoře ■ 'bottomright: vpravo dole • 'bottomleft: vlevo dole • 'top': nahoře uprostřed • 'righť: vpravo uprostřed * flll - barva výplně legendy * legend - popisek legendy * bty = 'n' - odstranění rámečku okolo legendy * pch, lwd, lty - analogické argumentům funkce plot(x, y) * col - barva bodu, resp. čáry legend('bottomright', fill = c('orchid3'), legend = c('Jonatan Kadrnozka'), bty = 'n') # resp. legend('bottomright', col = c('orchid3'), pch = c(21), lwd = c(2), lty = c(2), legend = c('Jonatan Kadrnozka'), bty = 'n') 9 Teplota 17.9. 2018 Teplota 17.9. 2018 39.0 38.5 f 38.0 37.5 37.0 36.5 -36.0 - O » .o o' Jonatan Kadrnozka I 10 I-1 15 20 cas (v hodinách) 39.0 38.5 f 38.0 37.5 37.0 36.5 36.0 O o. V I v .O -o- Jonatan Kadrnozka ~1-1-1-1-1 0 5 10 15 20 cas (v hodinách) — Export grafů do png souboru * Ruční export: Multifunkční okno —> Plots —> Export —> Save as Image —> Maint aspect ratio: odškrtnout —> Save * Export posloupností příkazů: png(1 Název grafu.png1) plot(1:5, 1:5) dev.off () # prikaz dev.offO projizdime, dokud se v konzoli neobjevi hláska null device 1 Tip na domácí procvičení: Vytvoření analogického grafu příkazy plot(), lines() a points() — plot(x, y, type= 'n', ...) - příprava prázdného grafu — lines(x, y, ...) - vykreslení čar — points(x, y, ...) - vykreslení bodů plot(hodiny, teploty, main = 'Teplota 17.9. 2018', xlab = 'cas (v hodinách)', ylab = 'teplota (Celsius)', type = 'n', xlim = c(-l, 23), ylim = c(36, 39), las = 1) lines(hodiny, teploty, lwd = 2, lty = 2, col = 'orchid3') points(hodiny, teploty, pch = 21, col = 'orchid4', bg = 'bisque', lwd = 2) legend('bottomright', fill = c('bisque'), legend = c('Jonatan Kadrnozka'), bty = 'n') Teplota 17.9. 2018 39.0 38.5 §* 38.0 <ň ti 37.5 & o & 37.0 36.5 -36.0 - ■ Jonatan Kadrnozka I 10 I-1 15 20 cas (v hodinách) 10