####################################################################################### ################ Statistická laboratoř - 2. workshop ################################## ############### Adéla Vrtková, Martina Litschmannová ################################## ####################################################################################### ########## Příklad 1 - pravděpodobnostní a distribuční funkce diskrétní NV ############ # Pravděpodobnostní funkce počtu počítačů s nelegálním softwarem (ze 2) x=c(0,1,2) p=c(0.449,0.442,0.109) plot(x, p) plot(x, p, type="h") # Začínáme s grafikou -> graf dále upravujeme - používáme další parametry plot(x, p, ylim=c(0,0.5), # parametr pro rozsah osy y ylab="p(x)", # parametr pro popis osy y main="Pravděpodobnostní funkce", # parametr pro název grafu type="p", # určuje o jaký typ grafu se jedná (p -> points, bodový) pch=19, # parametr pro vzhled zobrazovaných bodů col=c("blue","red","green"), # barvy cex=2, # parametr pro upravení velikosti celého grafu (ve smyslu zvětší 2x) cex.lab=1.3, # parametr zvlášť pro velikost názvů os cex.axis=1.3, # parametr zvlášť pro velikost hodnot na osách cex.main=1.3) # parametr pro velikost názvu grafu text(0.0,0.0,"X ... počet počítačů s nelegálním softwarem", cex=1.3, col="blue", adj=c(0,0)) dist.f=c(p[1],p[1]+p[2],1) plot(x, dist.f, type="s", ylim=c(0,1), main="Zjednodušený náčrtek grafu distribuční funkce") ####################################################################################### ### Poznámky k úvodu do grafiky ### # 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é # výše použitá funkce "text" je low-level funkce - přidá text do stávajícího aktivního grafického okna # další low-level funkce - 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 ####################################################################################### ####################################################################################### ############ Jak to chodí v praxi? #################################################### # většinou máme známé rozdělení (např. binomické, hypergeometrické apod., k nimž má R své funkce) # nebo rozdělení vůbec neznáme a chceme jej alespoň odhadnout -> empirická distribuční funkce ####################################################################################### # Empirická distribuční funkce pro počet párů bot žen a mužů zeny= c(20, 24, 11, 25, 18, 24 ,32, 14, 37, 9, 28, 24) muzi= c(5, 7, 2, 3, 10, 4, 8, 13, 9) plot(ecdf(zeny)) plot(ecdf(muzi)) # funkce ecdf je konstruována z empirické pravděpodobnostní funkce, # v níž jsou všem jedinečným hodnotám NV přiřazeny relativní četnosti jejich výskytu # zakresleme si obě empirické distribuční funkce do jednoho grafu -> trénujme dále práci s grafikou.... plot(ecdf(zeny), xlab="Počet párů bot", ylab="ECDF", main="Empirická distribuční funkce počtu párů bot", col="red", xlim=c(0,37)) lines(ecdf(muzi), col="blue") legend("bottomright", legend=c("ženy","muži"), fill=c("red","blue"), cex=0.6) ########################################################################### ########## Příklad 3 - hustota a distribuční funkce spojité NV ############ # je-li rozdělení známé - R opět má vlastní funkce pro jednotlivé typy rozdělení # rozdělení ale nemusí být známo, ale chceme alespoň představu # pro účel příkladu si zde pomůžeme generátorem hodnot # situace - velmi jednoduše si nasimulujeme hodnoty odpovídající výšce žen a vykreslíme ECDF zeny=rnorm(20,168,6) plot(ecdf(zeny), main="Empirická distribuční funkce - výška žen", xlab="výška", ylab="ECDF") zeny=rnorm(100,168,6) plot(ecdf(zeny), main="Empirická distribuční funkce - výška žen", xlab="výška", ylab="ECDF") zeny=rnorm(1000,168,6) plot(ecdf(zeny), main="Empirická distribuční funkce - výška žen", xlab="výška", ylab="ECDF", col="red") # rovněž si vygenerujeme výšku mužů a spojíme vše do jednoho grafu, včetně velmi jednoduché legendy muzi=rnorm(1000,183,11) plot(ecdf(muzi), main="Empirická distribuční funkce - výška postavy", xlab="výška", ylab="ECDF", col="blue") lines(ecdf(zeny), col="red") legend("right", legend=c("muži","ženy"), fill=c("blue","red"), cex=0.6) # podívejme se i na hustotu plot(density(zeny), col="red", main="Hustota pro výšku žen a mužů", xlim=c(140,230)) lines(density(muzi), col="blue") ################################################################################### ############### Číselné charakteristiky diskrétní náhodné veličiny ################ # známe-li pravděpodobnostní funkci (z příkladu 1) x=c(0,1,2) p=c(0.449,0.442,0.109) # střední hodota EX=sum(x*p) #rozptyl EX2=sum(x*x*p) # druhý obecný moment DX=EX2-EX^2 DX # směrodatná ochylka sigma.X=sqrt(DX) # Funkce pro výpočet základních číselných charakteristik souhrn=function(x,p){ EX=sum(x*p) EX2=sum(x*x*p) DX=EX2-EX^2 sigma.X=sqrt(DX) # zápis výsledků do tabulky tab=rbind(EX,DX,sigma.X) rownames(tab)=c("stř. hodnota","rozptyl","směr. odchylka") return(tab) } souhrn(x,p)