NMST539 | Cvičenie 2

Podmíněná a marginální rozdělení náhodných vektorov.

LS 2020/2021 | 09/03/21 | (online výuka)

zdrojový Rmd súbor (kódovanie UTF8)

Outline druhého cvičenia:

  • vlastne čísla v vlastné vektory matíc;
  • náhodné vektory, podmienené a marginálne rozdelenia;
  • mnohorozmerné normálne rozdelenie (R knižnica ‘mvtnorm’);

Cieľom druhého cvičenia z mnohorozmernej analýzy je zopakovať si niektoré dôležité a pre mnohorozmerné štatistické postupy podstatné znalosti týkajúce sa matíc a rozkladu matíc na vlastné vektory a vlastné čísla.

Stručne si pripomenieme niektoré základné vlastnosti náhodných vektorov. Uvedených bude niekoľko teoretických aj praktických príkladov na počítanie združených, marginálných a podmienených rozdeleni.

Štatisticky program R je k dispozícii (GNU public licence) na adrese https://www.r-project.org

RStudio (tzv. “user-friendly” interface - jeden z mnohých, ktoré na internete sú dostupné): RStudio.

Užitočné návody a manuály pre prácu s programom R:

  • Bína, V., Komárek, A. a Komárková, L.: Jak na jazyk R. (PDF súbor)
  • Komárek, A.: Základy práce s R. (PDF súbor)
  • Kulich, M.: Velmi stručný úvod do R. (PDF súbor)
  • De Vries, A. a Meys, J.: R for Dummies. (ISBN-13: 978-1119055808)


Odborná literatúra:
  • Hardle, W. and Simar.L.: Applied Multivariate Statistical Analysis. Springer, 201
  • Mardia, K., Kent, J., and Bibby, J.:Multivariate Analysis, Academic Press, 1979.




1. Vlastné čísla a vlastné vektory matice

Mohorozmerné štatistické metódy bývajú často založené na nejakej vhodnej dekompozícii (rozklade) buď matice dat (data frame, ktorý je obecne reprezentovaný maticou typu \(n \times p\)), alebo teoretickej, či výberovej variančnej-kovariančnej matice (t.j. štvorcová a symetrická matica typu \(p \times p\)). Najzákladnejším a zároveň najdôležitejsím z týchto rozkladov je tzv. spektrálný rozklad matice na vlastné čísla a vlastné vektory.

Nenulový vektor \(\boldsymbol{v} \in \mathbb{R}^p\) sa nazýva vlastným vektorom matice \(\boldsymbol{A} \in \mathbb{R}^{p \times p}\), ak platí \[ \boldsymbol{A}\boldsymbol{v} = \lambda \boldsymbol{v}, \] kde \(\lambda \in \mathbb{R}\) je skalár, ktorý nazývame vlastným číslom matice \(\boldsymbol{A}\), prislúchajúcim vlastnému vektoru \(\boldsymbol{v} \in \mathbb{R}\).


Samostatne


  • Pripomeňte a zopakujte si základné vlastnosti matíc, vlastných čísel a vlastných vektorov.
  • Pokúste sa pomocou programu R naprogramovať vlastnú funkciu, ktorá pre jednoduchú štvorcovú maticu typu \(2 \times 2\), alebo \(3 \times 3\) nájde príslušné vlastné vektory a vlastné čísla.
  • V programe R je pre spektrálny rozklad (t.j. nájdenie vlastných čísel a vlastných vektorov štvorcovej matice) definovaná funkcia eigen(). Pomocou helpu sa podívajte, ako je funkcia implementována a jej fungovanie si vyskúšajte na nejakých príkladoch.



2. Náhodné vektory (združené, marginálné, podmienené rozdelenie)

Mnohorozmerné štatistické motódy sú založené na teórii náhodných vektorov a náhodných matíc. V tejto časti si ukážeme niekoľko teoretických aj praktických príkladov. Pripomeňte si teoretické základy náhodných vektorov, definíciu náhodného vektoru a definíciu združeného, marginálneho a podmieňeného rozdelenia.

