####################################################################################### ################ Statistická laboratoř - Zimní škola ################################## ################ Máme data - a co dál? (1. část) ################################### ############### Adéla Vrtková, Martina Litschmannová ################################## ####################################################################################### ## Máme data, a co dál? # 1. Spustíme potřebné balíčky, které obsahují další statistické funkce # 2. Nastavíme pracovní adresář, odkud importujeme data, popř. kam chceme ukládat výstupy # 3. Importujeme data (z pracovního adresáře, z internetu) # 4. Pre-processing -> a) Podíváme se na data # b) uložíme si data ve více formátech (každá funkce má "radši" jiný formát) # 5. Analýza kvalitativních proměnných # Viz skript k Máme data - a co dál? (2. část) # 6. Analýza kvantitativních proměnných # 7. Identifikace a rozhodnutí o vyloučení/ponechání odlehlých pozorování ####################################################################################### ## 1. Je-li zapotřebí - na začátek spustíme (popř. i nainstalujeme) všechny potřebné balíčky # Načtení balíčku library(readxl) ####################################################################################### ## 2. Zkontrolujeme, kde se ukládají generované výstupy (popř. si nastavíme pracovní adresář) # Výpis pracovního adresáře getwd() # Nastavení pracovního adresáře -> do uvozovek, celou cestu setwd("C:/Users/Desktop") ####################################################################################### ## 3. Načtení datového souboru ######################################################## # Načtení datového souboru ve formátu csv2 z internetu do datového rámce data data=read.csv2(file="http://am-nas.vsb.cz/lit40/DATA/aku_new.csv") ####################################################################################### ## 4. Pre-processing dat ############################################################## # Výpis datového souboru data # Zobrazení prvních šesti řádků head(data) # Zobrazení posledních šesti řádků tail(data) # Zobrazení 10. řádku data[10,] # Zobrazení 3. sloupce data[,3] # nebo (víme-li, jak se jmenuje proměnná zapsána ve 3. sloupci) data[["C"]] # nebo data$C # Uložení prvního a čtvrtého sloupce dat. rámce data do dat. rámce pokus pokus=data[,c(1,4)] # Uložení prvních 2 sloupců dat. rámce data do dat. rámce dataAB dataAB=data[,c(1:2)] #nebo dataAB=data[,-c(3:4)] dataAB ## Pozn. při ukládání dat mysleme na přehlednost v názvech, dataAB obsahují kapacity akumulátorů výrobců A a B ## Převod dat do standardního datového formátu dataS=stack(data) # funkce pro rychlý převod do standardní datové matice head(dataS) # přejmenování sloupců colnames(dataS)=c("kap","vyrobce") # je důležité zachovat správné pořadí # odstranění NA z datového rámce dataS dataS=na.omit(dataS) ## Vytvoření samostatných proměnných a=dataS$kap[dataS$vyrobce=="A"] b=dataS$kap[dataS$vyrobce=="B"] c=dataS$kap[dataS$vyrobce=="C"] d=dataS$kap[dataS$vyrobce=="D"] ### Poznámky pro zopakování principu grafiky v R ###################################### # základem jsou tzv. high-level funkce, které vytvoří graf (tj. otevřou grafické oknou a vykreslí dle zadaných parametrů) # na ně navazují tzv. low-level funkce, které něco do aktviního grafického okna přidají, samy o sobě neotevřou nové # př. low-level funkcí - např. abline, points, lines, legend, title, axis ... které přidají přímku, body, legendu... # tzn. před použitím "low-level" funkce je potřeba, volat "high-level" funkci (např. plot, boxplot, hist, barplot, pie,...) # další grafické parametry naleznete v nápovědě # nebo např. zde http://www.statmethods.net/advgraphs/parameters.html # nebo zde https://flowingdata.com/2015/03/17/r-cheat-sheet-for-graphical-parameters/ # nebo http://bcb.dfci.harvard.edu/~aedin/courses/BiocDec2011/2.Plotting.pdf ## Barvy v R # http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf # https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/colorPaletteCheatsheet.pdf ####################################################################################### ## 5. Explorační analýza a vizualizace kategoriální proměnné ########################## ## Výpočet četostí #################################################################### cetnosti=table(dataS$vyrobce) cetnosti # výpis # Výpočet relativních četností - 2 ekvivalentní způsoby rel.cetnosti=100*cetnosti/sum(cetnosti) rel.cetnosti # výpis rel.cetnosti2=prop.table(cetnosti)*100 # Zaokrouhlení relativních četností (%) na 1 desetinné místo rel.cetnosti=round(rel.cetnosti,digits=1) rel.cetnosti # výpis # Pozor na zaokrouhlovací chybu!! rel.cetnosti[4]=100-sum(rel.cetnosti[1:3]) rel.cetnosti # výpis # Sloučení četností a relativních četností do tabulky četností tabulka=cbind(cetnosti,rel.cetnosti) # cbind() ... sloučení sloupců tabulka # výpis # Přejmenování názvů sloupců v tabulce četností colnames(tabulka)=c("četnost","rel.četnost (%)") tabulka # Uložení tabulky do csv souboru pro export do MS Excel write.csv2(tabulka,file="tabulka.csv") # Kde je tabulka uložena? getwd() ## Výsečový (koláčový) graf - angl. piechart ########################################## cetnosti=table(dataS$vyrobce) # v tuto chvíli není nutno používat, četnosti jsme již spočetli a uložili do proměnné cetnosti výše pie(cetnosti) # Zabarvení grafu pie(cetnosti, col=c("red","green","yellow","blue")) pie(cetnosti, col=heat.colors(4)) # Přidání názvu grafu a popisků pie(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", labels=c("Výrobce A","Výrobce B","Výrobce C","Výrobce D")) pie(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", labels=paste("Výrobce",names(cetnosti),"\n",cetnosti)) # funkce paste() umožňuje sloučit textové řetězce a hodnoty proměnných, symbol "\n" tvoří nový řádek v textu # rel. četnosti byly spočteny a uloženy do proměnné rel.cetnosti výše pie(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", labels=paste0("Výrobce ",names(cetnosti),"\n",cetnosti,"; ",rel.cetnosti," %")) # Pro zájemce - balíček plotrix a funkce pie3D vytvoří 3D koláčový graf ## Sloupcový graf - angl. barplot ##################################################### cetnosti=table(dataS$vyrobce) # v tuto chvíli není nutno používat, četnosti jsme již spočetli a uložili do proměnné cetnosti výše barplot(cetnosti) # Změna barev, přidání názvu barplot(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", space=0.6) # parametr space vytvoří mezeru mezi sloupci # Přidání dalších popisků a legendy par(mar=c(2,4,2,10),xpd=TRUE) # parametr xpd = TRUE umožňuje vykreslení legendy mimo oblast grafu barplot(cetnosti, col=heat.colors(4), horiz=TRUE, # horizontální orientace grafu border=FALSE, # nevykresluje čáru kolem sloupečků main="Zastoupení výrobců ve výběru", names.arg=paste("Výrobce",names(cetnosti)), args.legend = list(xpd=TRUE)) legend("right", paste("Výrobce",names(cetnosti)), col=heat.colors(4), fill=heat.colors(4), border=FALSE, bty="n", # není vykresleno orámování legendy inset=-0.3) # kvůli umístění legendy # Přidání absolutních a relativních četností k odpovídajícím sloupcům bp = barplot(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", names.arg=paste("Výrobce",names(cetnosti))) text(bp,cetnosti,cetnosti) bp = barplot(cetnosti, col=heat.colors(4), main="Zastoupení výrobců ve výběru", names.arg=paste("Výrobce",names(cetnosti))) text(bp, cetnosti,paste0(cetnosti,"; ",rel.cetnosti," %"), pos=1) # parametr pos udává, kde bude text uveden vzhledem k dané pozici (1 = pod, 2 = vlevo, 3 = nad, 4 = vpravo) ## Jak graf uložit? ################################################################## # Zjištění aktivního okna, nastavení aktivního okna - tj. který graf chceme uložit? dev.cur() dev.set(2) # Uložení obrázku ve formátu pdf (výška a šířka jsou uvedeny v palcích (inch), 1inch=2,54cm) dev.print(device=pdf,file="barplot.pdf",width=6.5,height=5) # Zavření grafického okna dev.off() # Kam se obrázek uložil? getwd() # uložit obrázek lze i přes dialogové okno - Export ####################################################################################### #####Pie charts are a very bad way of displaying information.########################## ##The eye is good at judging linear measures and bad at judging relative areas.######## ##A bar chart or dot chart is a preferable way of displaying this type of data. ####### #######################################################################################