##### Skript pro 2. cvičení ##### ----------------------------------- ## ## téma: dívání se do řádků a sloupců datového souboru, ## simulace náhodného výběru, ## míry polohy, zejména průměr, vážený průměr ## medián, kvartily, percentily ## ## zkopírovat do pracovního prostoru soubor V:/zvara/statistitka/cvic02.R ## spustit R ## přejít do adresáře J:/statistika ## otevřít jako skript soubor cvic02.R (tj. tento soubor) ## rm(list=ls()) # vyčistit pracovní prostor ## ## Otevřít databázi s údaji o zemích EU v roce 2010: load("./data/EU2010.RData") ## pokud je soubor (zde EU2010.RData) v adresáři nazvaném data ## umístěném v pracovním adresáři, stačí jednodušší příkaz: data(EU2010) ## ls() ## představu o datech dostaneme pomocí některé z funkcí names(EU2010) head(EU2010) summary(EU2010) ## o velikosti databáze poví: dim(EU2010) nrow(EU2010) # počet řádků ncol(EU2010) # počet sloupců ## ## lze vypisovat jen některé řádky a některé sloupce EU2010[c(3,14,18,23),"země"] EU2010[c(3,14,18,23),c("země","obyvatel","HDP")] ## ls() EU2010$HDP # poněkud pracné označení proměnné HDP # dovnitř databáze EU2010 není vidět! Proč? ## kde všude POSTUPNĚ hledá program význam použitých "slov"? search() ## na prvním místě je pracovní prostor ".GlobalEnv", ## co je v něm, zjistíme pomocí ls(), nyní tam máme jen EU2010 attach(EU2010) # vsuneme do řady postupně prohledávaných míst search() ## nyní už jednotlivé sloupce EU2010 vidíme: země # ukázka faktoru ################ # Kolika způsoby lze vybrat pětici států EU? (n = nrow(EU2010)) (m = choose(n,5)) # Náhodně vylosujeme pětici států EU. # Jaká je pravděpodobnost, že mezi nimi bude ČR? (mA = choose(n-1,4)) (pstA = mA/m) # vyber náhodně (bez opakování) pět z čísel 1,...,n: sample(n,5)# vyšla všem stejná trojice? # Zkusme opakovaně provést takové losování: země[sample(n,5)] země[sample(n,5)] země[sample(n,5)] země[sample(n,5)] země[sample(n,5)] ## Kolikrát se ve vzorku objevila ČR? ### ## co se můžeme dozvědět o proměnné odpad: odpad ## 27 hodnot se nevešlo na jeden řádek, proto je na začátku řádku ## informace o tom, kolikátou hodnotou daný řádek začíná ## z vektoru (např. odpad) můžeme vybírat jen některé hodnoty: odpad odpad[1:3] odpad[-(1:3)] ## ## několik víceméně zřejmých funkcí: length(odpad) sort(odpad) min(odpad) # i tohle je percentil max(odpad) range(odpad) range(odpad)[2] # co dá range( )[1]? sort(odpad)[1] sort(odpad)[c(1,n)] # range(odpad) ## mean(odpad) # průměr sum(odpad)/length(odpad) # vypovídá tento údaj o celé EU? weighted.mean(odpad,obyvatel) ## sort(odpad) # variační řada; která hodnota je uprostřed? sort(odpad)[12:16] median(odpad) quantile(odpad,probs=1/2) quantile(odpad,probs=c(0,0.25,0.5,0.75,1))# navíc min, max, kvartily ## fakultativně výpočet percentilů ## počítáme dolní kvartil: (k = floor(1+(n-1)*(1/4))) (q = 1+(n-1)*(1/4) - k) (1-q)*sort(odpad)[k]+q*sort(odpad)[k+1] # fivenum(odpad) # podobný algoritmus pro pětici konkrétních percentilů ## rozdíl ve výpočtu kvartilů pro sudé n boxplot(odpad) # používá fivenum boxplot(odpad)$stats ## krabicový diagram jiného znaku boxplot(hustota) # proč jsou některé hodnoty mimo tykadla? fivenum(hustota) # připomenutí pětice statistik (Q1 = fivenum(hustota)[2]) # dolní kvartil (Q3 = fivenum(hustota)[4]) # horní kvartil ## Kam až může sahat horní tykadlo? Q3+(Q3-Q1)*1.5 # [1] 297.35 sort(hustota) # poslední tři hodnoty jsou větší (odlehlé) ## Lze nějak vyjádřit, kam patří ČR? abline(h=hustota[země=="CZ"],col="red") (hustotaCZ = hustota[země=="CZ"]) ## Co to znamená? Jak lze graf slovně popsat? ## V kolika zemích byla hustota větší? sum(hustota > hustotaCZ) ## V kolika zemích na hustota neopak menší? Víme to už? sum(hustota < hustotaCZ) ## Porovnejte hustotu v ČR s mediánem hustot median(hustota) ## Lze tvrdit, že hustota je u nás "nadprůměrná"? ## Jaká byla průměrná hustota obyvatel EU? mean(hustota) # Co říká tento údaj? sum(obyvatel)/sum(rozloha) weighted.mean(hustota,rozloha) ## Jaká je největší hustota? Jak ji najít? sort(hustota) max(hustota) which.max(hustota) země[which.max(hustota)] ## jaké je pořadí zemí podle hustoty? rank(hustota) cbind(země,rank(hustota)) cbind(EU2010[,c("země","hustota")],rank(hustota)) ## ## možnost prohlížet data ve zvoleném pořadí: n:1 EU2010[,1:6] EU2010[n:1,1:6] # EU2010[order(hustota),1:6] ## ## samostaná práce ## ## najít míry polohy pro emiseCO2 ## mean(emiseCO2) median(emiseCO2) boxplot(emiseCO2) fivenum(emiseCO2) range(emiseCO2)