Teoretické a praktické príklady
(Prklad 1 a Príklad 2 jako samostatný úkol)

  1. Uvažujte rovnomerné dvojrozmerné rozdelenie náhodného vektoru \((X,Y)^\top\) na množine \(M = \{(x, y) \in \mathbb{R}^2;~0 < x < y < 1\}\).
  2. Nájdite združenú hustotu \(f_{(X,Y)}(x,y)\) náhodného vektoru \((X, Y)^\top\) a príslušné marginálne rozdelenia (hustoty) \(f_X(x)\) a \(f_Y(y)\). Sú náhodné veličiny \(X\) a \(Y\) nezávislé?


  3. Pomocou výpočtov z predchádzajúceho príkladu vygenerujte v programe R dvojrozmerný náhodný výber \((X_1, Y_1)^\top, \dots, (X_n, Y_n)^\top\), ktorý bude pochádzať z dvojrozmerného náhodného rozdelenia s hustotou \(f_{(X,Y)}(x,y)\) (z predchádzajúceho príkladu). Vizuálne overte, že ste naozaj nagenerovali náhodný vyber s požadovaným rozdelením. Spočítajte základné výberové charakteristiky (výberové stredné hodnoty a výberovú variančnú-kovariančnú maticu). Intuitívný návod na vypracovanie je uvedený nižšie.

    Hint pre vypracovanie
    • Pre ľubovolnú náhodnú veličinu \(X\) s distribučnou funkciou \(F_{X}(x)\) máme z definície, že platí \[ P[X \leq x] = F_{X}(x), \] pre všetky \(x \in \mathbb{R}\). Ak je distribučná funkcia naviac absolútne spojitá, tak pre kvantilovú funkciu \(F_X^{-1}(x)\) platí, že je to inverzná funkcia k distribučnej funkcii \(F_{X}(x)\). To ale znamená, že pre náhodnú veličinu \(Z = F_X(X)\) platí (opäť z definície distribučnej funkcie), že \[ P[Z \leq z] = P[F_X(X) \leq z] = P[X \leq F_X^{-1}(z)] = F_{X}\Big( F_X^{-1}(z)\Big) = z \] pre \(z\) z intervalu \([0,1]\). To ale znemaná, že náhodná veličina \(Z\) má rovnomerné rozdelenie na intervale \([0,1]\).
      To by vpodstate malo stačiť k tomu, aby sme dokázali generovať náhodný výber viac-menej z ľubovolného rozdelenia. Nižšie je uvedený drobný príklad pre ilustráciu.

    • Ako jednoduchý príklad, uvažujme náhodnú veličinu \(X\) s rozdelením daným hustotou \(f(x) = 3 x^2\) pre \(x \in (0,1)\) a \(f(x) = 0\) jinak. Chceme pomocou programu R nagenerovať náhodný vyber z tohto rozdelenia (bez toho, aby sme si spomenuli, alebo využili fakt, že \(X\) má vlastne Beta rozdelenie s parametrami \(\alpha = 3\) a \(\beta = 1\)). Distribučná funkcia náhodnej veličiny \(X\) je \(F(x) = x^3\) pre \(x \in [0,1]\) (distribučná funkcia je nulová pre \(x < 0\) a \(F(x) = 1\) pre \(x > 1\)). Keďže distribučná funkcia je absolútne spojitá, môžeme kvantilovú funkciu \(F^{-1}(q)\), pre \(q \in [0,1]\), vyjadriť ako funkciu inverznú k \(F(x)\), t.j. \[ F^{-1}(q) = \sqrt[3]{q}. \] pre \(q \in [0,1]\). Samozrejme platí, že \(F^{-1}(0) = 0\) a \(F^{-1}(1) = 1\). Vieme, že náhodná veličina \(Z = F(X)\), kde \(F(x) = x^3\) je distribučná funkcia náhodnej veličiny \(X\), má rovnomerné rozdelenie na intervale \([0,1]\). Nagenerujeme preto najprv náhodný vyber \(Z_1, \dots, Z_n\) z rovnomerného rozdelenia na intervale \([0,1]\).

      n <- 1000
      set.seed(1234)
      
      Z <- runif(n)
      par(mfrow = c(1,2))
      plot(ecdf(Z))
      hist(Z, col = "gray", breaks = ceiling(sqrt(n)))

      Následne pomocou spojitej transformácie \(X_i = F^{-1}(Z_i)\) dostaneme náhodné veličiny, ktoré už majú požadované rozdelenie definované distribučnou funkciou \(F_X(x)\), resp. hustotou \(f(x)\).

      X <- Z^(1/3)
      xSeq <- seq(0,1, length = 1000)
      par(mfrow = c(1,2))
      plot(ecdf(X))
      lines(xSeq^3 ~ xSeq, col = "red", lty = 2, lwd = 2)
      legend("topleft", legend = c("Empirická d.f.", "Teoretická d.f."), col = c("black", "red"), lty = c(1,2), lwd = c(2,2))
      hist(X, freq = F, col = "gray", breaks = ceiling(sqrt(n)))
      lines(3 * xSeq^2 ~ xSeq, col = "red", lty = 2, lwd = 2)
      legend("topleft", legend = c("Empirická hustota", "Teoretická hustota"), col = c("black", "red"), lty = c(1,2), lwd = c(2,2))
    • Vyskúšajte predchádzajúci príklad pre väčší rozsah náhodného výberu \(n \in \mathbb{N}\) a empiricky overte, že uvedený postup naozaj dáva správne/požadované rodelenie. Počet binov v histograme je možné pre lepšíu aprozimáciu zväčšiť pomocou parametru breaks = ....
    • Pre využitie uvedeného postupu na generovanie dvojrozmerného náhodného vyberu \((X,Y)^{\top}\) postačí aplikovať postup samostatne na náhodnú zložku \(X\) a náhodnú zložku \(Y\) (ak sú tieto zložky vzájomne nezávisle), alebo je nutné postup aplikovať na marginál jednej zložky a následne na podmienené rozdelenie druhej zložky – ak sú tieto zložky vzájomne závislé.

  4. Uvažujte dvojrozmerné Pareto rozdelenie definované hustotou \[ f(x, y) = c(x + y - 1)^{-p - 2}, \] pre \(x,y > 1\) a \(p > 0\). Spočítajte hodnotu normalizačnej konštanty \(c > 0\) a nájdite marginálne rozdelenie oboch zložiek. Spočítajte podmienené rozdelenie \(X\) pre dané \(Y = y\) a podmienené rozdelnie \(Y\) pri danej hodnote \(X = x\).



