# Uvod do R; verze 2020/10 ################################################################## # nastavení pracovního adresáře setwd("C:/data/R_data/MFGcviceni") getwd() # vypíše pracovní adresář # DATA, DATOVE STRUKTURY ################################################################## # vytvoří proměnnou a zapíše do ní hodnoty x <- c(1,2,3,4,5,6,7,8) x mean(x) length(x) # nápověda: ?mean() is.vector(x) # vektor je základní datovou strukturou v R, konstanta je vektor delky 1 # další datové struktury jsou např: data.frame, matrix, array, list # nacteni souboru (formát CSV) v podobě tabulky a zjištění jeho vlastností: # soubor obsahuje záhlaví sloupců (tj. proměnných), desetiná tečka, hodnoty odděleny středníkem teploty_brno <- read.table('brno_t.csv', header = T, dec = '.', sep = ';') names(teploty_brno) head(teploty_brno) dim(teploty_brno) class(teploty_brno) # soubor (typ data.frame) obsahuje průměrné měsíční teploty vzduchu z Brna v období 1800 - 2010 - tedy 211 řádků a 13 sloupců # způsoby výpisu hodnot teploty_brno$JAN[1] # vypíše hodnotu z prvního řádku proměnné JAN, tedy ledna teploty_brno[1,1] # vypíše hodnotu z prvního řádku a prvního sloupce (letopočet) teploty_brno[1,2] # vypíše hodnotu z prvního řádku a druhého sloupce teploty_brno$JAN # vypíše celou proměnnou JAN, to stejné: teploty_brno[,2] # ZAKLADNI VLASTNOSTI DAT, UKLADANI DO PROMENYCH, JEDNODUCHE VYPOCTY ################################################################################### nrow(teploty_brno); ncol(teploty_brno) # počet řádků a sloupců length(teploty_brno$JAN) # délka proměnné leden_prumer <- mean(teploty_brno$JAN) # vypočte aritmetický průměr a hodnotu uloží do proměnné leden_prumer sd(teploty_brno[,2]) # vypočte směrodatnou odchylku quantile(teploty_brno$JAN, c(.25, .75)) # vypočte dolní a horní kvartil summary(teploty_brno$JAN) # základní popisná statistika, pro všechny proměnné lze summary(teploty_brno) # výpis třetího sloupce od nejmensiho sort(teploty_brno[,3]) # ... a od nejvetsiho sort(teploty_brno[,3], decreasing = T) # vypiš rok, ve kterém se vyskytla mimimální únorová teplota teploty_brno[which(teploty_brno[,3]==-11.9),] # JEDNODUCHE GRAFY ################################################################################### hist(teploty_brno[,2]) hist(teploty_brno[,2], breaks = 20) hist(teploty_brno[,2], breaks = 20, main = 'Histogram', ylab = 'Pocet', xlab = 'Teplota') hist(teploty_brno[,2], breaks = 20, main = 'Histogram', ylab = 'Pocet', xlab = 'Teplota', col = 'blue') # krabicový graf boxplot(teploty_brno[,2], main = 'Krabicovy graf') # test normality dat shapiro.test(teploty_brno[,2]) # qq-plot qqnorm(teploty_brno[,2]) # vnořovani funkci # scale() převede puvodní hodnoty na normovanou normalni promenou (průměr nula, směr. odch. jedna)) # hist() vykreslí histogram hist(scale(teploty_brno[,2]), density=20, breaks=20, prob=TRUE, xlab="Teplota vzduchu", main="Histogram a Gaussova křivka") # curve() přidá frekvenční funkci normálního rozdělení curve(dnorm(x, mean=mean(scale(teploty_brno[,2])), sd=sd(scale(teploty_brno[,2]))), col="darkblue", lwd=2, add=TRUE) # parametrem xlim si upravime rozsah hodnot na ose x hist(scale(teploty_brno[,2]), density=20, breaks=20, prob=TRUE, xlab="Teplota vzduchu", main="Histogram a Gaussova křivka", xlim=c(-3,3)) curve(dnorm(x, mean=mean(scale(teploty_brno[,2])), sd=sd(scale(teploty_brno[,2]))), col="darkblue", lwd=2, add=TRUE) # ZÁVISLOST DVOU SOUBORU ################################################################################### # druhy soubor obsahuje měsíční hodnoty indexu severoatlantské oscilace (NAO) nao_index <- read.table('NAOI.csv', header = T, dec = '.', sep = ';') names(nao_index) # vypíše první rok v soubou (třemi různými zpsoby) min(nao_index[,1]) min(nao_index$rok) nao_index[1,1] # úprava prvního souboru tak, aby byl stejne 'dlouhy' jako druhy podle hodnoty proměnné YEAR - v prvním sloupci) teploty_brno_upr <- subset(teploty_brno, YEAR > 1824 & YEAR <= 2010) # kontrola delek datasetu (nrow je pro matice, length pro vektory) nrow(teploty_brno_upr) # length(teploty_brno_upr[,1]) nrow(nao_index) # length(nao_index[,1]) # vykresleni grafu zavislosti lednovych hodnot plot(teploty_brno_upr[,2], nao_index[,2], main = 'Název grafu', xlab = 'Brno Teploty LEDEN', ylab = 'NAO Index LEDEN') # vypocet korelace cor(teploty_brno_upr[,2], nao_index[,2]) # test vyznamnosti korelace cor.test(teploty_brno_upr[,2], nao_index[,2]) # linearni regrese - pozor na poradi prvku! lm_leden <- lm(nao_index[,2] ~ teploty_brno_upr[,2]) summary(lm_leden) # pridani regrese do obrazku abline(lm_leden, col = 'red', lwd = 3) # vypis struktury dat ulozenych v objektu lm str(lm_leden) # vypise smernici primky - tedy druhy koeficient v objektu lm_leden lm_leden$coefficients[2] # kontrola vhodnosti modelu hist(lm_leden$residuals) # STATISTICKE TESTY ################################################################################### # statisticke testy: t-test (porovnani průměrů dvou nezavislych souboru) t.test(nao_index[,2], nao_index[,8]) # statisticke testy: parovy t-test (porovnani dvou nezavislych souboru) # t.test(nao_index[,2], nao_index[,8], paired = T) # statisticke testy: f-test (lisi se vyznamne variabilita hodnot indexu NAO v lednu a v cervenci?) var.test(nao_index[,2], nao_index[,8]) boxplot(nao_index[,2], nao_index[,8])