<table width = 900 border = 0><tr><td>
# <b>NMST539 | Cvičenie 2</b>

## <b>Podmíněná a marginální rozdělení náhodných vektorov.</b>
### <font color = "#880000"><b>LS 2020/2021 |  09/03/21 | (online výuka)</b></font>
###### <a href = "cvicenie2021_2.Rmd">zdrojový Rmd súbor (kódovanie UTF8)</a>

**************

<b>Outline druhého cvičenia:</b> 

<ul>
<li>vlastne čísla v vlastné vektory matíc;</li>
<li>náhodné vektory, podmienené a marginálne rozdelenia;</li>
<li>mnohorozmerné normálne rozdelenie (R knižnica 'mvtnorm');</li>
</ul>

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 <a href = "https://www.r-project.org">https://www.r-project.org</a>

RStudio (tzv. "user-friendly" interface - jeden z mnohých, ktoré na internete sú dostupné): <a href = "https://www.rstudio.com">RStudio</a>.<br><br>

<b>Užitočné návody a manuály pre prácu s programom R:</b><br>

<ul>
<li>Bína, V., Komárek, A. a Komárková, L.: <i>Jak na jazyk R.</i>  (<a href = "NMFM301/Rmanual2.pdf">PDF súbor</a>)</li>
<li>Komárek, A.: <i>Základy práce s R.</i>  (<a href = "http://msekce.karlin.mff.cuni.cz/~komarek/vyuka/dataRko/Rmanual1.pdf">PDF súbor</a>)</li>
<li>Kulich, M.: <i>Velmi stručný úvod do R.</i> (<a href = "NMFM301/uvodr.pdf" >PDF súbor</a>)</li>
<li>De Vries, A. a Meys, J.: <i>R for Dummies.</i> (ISBN-13: 978-1119055808) </li>		
</ul><br>

<b>Odborná literatúra:</b><br>
<ul>
<li>Hardle, W. and Simar.L.: Applied Multivariate Statistical Analysis. Springer, 201</li>
<li>Mardia, K., Kent, J., and Bibby, J.:Multivariate Analysis, Academic Press, 1979.</li>
</ul>

<br><br>

**************

### <font color = "#880000"><b>1. Vlastné čísla a vlastné vektory matice</b></font>
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. <b>spektrálný rozklad matice</b> 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 <b>vlastným číslom matice $\boldsymbol{A}$, prislúchajúcim vlastnému vektoru $\boldsymbol{v} \in \mathbb{R}$</b>. 

<ul>
<li>Zaujímavá interaktívna grafická ilustrácia fungovania vlastných čísel a vlastných vektorov:<br>
<a href = "http://setosa.io/ev/eigenvectors-and-eigenvalues/">http://setosa.io/ev/eigenvectors-and-eigenvalues/</a></li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />



#### <font color = "#880000">Samostatne</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<ul>
<li>Pripomeňte a zopakujte si základné vlastnosti matíc, vlastných čísel a vlastných vektorov.</li>

<li>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. </li>

<li>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. 
</li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>


### <font color = "#880000"><b>2. Náhodné vektory (združené, marginálné, podmienené rozdelenie)</b></font>

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. <br><br>

<b>Teoretické a praktické príklady<br> 
<font color = "red">(Prklad 1 a Príklad 2 jako samostatný úkol)</font></b>

<ol>
<li>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\}$. </li>
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é? </li><br>

<li>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.<br><br>

<b>Hint pre vypracovanie</b>
<ul>
<li>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]$. <br>
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. 
</li><br>

<li>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]$.

```{r, fig.width = 10}
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)$. 

```{r, fig.width = 10}
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))
```
</li>

<li>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 = ...`. </li>

<li>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é. </li>
</ul></li><br>

<li>
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$. 
</li>
</ol>

<br><br>

#### <font color = "#880000">Samostatne</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<ul>
<li>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$.</li>

<li>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: 

```{r, fig.width=10}
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$.
</li>

</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>



### <font color = "#880000"><b>3. Mnohorozmerné normálne rozdelenie</b></font>

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")`). 

```{r}
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:<br> <a href = "https://cran.r-project.org/web/packages/mvtnorm/index.html">https://cran.r-project.org/web/packages/mvtnorm/index.html</a>
   
<br><br>   
   
#### <font color = "#880000">Poznámka</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
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

```{r}
(sample <- rnorm(10))
```

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

```{r}
set.seed(1234)
(sample <- rnorm(10))
```


<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<hr size="3" width="100%" noshade style="color:#440000" align="left" /><br><br>   


#### <font color = "#880000">Príklad</font>

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

<center>
$\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)$.
</center>
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. 

<ul>
<li>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()`. </li>
<li>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?
<li>Overte, že variančná-kovariančná matica $\Sigma$ je pozitívne definitná.</li>
<li>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? </li>
</ul>

<br>

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

```{r}
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()`:

```{r, fig.width = 10}
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: 

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

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

<center>
$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\}$,
</center>

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()`:

```{r}
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()`:

```{r, fig.width = 10}
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:  

```{r, fig.width = 10}
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)
```


<br><br>

#### <font color = "#880000">Samostatne</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<ul>
<li>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?.</li><br>

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

</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>



### <font color = "#880000"><b>4. Knižnica 'mixtools'</b></font>

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)`)

```{r, warning=F, message=F}
library("mixtools")
```

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

```{r, fig.width = 10}
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") 
```

<br><br>

#### <font color = "#880000">Samostatne</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
Manuálna rekonštrukcia kontúry z predchádzajúceho obrázku: 

```{r, fig.width = 10}
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 = "*")
```
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>

### <font color = "#880000"><b>5. Príkaz `mvrnorm()` z knižnice `MASS`</b></font>

Ď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).

```{r, message=F, warning=FALSE}

```

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é).

```{r, fig.width=10}
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)
```

<br><br>

#### <font color = "#880000">Poznámka</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
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. 

```{r, message=F, warning=FALSE}
library(ggplot2)
```

```{r}
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"))
```

```{r, fig.width =10}
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: 

```{r, fig.width =10, fig.height=10}
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. 


```{r, fig.width =10, fig.height = 10}
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)
```


#### <font color = "#880000">Ot8zky</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<ul>
<li>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?</li>

<li>Ako by ste získali analogicke obrázky, ak by teoretické rozdelenie náhodných výberov nebolo známe? <br>
(Hint: pre jednoduchosť uvažujte nejake jednorozmerné rozdelenie)</li><br>

```{r, fig.width =10, fig.height=10}
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)
```

</ul>
 





<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<hr size="3" width="100%" noshade style="color:#440000" align="left" /><br><br> 




## <font color = "#880000"><b>Domáca (samostatná) úloha </b></font>
### (Deadline: Tretie cvičenie / 16.03.2021)

<ul>
<li> 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). </li>

<li> Riešenie umiestnite na svoju webovú stránku, <font color = "red">najneskôr v utorok, 16.03.2021, do 14:00</font>.</li>
</ul>

</td></tr></table>
<br><br><br>