Samostatne


  • Pokúste sa premyslieť si, ako by ste pomocou vyššie uvedeného postupu vizuálne dokázali overili závislosť/nezávislosť dvoch náhodných veličín v nejakom náhodnom výbere \((X_i, Y_i)^\top\), pre \(i = 1, \dots, n\).
  • Uvedomte si, že klasický \(xy\) scatterplot býva často hodne zavádzajúci v posudzovani závislosti a nezávislosti dvoch náhodných veličín. Hodne evidentné to je napríklad pre exponenciálne rozdelenie - viď ilustráciu nižsie:

    n <- 100
    x <- rexp(n, rate = 1)
    y <- rexp(n, rate = 10)
    z <- x + rnorm(n, 0, 2)
    
    par(mfrow = c(1,2))
    plot(y ~ x, pch = 21, bg = "lightblue")
    plot(z ~ x, pch = 21, bg = "lightblue")

    Zatiaľ čo prvý obrázok zobrazuje dve nezávisle zložky \(X\) a \(Y\) - napriek tomu, že dochádza k evidentnému zhlukovaniu bodov v počiatku, druhý scatterplot zobrazuje závisle zložky \(X\) a \(Z\) - ktoré ale vizuálne by sme asi skôr mali tendenciu posúdiť, ako nezávisle. Celkový obraz sa ale výrazne zmeni, ak namiesto scatterplotov pre pôvodné data \(X_i\), \(Y_i\) a \(Z_i\) (pre \(i = 1, \dots, n\)) vykreslíme scatterplot pre \(F_{X}(X_i)\), \(F_{Y}(Y_i)\) a \(F_{Z}(Z_i)\), kde \(F_{X}\), \(F_{Y}\) a \(F_{Z}\) sú distribučné \(X\), \(Y\) a \(Z\).



3. Mnohorozmerné normálne rozdelenie

R knižnica pre prácu s mnohorozmerným normálnym rozdelenim je mvtnorm (po inštalácii pomocou príkazu install.packages("mvtnorm") načítať do programu pomocou príkazu library("mvtnorm")).

library("mvtnorm")

Knižnica v prvom prade umožňuje generovať náhodné vektory z mnohorozmerného normálneho rozdelenia s daným vektorom stredných hodnôt a symetrickou variančnou-kovariančnou maticou \(\Sigma\) (symetrická a pozitívne definitná).

Ďalšie podrobnosti o knižnici a implementácii jednotlivých prikazov:
https://cran.r-project.org/web/packages/mvtnorm/index.html



Poznámka


Pre umožnenie replikácie experimentu je vhodné používať nastavenie seedu pomocou príkazu set.seed(). Z vedeckého hľadiska je toho dokonca striktná požiadavka, aby bolo možné experiment, resp. štatisticku analýzu dodatočne zopakovať/rekonštruovať a získať ekvivalentné výsledky.

