# ...................................................................................... # ..............Upravené..........Cvičení 3 - Diskrétní náhodná veličina........................ # ..................Martina Litschmannová, Adéla Vrtková, Michal Béreš.................. # ...................................................................................... # Nezobrazuje-li se vám text korektně, nastavte File \ Reopen with Encoding... na UTF-8 # Pro zobrazení obsahu skriptu použijte CTRL+SHIFT+O # Pro spouštění příkazů v jednotlivých řádcích použijte CTRL+ENTER #----------------------------------------------------------------------------------- #----------------------------------------------------------------------------------- # 1.Příklad # Náhodná veličina $X$ nabývá hodnot $x_i \in \{1,2,3,4,5,6\}$ s pravděpodobností # $P(X = x_i) = \frac{1}{6}$. (X ... číslo, které padne na férové kostce). #----------------------------------------------------------------------------------- # a) Načrtněte graf pravděpodobnostní funkce $P_{X}(x)$. x = c(1,2,3,4,5,6) P = c(1/6,1/6,1/6,1/6,1/6,1/6) sum(P) P plot(x, P) plot(x, P, type="h") plot(x, P, type="l") plot(x, P, type="b") plot(x, P, type="o") plot(x, P, type="n") # 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","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(4.5,0.0,"X ... Hozené číslo", cex=1.3, col="blue", adj=c(0,0)) # Pravděpodobnostní funkce graff = function(x,p){ plot(x, p, # plná kolečka - v skutečných hodnotách ylab='P(x)',xaxt='n',pch=19,col=c("red"), ylim=c(0,max(p)), main="Pravděpodobnostní funkce") lines(c(min(x)-100,max(x)+100),c(0, 0)) for(i in 1:length(x)){ lines(c(min(x)-100,max(x)+100), c(p[i],p[i]), type = 'l', lty = 3, lwd=0.5) # horizontální grid lines(c(x[i],x[i]), c(-0.1,1.1), type = 'l', lty = 3, lwd=0.5) # vertikální grid } par(new=TRUE) # že chceme kreslit do jednoho grafu plot(x, p*0, type="b", # prázdná kolečka - tam kde je definovaná nenulová hodnota ylab='P(x)', xaxt='n', col=c("red"), ylim=c(0,max(p))) par(new=TRUE) #červná osa vlevo od nejmenší hodnoty d=c(x[1] - 0.1*(x[length(x)] - x[1]), x[1]) lines(d, d*0, type="b",ylab='',xlab='', col=c("red"), ylim=c(0,max(p))) par(new=TRUE) #červná osa vpravo od nejmenší hodnoty d=c(x[length(x)], x[length(x)] + 0.1*(x[length(x)] - x[1])) lines(d, d*0, type="b",ylab='',xlab='', col=c("red"), ylim=c(0,max(p))) axis(1, at=x,labels=x) # nastavení hodnot na X axis(4, at=p,labels=p, las=2, cex.axis=0.7, tck=-.01) # a Y } graff(x, P) # Poznámky k úvodu do grafiky # základem jsou tzv. high-level funkce, které vytvoří graf (tj. otevřou grafické okno 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 #----------------------------------------------------------------------------------- # b) Určete předpis a načrtněte graf distribuční funkce $F_{X}(x)$. P F = cumsum(P) F plot(x, F, type="s") # zjednodušený graf distribuční funkce # Funkce pro výpočet a vykreslení distribuční funkce grafF = function(x,p){ F = cumsum(p) F_ext = c(0, F) # natáhneme F o 0 na začátku x_ext = c(x[1]-1, x, x[length(x)]+1) # a x z obou stran plot(x, F, ylab="F(x)", col=c("red"), xaxt='n', ylim=c(0,1), # prazdná kolečka type='p', main="Distribuční funkce") par(new=TRUE) # že chceme kreslit do jednoho grafu plot(x, F_ext[1:(length(F_ext)-1)], # plná kolečka col=c("red"), ylab="F(x)", xaxt='n', ylim=c(0,1), type='p', pch=19) for(i in 1:(length(x_ext)-1)){ lines(c(min(x)-100,max(x)+100), c(F_ext[i],F_ext[i]), type = 'l', lty = 3, lwd=0.5) # horizontální grid lines(c(x_ext[i],x_ext[i]), c(-0.1,1.1), type = 'l', lty = 3, lwd=0.5) # vertikální grid lines(x_ext[i:(i+1)], c(F_ext[i],F_ext[i]), col=c("red")) # graf - čáry } axis(1, at=x,labels=x) # nastavení hodnot na X axis(4, at=F,labels=F, las=2, cex.axis=0.7, tck=-.01) # a Y return(F) } grafF(x,P) #----------------------------------------------------------------------------------- # d) Určete střední hodnotu náhodné veličiny $X$ (značíme $EX$). # x*P EX = sum(x*P) EX #\item[d)] Určete střední hodnotu náhodné veličiny $X^2$ (značíme $EX^2$). y = (x*x) y EY = sum((x*x)*P) EY #----------------------------------------------------------------------------------- # e) Určete rozptyl náhodné veličiny $X$ (značíme $DX$). # #první možnost: Di = (x-EX)^2*P Di DX = sum(Di) DX #druhá možnost: DX = EY - (EX)^2 DX = sum((x*x)*P) -(sum(x*P))^2 DX #----------------------------------------------------------------------------------- # f) Určete směrodatnou odchylku náhodné veličiny $X$ (značíme $\sigma_X$). # sigma.X = sqrt(DX) sigma.X # 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) tab.popis = c("str. hodnota","rozptyl","smer. odchylka") rownames(tab) = tab.popis return(tab) } souhrn(x, P) #----------------------------------------------------------------------------------- #----------------------------------------------------------------------------------- # 2.Příklad # Náhodná veličina $X$ je dána tabulkou pravděpodobností: # \begin{tabular}{|r|l|l|l|l|} # \hline # $x_i$ & 0 & 1 & 2 & 3 \\ \hline # $P(X = x_i)$ & 0,1 & 0,2 & 0,3 & 0,4 \\ # \hline # \end{tabular} x = c(0,1,2,3) x P = c(0.1, 0.2,0.3,0.4 ) P #----------------------------------------------------------------------------------- # a) Načrtněte graf pravděpodobnostní funkce $P_{X}(x)$. graff(x,P) #----------------------------------------------------------------------------------- # b) Určete předpis a načrtněte graf distribuční funkce $F_{X}(x)$. grafF(x,P) #----------------------------------------------------------------------------------- # c) Určete střední hodnotu náhodné veličiny $X$ (značíme $EX$). x*P EX = sum(x*P) EX #----------------------------------------------------------------------------------- # d) Určete střední hodnotu náhodné veličiny $X^2$ (značíme $EX^2$). EY = sum((x*x)*P) EY #----------------------------------------------------------------------------------- # e) Určete rozptyl náhodné veličiny $X$ (značíme $DX$). Di = (x-EX)^2*P DX = sum(Di) DX #----------------------------------------------------------------------------------- # f) Určete směrodatnou odchylku náhodné veličiny $X$ (značíme $\sigma_X$). sigma.X = sqrt(DX) sigma.X #Souhrnná tabulka souhrn(x, P) #----------------------------------------------------------------------------------- #----------------------------------------------------------------------------------- # 3.Příklad #Na lodi jsou dvě čerpadla. První v čase $t$ pracuje s pravděpodobností $0,8$ #a druhé, nezávisle na prvním, s pravděpodobností $0,9$. Náhodná veličina $X$ #udává počet pracujících čerpadel v čase $t$. #----------------------------------------------------------------------------------- # a) Načrtněte graf pravděpodobnostní funkce $P_{X}(x)$. #A ... první čerpadlo v čase t pracuje #B ... druhé čerpadlo v čase t pracuje # P(X = 0) = 1 - P(A sjednoceno s B) = 0.02 # P(X = 1) = P(A sjednoceno s B) - P(A prunik B) = 0.26 # P(X = 2) = P(A prunik B) = 0.72 # P(X = x) = 0 pro x ruzne od 0,1,2. Proto: x = c(0,1,2) Px = c(0.02,0.26,0.72) graff(x,Px) #----------------------------------------------------------------------------------- # b) Určete předpis a načrtněte graf distribuční funkce $F_{X}(x)$. grafF(x,Px) #----------------------------------------------------------------------------------- # c) Určete střední hodnotu náhodné veličiny $X$ (značíme $EX$). EX = sum(x*Px) EX #----------------------------------------------------------------------------------- # d) Určete střední hodnotu náhodné veličiny $X^2$ (značíme $EX^2$). EX2 = sum(x*x*Px) EX2 #----------------------------------------------------------------------------------- # e) Určete rozptyl náhodné veličiny $X$ (značíme $DX$) a směrodatnou # odchylku náhodné veličiny $X$ (značíme $\sigma_X$). DX = sum(x*x*Px) - (sum(x*Px))**2 DX sigmaX = sqrt(DX) sigmaX #----------------------------------------------------------------------------------- # f) První čerpadlo odsává vodu z lodi rychlostí 300 litrů za sekundu a # druhé také rychlostí 300 litrů za sekundu. Do lodi přitéká voda # rychlostí 550 litrů za sekundu. Náhodná veličina $Y$ vyjadřuje # (v litrech za sekundu) množství vody přitékající do lodi. # Y = 550-300X # \item[I.)] Načrtněte graf pravděpodobnostní funkce $P_{Y}(y)$. # X=0 => Y = 550, P_Y(550) = P(X = 0) = 0.02 # X=1 => Y = 250, P_Y(250) = P(X = 1) = 0.26 # X=2 => Y = -50, P_Y(-50) = P(X = 2) = 0.72 # pro jine hodnoty Y je , P_Y(y) = 0 y = c(-50, 250, 550) PY = c(0.72, 0.26, 0.02) graff(y,PY) #NEBO y = 550 - 300*x PY = Px pravd.f(y,PY) # \item[II.)] Určete předpis a načrtněte graf distribuční funkce $F_{Y}(y)$. dist.f(y,PY) #graf vychází nesmyslně! je to tím, že hodnoty y #nejsou seřazeny vzestupně! Je to dáno výpočtem y = 550 - 300*x y #ŘEŠENÍ: #sort(y) by seřadilo hodnoty y podle velikosti idx_sorted = order(y) # funkce order vrátí indexy setřízeného pořadí idx_sorted y = y[idx_sorted] # předefinujeme vektor y - seřadíme podle velikosti y PY = Px[idx_sorted] # předefinujeme vektor PY - musíme také stejně přeuspořádat! PY dist.f(y,PY) #----------------------------------------------------------------------------------- # g) Určete střední hodnotu náhodné veličiny $Y$ (značíme $EY$). EY = sum(y*PY) EY #NEBO EY = 550 -300*1.7 EY #\item[h)] Určete rozptyl náhodné veličiny $Y$ (značíme $DY$). DY = sum((y-EY)^2*PY) DY #NEBO DY = sum(y*y*PY) - (sum(y*PY)^2) DY #NEBO DY = (300^2)*DX DY #\item[ch)] Určete směrodatnou odchylku náhodné veličiny $Y$ (značíme $\sigma_Y$).