Porovnajte opakované použitie príkazu

(sample <- rnorm(10))
##  [1] -1.7685605 -0.7717708  0.4079737 -0.7056028 -0.7183402 -0.3604600
##  [7] -0.3311834  0.1055884 -0.7350938 -2.2298463

s opakovaným použitím dvojice príkazov

set.seed(1234)
(sample <- rnorm(10))
##  [1] -1.2070657  0.2774292  1.0844412 -2.3456977  0.4291247  0.5060559
##  [7] -0.5747400 -0.5466319 -0.5644520 -0.8900378




Príklad

Náhodný výber z dvojrozmerného normálneho rozdelenia

\(\boldsymbol{X}_{1}, \dots, \boldsymbol{X}_n \sim N_{2}\Big(\boldsymbol{\mu} = \Big(\begin{array}{c}2\\3\end{array}\Big), \Sigma = \Big(\begin{array}{cc}10^2 & 6^2\\ 6^2 & 6^2\end{array}\Big) \Big)\).

pre \(\boldsymbol{X}_{i} = (X_{i 1}, X_{i 2})^\top\).

Pri volaní príkazu rmvnorm() je nutné špecifikovať požadovaný vektor stredných hodnôt a variančnú-kovariančnú maticu (t.j. v jednorozmernom prípade parameter rozptylu). Avšak v prípade jednorozmerného náhodného generátoru z normálneho rozdelenia (príkaz rnorm()) je nutné špecifikovať parameter smerodatnej chyby (na rozdiel od parameteru rozptylu) - porovnajte príslušný help k dvojici príkazov?rnorm a ?rmnorm. Je preto nutné dostatočne dobre poznať implementáciu používaných príkazov, aby nedošlo k omylom pri generováni.

  • Aké je marginálne rozdelenie náhodných zložiek \(X_{i 1}\) a \(X_{i 2}\)? Tie môžeme samozrejme nagenerovať (samostatne) použitím jednorozmerného generátoru - funkcie rnorm().
  • Je možné využiť tento jednorozmerný náhodný generátor rnorm() k simulácii jednotlivých zložiek a následne vygenerované zložky vhodne zkombinovať aby sme dosiahli požadované dvojrozmerné normálne rozdelenie?
  • Overte, že variančná-kovariančná matica \(\Sigma\) je pozitívne definitná.
  • Porozmýšlajte nad príkladom dvojrozmerného rozdelenia, kde obe zložky majú marginálne normálne rozdelenie (s vhodnými parametrami), ale združené rozdelenie nie je normálne. Dokážete simulovať z takého rozdelenia?


Nasledujúcim príkazom vygenerujem náhodný výver z daného dvojrozmerného normálneho rozdelenia s rozsahom \(n = 1000\):

set.seed(1234)
s1 <- rmvnorm(1000, c(2, 3), matrix(c(10^2, 6^2, 6^2, 6^2),2,2))

Jednoduchý \(xy\) scatterplot pomocou príkazu plot():

plot(s1, pch=21, xlim=c(-35, 35), ylim=c(-35,35), xlab="Marginal No. 1", ylab="Marginal No. 2", bg = "lightblue")

Pomocou výberových charakteristík - vektor výberových stredných hodnôt a výberová variančná-kovariančná matica - môžeme zobraziť hĺbkové kontúry daného rozdelenia (čo sa tým myslí?) Nakoľko je náhodný výber generovaný zo znamého teoretického rozdelenia (vyššie), je možné využiť aj teoretický predpis príslušnej dvojrozmernej hustoty a napočítať teoretické kontúry.

V nasledujúcom využijeme výberové charakteristiky spočítane z nagenerovaného náhodného výberu:

center <- apply(s1, 2, mean)   ## sample mean vector
sigma <- cov(s1)               ## sample variance-covariance matrix

Hustota dvojrozmerného normálneho rozdelenia je daná predpisom:

\(f(\boldsymbol{x}) = f(x_{1}, x_{2}) = \frac{1}{2 \pi |\Sigma|^{1/2}} exp \left\{ -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\boldsymbol{x} - \boldsymbol{\mu}) \right\}\),

kde \(\boldsymbol{x} = (x_{1}, x_{2})^\top \in \mathbb{R}^2\), \(\boldsymbol{\mu} = (\mu_{1}, \mu_{2})^\top\) je vektor stredných hodnôt a \(\Sigma\) symetrická a pozitívne definitná variančná-kovariančná matica.

Pre spočítanie príslušných kontúr potrebujeme inverznú maticu k výberovej variančnej-kovariančnej matici \(\widehat{\Sigma}\). Príslušné kontúry budeme získavať pomocou vlastnej funkcie ellipse():

sigma.inv = solve(sigma, matrix(c(1,0,0,1),2,2))

ellipse <- function(s,t){
                    u<-c(s,t)-center; 
                    e <- (-1) * (u %*% sigma.inv %*% u) / 2; 
                    exp(e)/(2 * pi * sqrt(det(sigma.inv)))}

V závislosti na zvolenom gride bodov spočítame niekoľko bodov na príslušných kontúrach pomocou funkcie ellipse():

n <- 60
x <- (0:(n-1))*2 - 50
y <- (0:(n-1))*2 - 50

z <- mapply(ellipse, as.vector(rep(x,n)), as.vector(outer(rep(0,n), y, `+`)))

Výsledný graf:

plot(s1, pch=21, xlim=c(-35, 35), ylim=c(-35,35), xlab="Margin No. 1", ylab="Margin No. 2", bg = "lightgray", cex = 0.3)
contour(x,y,matrix(z,n,n), levels=(0:15), col = terrain.colors(16), add=TRUE, lwd = 1)



Samostatne


  • Dokážete intuitivne vysvetliť význam jednotlivých parametrov v predpise dvojrozmernej hustoty normálneho rozdelenia v súvislosti s výsledným/očakávaným scatterplotom bodov generovaných z tohto rozdelnia?.

  • Ako by ste intuitivne vysvetlili zmysel a úlohu hĺbkových kontúr? Napadá vás nejaká súvislosť s jednorozmernými kvantilmi?




4. Knižnica ‘mixtools’

Alternatívna možnosť, ktorá vedie viacmenej k ekvivalentným výsledkom, je použiť R knižnicu mixtools. (opäť inštalácia pomocou príkazu install.packages(mixtools))

library("mixtools")

V knižnici mixtools je už vlastný príkaz ellipse()(viď help?ellipse):

rm(list = ls())
library(mixtools)
library(mvtnorm) 

set.seed(1234)
p <- rmvnorm(1000, c(250000, 20000), matrix(c(100000^2, 22000^2, 22000^2, 6000^2),2,2))
plot(p, pch=20, xlim=c(0,500000), ylim=c(0,50000), xlab="Margin No. 1", ylab="Margin No. 2")
ellipse(mu=colMeans(p), sigma=cov(p), alpha = .05, npoints = 250, col="red") 



Samostatne


Manuálna rekonštrukcia kontúry z predchádzajúceho obrázku:

alpha <- 0.05
angles <- seq(0, 2*pi, length = 200)
cpoints <- cbind(cos(angles), sin(angles))

q <- sqrt(qchisq(1 - alpha, df = 2))
mu <- colMeans(p)
sigma <- cov(p)
sigmaEig <- eigen(sigma)
sigmaSqr <- sigmaEig$vectors %*% diag(sqrt(sigmaEig$values)) %*% t(sigmaEig$vectors)
Epoints <-  q * (cpoints %*% sigmaSqr)
Epoints[,1] <- Epoints[,1] + mu[1]
Epoints[,2] <- Epoints[,2] + mu[2]

plot(p, pch=20, xlim=c(0,500000), ylim=c(0,50000), xlab="Margin No.1", ylab="Margin No.2")
points(Epoints[,1], Epoints[,2], col = "red", pch = "*")



5. Príkaz mvrnorm() z knižnice MASS

Ďalšia možnosť generovania náhodného výberu z mnohorozmerného normálneho rozdelenia je v defaultnej knižnici MASS pomocou príkazu mvrnorm() (help pomocou príkazu ?mvrnorm pre ďalšie detaily).

Vizualizácia viacrozmerných hustôt je náročná pre intuitívne pochopenie a jednoduchosť vnímania. Nicméně, program R ponúka nejaké základné možnosti aj pre viacrozmerné grafy (dodatočné R kniťžnice, ktoré je možné nájsť na internete ponúkajú ešte širší výber rôznych možností).

Nasledujúce náhodné výbery sú generované z dvojrozmerného normálneho rozdelenia a pre vizualizáciu (neznámeho) rozdelenia spočítame jadrové odhady hustoty (teoretické základy jadrových odhadov ani detaily samotného výpočtu nie sú podstatné).

library("MASS")

### two independent samples from two-dimensional normal each
bivn1 <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1, .5, .5, 1), 2))
bivn2 <- mvrnorm(1000, mu = c(0, 0), Sigma = matrix(c(1.5, 1.5, 1.5, 1.5), 2))

### two dimensional kernel density estimate
bivn.kde1 <- kde2d(bivn1[,1], bivn1[,2], n = 50)
bivn.kde2 <- kde2d(bivn2[,1], bivn2[,2], n = 50)

par(mfrow = c(1,2))
persp(bivn.kde1, phi = 45, theta = 30, shade = .1, border = NA)
#par(new=TRUE)
persp(bivn.kde2, phi = 45, theta = 30, shade = .1, border = NA)



Poznámka


Je potrebné si dostatočne uvedomiť a pamätať na to, že zo združeného rozdelenia náhodného vektoru je možné (väčšínou) jednoducho a priamočiaro získať ľubovolné marginálne rozdelenie. Na druhú stranu, aj znalosť všetkých možných marginalov (okrem marginálneho rozdelenia, ktoré je vlastne už združeným rozdelenim) nestači k tomu, aby bolo možné určiť/spočítať celkové združené rozdelenie.

Vzhľadom k tomuto princípu môžeme pomocou jednorozmerného generátora generovať jednotlivé normálne rozdelené zložky, ale nedokážeme kontrolovať celkovú závislostnú štruktúru.

library(ggplot2)
rm(list = ls())
set.seed(1234)

n <- 1000
sample1 <- rnorm(n, mean=2, sd = 2)
sample2 <- 0.2 * sample1 + rnorm(n)
data <- data.frame(x = sample1, y = sample2, group="A")

sample3 <- rnorm(n, mean=0, sd = 1)
sample4 <- 3*sample3 - 1 + rnorm(n)
data <- rbind(data, data.frame(x = sample3, y = sample4, group="B"))
ggplot(data, aes(x=x, y=y,colour=group)) + geom_point(size=1.5, alpha=.6) 

Overenie závislosti/nezávislosti pomocou distribučných funkcii:

xPoints <- pnorm(sample1, mean(sample1), sd(sample1))
yPoints <- pnorm(sample2, mean(sample2), sd(sample2))

plot(xPoints, yPoints, pch = 21, bg = "lightblue")
lines(lowess(yPoints ~ xPoints), col = "red", lwd = 2)

Porovnajte s nasledujúcim obrázkom, pre sample1 a sample3 - teda dva nezávislé náhodné výbery.

xPoints <- pnorm(sample1, mean(sample1), sd(sample1))
yPoints <- pnorm(sample3, mean(sample3), sd(sample3))

plot(xPoints, yPoints, pch = 21, bg = "lightblue")
lines(lowess(yPoints ~ xPoints), col = "red", lwd = 2)

Ot8zky


  • Korespondujú obrázky vyššie s tým, čo by ste v nich očakávali vzhľadom k tomu, čo už viete a čo viete o datach?
  • Ako by ste získali analogicke obrázky, ak by teoretické rozdelenie náhodných výberov nebolo známe?
    (Hint: pre jednoduchosť uvažujte nejake jednorozmerné rozdelenie)

  • emp <- function(x, X){
       return(sum(X <= x)/length(X))
    }
    
    n <- 1000
    
    X <- rnorm(n)
    Y <- rnorm(n)
    Z <- X + Y
    
    x <- NULL
    y <- NULL
    z <- NULL
    
    for (i in 1:length(X)){
      x <- c(x, emp(X[i], X))
      y <- c(y, emp(Y[i], Y))
      z <- c(z, emp(Z[i], Z))
      }
    
    par(mfrow = c(1,2))
    plot(ecdf(X))
    points(x ~ X, col = "red", cex = 1.2)
    plot(ecdf(Y))
    points(y ~ Y, col = "red", cex = 1.2)

    par(mfrow = c(1,2))
    plot(x ~ y)
    lines(lowess(x ~ y), col = "red", lwd = 2)
    plot(z ~ x)
    lines(lowess(z ~ x), col = "red", lwd = 2)





Domáca (samostatná) úloha

(Deadline: Tretie cvičenie / 16.03.2021)

  • V druhej časti (2. Náhodné vektory) spočítajte prvý teoretický príklad (Príklad 1) a pomocou programu R vyriešte druhý príklad (Príklad 2).
  • Riešenie umiestnite na svoju webovú stránku, najneskôr v utorok, 16.03.2021, do 14:00.