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

## <b>Matice vzdialenosti a mnohorozmerné škálovanie</b>
### <font color = "#880000"><b>LS 2020/2021 |  27/04/21 | (online výuka)</b></font>
###### <a href = "cvicenie2021_9.Rmd">zdrojový Rmd súbor (kódovanie UTF8)</a>

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


<b>Outline deviateho cvičenia:</b> 

<ul>
<li>teoretické základy metódy mnohorozmerného škálovania;</li>
<li>rôzne typy vzdialenosti pre výpočet matice vzdialenosti;</li>
<li>metrická a nemetrická metóda mnohorozmerného škálovania;</li>
</ul><br>


<b>Štatisticky program R</b> je k dispozícii (GNU public licence) na adrese <a href = "https://www.r-project.org">https://www.r-project.org</a><br><br>

<b>RStudio</b> -- "user-friendly" interface (jeden z mnohých, ktoré na internete nájdete): <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, 2015</li>
<li>Mardia, K., Kent, J., and Bibby, J.:Multivariate Analysis, Academic Press, 1979.</li>
</ul>

<br><br>


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

  


### <font color = "#880000"><b>1. Metóda mnohorozmerného škálovania</b></font>

Mnohorozmerné škálovanie je štatistická metóda určená primárne pre vizualizáciu mnohorozmerných
dat. Na rozdiel od vizualizácie pomocou PCA, alebo FA, ktoré sa zameriavali na zobrazenie 
dat z hľadiska maximálnej variability, resp. celkovej korelačnej štruktúry, mnohorozmerné škálovanie 
využíva pri zobrazovaní princíp vzájomnej podobnosti/nepodobnosti jednotlivých pozorovaní. 
Opäť sa ale jedná o určitú redukciu dimenzionality pôvodných dat aj keď vo výsledku vizualizujeme 
vpodstate iné data, než boli tie pôvodne.

Idea mnohorozmerného škálovania spočíva v identifikácii/určení/nájdení menšieho množstva dimenzii (teda redukcia dimenzionality), 
tak aby bolo možné pôvodné data čo najvierohodnejšie zobraziť (reprezentovať) v menšom počte dimenzii, pričom dôraz je kladený 
na zachovanie vzájomnej podobnosti medzi pozorovaniami (objektami). Miera podobnosti/nepodobnosti je 
kvantifikovaná pomocou tzv. matice vzdialenosti. Existujú samozrejme rôzne postupy, ako mieru podobnosti definovať, 
resp. akú vzdialenosť pri určovaní nepodobnosti využiť. Špecifické voľby miery podobnosti dávajú špecifické 
varianty mnohorozmerného škálovania.

Z určitého pohľadu sa dá povedať, že ak je podobnosť  reprezentována pomocou klasickej korelačnej matice, 
tak metóda mnohorozmerného škálovania je vlastne faktorovou analýzou. Na druhej strane, ak sa miera nepodobnosti kvantifikuje 
vzhľadom k  Euklidovej vzdialenosti, tak získame  metódu hlavných komponent. 
Samozrejme existujú mnohé ďalšie voľby vzdialenosti.

Základným vstupom pre algoritmus mnohorozmerného škálovania je tzv. <b>matica vzdialenosti</b> (resp. matica podobnosti/nepodobnosti)
medzi všetkými možnými dvojicami pozorovaní, pričom sa predpokladá, že pôvodná dimenzia pozorovaní je neznáma. Úloha škálovacieho algoritmu 
je nájsť množinu bodov v priestore určitej (ideálne čo najnižšej) dimenzie, tak aby vzdialenosti medzi bodmi množiny čo najviac 
korespondovali s konfiguráciou v pôvodných datach.  

V určitých prípadoch je dokonca možné metódu mnohorozmerného škálovania aplikovať na základe matice podobnosti/nepodobnosti, 
ktorá nie je postavená na vzdialenosti (definícia vzdialenosti ako metriky), ale napr. na základe úrčitých skórov, alebo na základe poradí (resp. nejakej vhodnej monotónnej funkcie poradí). V takomto prípade hovoríme o tzv. nemetrickom mnohorozmernom škálovaní (nonmetric MDS).

V programe R je v štandardnej inštalácii k dispozícii funkcia `dist()`, ktorá pre vstupné data počíta maticu vzdialenosti (resp. maticu 
podobnosti), pričom k dispozícii sú rôzne vzdialenosti (viď help k danej funkcii pre ďalšie podrobnosti). Matica vzdialenosti 
následne slúži ako vstup pre algoritmus mnohorozmerného škálovania -- v programe R je k dispozícii funkcia `cmdscale()`. <br><br>


Pre ilustráciu opäť využijeme data o ekologickej a biologickej kvalite vodných tokov v Českej republike. Biologická a ekologická diverzita jednotlivých lokalít (celkovo 65 rôzných lokalít v ČR v blízkosti významných vodných tokov) je posudzovaná na základe 17 rôznych biologických indexov (definovaných podľa certifikovanej metodiky MŽP ČR). Pre lepšie vizuálne výsledky je premenná 'Ntaxon' faktorizovaná do troch kategórii.

```{r}
rm(list = ls())
bioData <- read.csv("http://msekce.karlin.mff.cuni.cz/~maciak/NMST539/bioData.csv", header = T)

bioData$Ntaxonfac <- cut(bioData$Ntaxon, breaks = c(0, 12, 18, 40), labels = c("low", "medium", "high"))

Dmatrix <- dist(bioData[,2:18]) 
DmatrixScaled <- dist(scale(bioData[,2:18]))

dim(as.matrix(Dmatrix))
```
<br><br>

Matica vzdialenosti samozrejme závisí na měřítku pôvodných dat. Metóda mnohorozmerného škálovania 
preto nie je invariantná voči škálovaniu. Samotný škálovací algoritmus je ale možno aplikovať aj 
na maticu vzdialenosti pôvodných pozorovaní, aj na maticu vzdialenosti škálovaných (napr. štandardizovaných) dat. 

<br><br>

Pomocou škálovacieho algoritmu môžeme následne data reprezentovať graficky. Z formálneho hľadiska 
sa ale v grafe dívame na množinu nových bodov, ktoré určil škálovaci algoritmus tak, aby bola 
táto množina čo najviac podobná pôvodným datam vzhľadom k vstupnej matici vzdialenosti. 

```{r, fig.width=10}
mds <- data.frame(cmdscale(DmatrixScaled))


library(ggplot2)
ggplot(mds, aes(x = X1, y = X2)) + 
  geom_label(aes(fill = bioData$Ntaxonfac, label = bioData[,1]))
```

Za základe grafu, ktorý zobrazuje v dvoch rozmeroch škálované pôvodné data (resp. nové data, ktoré sa snažia zachovať 
mieru podobnosti a nepodobnosti v pôvodných datach) dokážeme získať celkom dobrú predstavu o štruktúre dat z hľadiska 
podobnosti jednotlivých pozorovaní. V určitom zmysle by sa dalo povedať, že žiaden iný dvojrozmerný scatterplot (dve rôzne premenné 
z pôvodného datového súboru) neposkytne tak komplexnú (a čo najmenej zkreslenú) informáciu ohľadom celkovej podobnosti, ako je tomu v prípade mnohorozmerného škálovania. 

Uvedomte si, že informácia o pôvodnom rozmere (dimenzionalite) dat nie je vstupnou informáciou do algoritmu mnohorozmerného 
škálovania. Matica $\mathbb{D}$ má rozmery $n \times n$ a teda implicitne obsahuje informáciu o počte pozorovaní, avšak nie o počte premenných. 

<br><br>

  
#### <font color = "#880000">Samostatne</font>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<ul>
<li>Ako by ste interpretovali jednotlivé hodnoty v matici $\mathbb{D}$ (`Dmatrix`)?</li>
<li>Štandardne používa funkcia `dist()` Euklidovú vzdialenosť medzi jednotlivými pozorovaniami. Dokážete 
jednotlivé hodnoty zrekonštruovať -- t.j. získať manuálnym výpočtom? Napríklad: 

```{r}
sqrt(sum((bioData[1,2:18] - bioData[2,2:18])^2))
```

Príslušná hodnota z matice $\mathbb{D}$ (<i>Dmatrix</i>): 

```{r}
as.matrix(Dmatrix)[1:2,1:2]
```
</li>

<li>Premenná  <i>Ntaxon</i> v určitom zmysle súhrnne popisuje kvalitu jednotlivých lokalít. 
Nízke hodnoty môžu byť interpretované ako slabá ekologická kvalita, výsoké hodnoty reprezentujú lokality 
s veľmi dobrou ekologickou kvalitou a biologickou diverzitou. Koresponduje táto interpretácia s intuitívnym 
záverom získanym z grafu? Viď napr. riečné toky v okolí Ostravy, Mohelníc, prípadne Bečva -- a porovnajte s 
vodnými tokmi napr. na Vysočine, alebo na Šumave. </li>

<li>Premennú <i>Ntaxon</i> je samozrejme možné kategorizovať 
aj iným spôsobom (napr. detailnejšie) a následne opäť aplikovať MDS. </li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>

<hr size="3" width="100%" noshade style="color:#440000" align="left" />
#### <font color = "#880000">Mnohorozmerné škálovanie na základe Euklidovej vzdialenosti / teoretické aspekty</font>

Matica vzdialenosti $\mathbb{D} = (d_{ij})_{i, j = 1}^{n}$ je definovaná na základe Euklidovskej metriky

$$
d_{ij}^2 = \sum_{k = 1}^{p} (x_{i k} - x_{j k})^2, 
$$
kde predpokládame $p$-rozmerné body $\boldsymbol{x}_i = (x_{i1}, \dots, x_{ip})^\top \in \mathbb{R}^p$ a  $\boldsymbol{x}_j = (x_{j1}, \dots, x_{jp})^\top \in \mathbb{R}^p$. 

Pre každé $i, j = 1, \dots, n$ definujme dodatočné kvantity

$$
a_{ij} = - \frac{d_{ij}^2}{2}, \quad\quad a_{i \bullet} = \frac{1}{n}\sum_{j = 1}^{n} a_{ij}, \quad\quad a_{\bullet j} = \frac{1}{n}\sum_{i = 1}^{n} a_{ij}, \quad\quad a_{\bullet \bullet} = \frac{1}{n^2} \sum_{i = 1}^n \sum_{j = 1}^n a_{ij}.
$$

S využitím značenia definovaného vyššie sa da ukázať, že platí následovné: <br><br>
<ul>
<li>Pre maticu $\mathbb{B} = (b_{ij})_{i,j = 1}^n$, kde  $b_{ij} = a_{ij} - a_{i \bullet} -a_{\bullet j} + a_{\bullet \bullet}$, platí, že $\mathbb{B} = \mathcal{X}\mathcal{X}^\top$, 
pričom $\mathcal{X}$ je pôvodná matica dat s rozmermi $n \times p$, t.j. $\mathcal{X} = (\boldsymbol{x}_1, \dots, \boldsymbol{x}_n)^\top$, kde $\boldsymbol{x}_i = (x_{i1}, \dots, x_{ip})^\top \in \mathbb{R}^p$.</li><br>

<li>Ukážte, že platí $b_{ii}= a_{\bullet \bullet} - 2a_{i \bullet}$, pre $i = 1, \dots, n$.</li><br>

<li>Ukážte, že platí $\mathbb{B} = -\frac{1}{2} \mathcal{H} \mathbb{D}^2 \mathcal{H}$, kde $\mathcal{H}$ je tzv. centrovacia matica definovaná ako $\mathcal{H} = (\mathbb{I}_n - \frac{1}{n} \boldsymbol{1}_n\boldsymbol{1}_n^\top)$.</li>
</ul>






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

#### <font color = "#880000">Vzdialenosti a miery podobnosti v R funkcii `dist()`</font>
Pre podrobnosti viď help k funkcii `dist()`.

<ul>
<li><b>Euklidova vzdialenosť</b> - defaultná voľba;</li>

<li><b>Maximová vzdialenosť</b> - maximová, resp. supremová norma;</li>

<li><b>Manhattan vzdialenosť</b> - tzv. $L_1$ norma;</li>

<li><b>Canberra vzdialenosť</b> - vážena verzia Manhattan vzdialenosti;</li>

<li><b>Binárna vzdialenosť</b> - proporcia nenulových elementov vo vektore $\boldsymbol{x}−\boldsymbol{y}$;</li>

<li><b>Minkowského vzdialenosť</b> - štandardná $L_p$-norma (defaultná voľba je $p=2$, čo dáva Euklidovú vzdialenosť);</li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />

<br><br>

Naďalej využijeme defaultnú voľbu Euklidovej vzdialenosti, ale pozrieme sa na rozdiely, 
ktoré vzniknú štandardizáciou dat. <br><br>



```{r, warning=F,message=F}
MDS1 <- cmdscale(Dmatrix, k = 2)
dim(MDS1)

MDS2 <- cmdscale(DmatrixScaled, k = 2)
dim(MDS2)
```

Čo reprezentuju jednotlivé výstupy? Ako by ste hodnoty interpretovali?<br><br>

Je nutné pamätať na to, že data sú mnohorozmerné. Z pohľadu na scatterplot pôvodných data síce môžeme získať určitú informáciu, 
ale táto informácia je výrazne limitovaná mnohorozmerným charakterom dat (často môže byť dokonca hodne zavádzajúca). Ilustrujeme to na príklade troch konkrétnych lokalít, pričom data vizualizujeme štandardným scatterplotom, ale zakaždým zvolime iné dve premenné.<br><br>



```{r, warning=F,message=F, fig.width=10, fig.height = 10}
par(mfrow = c(2,2))
cols <- rep("blue", dim(bioData)[1])
cols[which(bioData[,1] == "Olse")] <- "red"
cols[which(bioData[,1] == "DesnSudk")] <- "green"
cols[which(bioData[,1] == "DyjeVran")] <- "green"


plot(bioData[,2], bioData[,3], xlab="SaprInd", ylab="Lital",  type="n", main = "Czech River Localities")
text(bioData[,2], bioData[,3], labels = bioData[,1], cex=.5, col = cols)

plot(bioData[,2], bioData[,11], xlab="SaprInd", ylab="Ntaxon",  type="n", main = "Czech River Localities")
text(bioData[,2], bioData[,11], labels = bioData[,1], cex=.5, col = cols)

plot(bioData[,2], bioData[,17], xlab="SaprInd", ylab="MDS_1",  type="n", main = "Czech River Localities")
text(bioData[,2], bioData[,17], labels = bioData[,1], cex=.5, col = cols)

plot(bioData[,17], bioData[,18], xlab="MDS_1", ylab="MDS_2",  type="n", main = "Czech River Localities")
text(bioData[,17], bioData[,18], labels = bioData[,1], cex=.5, col = cols)
```

Je zrejme, že na základe scatterplotov vyššie, nie je ľahké odpovedať na otázku, či vodné lokality Olše, Desna, a Dyje 
sú podobné -- t.j. blízko seba vzhľadom k datam, nie vzhľadom k ich skutočnej geografickej polohe. Tieto lokality sa zdajú 
byť dosť podobné vzhľadom k niektorým premenným (napr. prvý graf), ale na druhej strane sú dosť rozdielné vzhľadom k iným 
premenným -- napr. posledný graf.  <br><br>

S využitím dvojrozmerných scatterplotov je informácia, ktorú získame o štruktúre dat (čo sa týka aj vzájomnej podobnosti/nepodobnosti 
jednotlivých pozorovaní) výrazne limitovaná. 
Ako alternatívu ale môžeme využiť metódu mnohorozmerného škálovania, ktorá vizualizuje (síce iné) data v nižšom rozmere, ale zároveň sa snaží o čo najdôveryhodnejšie zobrazenie miery podobnosti a nepodobnosti z pôvodných dat.


Grafické zobrazenie pomocou mnohorozmerného škálovania (škálovanie do dvoch rozmerov): 

```{r, warning=F,message=F, fig.width=10}
plot(MDS1[,1], MDS1[,2], xlab="Coordinate 1", ylab="Coordinate 2",  type="n", main = "Czech River Localities")
text(MDS1[,1], MDS1[,2], labels = bioData[,1], cex=.7, col = cols)
```

A verzia na základe štandardizovaných dat: 

```{r, warning=F,message=F, fig.width=10}
plot(MDS2[,1], MDS2[,2], xlab="Coordinate 1", ylab="Coordinate 2",  type="n", main = "Czech River Localities")
text(MDS2[,1], MDS2[,2], labels = bioData[,1], cex=.7, col = cols)
```

Výsledky sa vizuálne hodne líšia v závislosti na tom, či sú pôvodné data štandardizované, alebo nie. Na druhej strane
interpretácia (vzhľadom k celkovej podobnosti a nepodobnosti jednotlivých lokalít) je viacmenej totožná. Graf reprezentuje 
škálovane vzdialenosti medzi jednotlivými lokalitami (vzialenosti vhľadom k podobnosti jednotlivých lokalít, nie geografické vzdialenosti). 
Napr. z pohľadu <font color = "red">Olše</font> sú jej najpodobnejšia lokality označené ako Moravka, Tyra a VidnVidn -- a to nezávisle na tom, či používame pôvodné data, alebo štandardizované. <br><br>


Celkový charakter troch lokalít (Olše, Desna, and Dyje) nie je možné posúdiť na základe dvojrozmerného scatterplotu. 
Na druhej strane, najviac relevantná informácia ohľadom podobnosti a nepodobnosti týchto troch lokalít 
je k dispozícii v scatterplotoch získaných na báze mnohorozmerného škálovania vyššie. Z tohto pohľadu sa teda zdá, 
že dané lokality sú skôr výrazne rozdielné -- určite výraznejšie, než sme získali pocit napr. na základe porovnania 
vzhľadom k indexom <i>Saprind</i> a <i>Lital</i> -- t.j. v prvom zo štvorice grafov. 
<br><br>

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

<li>Aplikujte metódu mnohorozmerného škálovania na dané data, ale využijte inú vzdialenosť pri aplikovaní funkcie `dist()`. Výsledky zobrazte a porovnajte.</li>

<li>Stejné lokality lze porovnať na základe rôznych chemických koncentrácii, ktoré boli na lokalitách namerané. 
Data s chemickými koncentráciami je možné načítať do programu R pomocou príkazu: 

```{r}
chemData <- read.csv("http://msekce.karlin.mff.cuni.cz/~maciak/NMST539/chemData.csv", header = T)
```
</li>


<li>Chemické a biologické premenné je možné zkombinovať dohromady a vizualizovať mieru podobnosti a nepodobnosti 
jednotlivých lokalít na základe komplexnejších bio-chemických premenných. </li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />


<br><br>

V následujúcom aplikujeme metódu mnohorozmerného škálovania samostatne na biologické premenné a samostatne na chemické premenné. 
Výsledok ale vykreslíme v jednom spoločnom grafe. Každá lokalita sa v grafe objavuje dvakrát -- čiernou farbou pre naškálovane lokality 
vzhľadom k podobnosti pôvodných biologických premenných a červenou farbou pre naškálovane lokality vhľadom k podobnosti nových, chemických premenných. 

```{r, fig.width=10}
chemData <- read.csv("http://msekce.karlin.mff.cuni.cz/~maciak/NMST539/chemData.csv", header = T)
ind <- match(chemData[,1], bioData[,1])
bioData0 <- bioData[ind, ]

MDS3 <- cmdscale(dist(bioData0[,2:18]), k = 2)
MDS4 <- cmdscale(dist(chemData[,2:8]), k = 2)

plot(c(MDS3[,1], MDS4[,1]), c(MDS3[,2], MDS4[,2]), xlab="Coordinate 1", ylab="Coordinate 2",  type="n", main = "Czech River Localities")
text(MDS3[,1], MDS3[,2], labels = bioData[,1], cex=.7)
text(MDS4[,1], MDS4[,2], labels = bioData[,1], cex=.7, col = "red")

legend(50, -20, legend = c("Bio Metric Measurements", "Chemical Concentrations"), col = c("black", "red"), pch = 15)
```

<br><br>

<hr size="3" width="100%" noshade style="color:#440000" align="left" />
#### <font color = "#880000">Otázky na zamyslenie</font>
<ul>
<li>Nakoľko jednoznačné je zobrazenie prezentované v obrázku vyššie?</li>

<li>Aké závery by bolo možné získať -- jednak z komplexného hľadiska (bio/chemické premenné dohromady) a tiež 
z pohľadu buď na chemické, resp. iba na biologické premenné?</li>

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

<br><br>


### <font color = "#880000"><b>2. Metrické škálovanie vs. nemetrické škálovanie</b></font>

Základný rozdiel medzi oboma postupmi je v tom, že prvý využíva maticu vzdialenosti -- pričom vzdialenosť je definovaná v zmysle štandardnej metriky -- zatial čo druhý postup využíva pouze maticu poradí (resp. maticu nejakej vhodnej monotónnej funkcie poradí) -- pričom poradia 
nesplňuju definíciu metriky. Pripomeňte si základné definitorické vlastnosti metriky/vzdialenosti. <br><br>

Opäť existujú rôzne môžnosti pre voľbu vhodnej monotónnej funkcie poradí. V následujúcom si stručne ilustrujeme nemetrické mnohorozmerné 
škálovanie -- tzv. Kruskalov algoritmus (Kruskal’s Non-metric Multidimensional Scaling). Z dôvodu lepšieho porovnania ale použijeme 
štandardnú maticu vzdialenosti. 


```{r}
library(MASS)
MDS2 <- isoMDS(Dmatrix, k=2)
```

Grafická vizualizácia: 

```{r, fig.width=10}
plot(MDS2$points[,1], MDS2$points[,2], xlab="Coordinate 1", ylab="Coordinate 2", type="n", main = "Czech River Localities")
text(MDS2$points[,1], MDS2$points[,2], labels = bioData[,1], cex=.7)
```

<br><br>

<hr size="3" width="100%" noshade style="color:#440000" align="left" />
#### <font color = "#880000">Otázky</font>
<ul>
<li>V akých situáciach je vhodné použiť nemetrické škálovanie -- non-metric MDS?</li>

<li>V akých situáciach by bola preferované štandardná verzia škálovania (na základe vzdialenosti/metriky)?</li>

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




<br><br>

V programe R je množstvo ďalších možností, ako aplikovať metódu mnohorozmerného škálovania na data. 
Okrem funkcii `cmdscale()` a `isoMDS()`, ktoré sme ilustrovali vyššie, sú k dispozícii napr.  funkcia `smacofSym()` v R knižnici ‘smacof’, alebo funkcia `wcmdscale()` v knižnici ‘vegan’, alebo `pco()` v R knižnici ‘ecodist’.<br><br>


<br><br>
<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: Cvičenie č.10 / 04.05.2021)

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

<ul>
<li>Vyberte si vhodný datový súbor (napr. data, ktoré ste uvažovali v prvej, štvrtej, alebo predchádzajúcich dvoch úlohach); </li>

<li>Aplikujte metódu mnohorozmerného škálovania a výsledky vizualizujte. Pokúste sa ilustrovať podobný prípad, kde 
z pohľadu niektorých dvoch premenných v pôvodných datach budú niektoré pozorovania vyzerať hodne podobne, zatiaľ čo mnohorozmerný 
charakter dat -- zrejmý po mnohorozmernom škálovaní -- bude opačný. </li>

<li> Riešenie umiestnite na svoju webovú stránku, <font color = "red">najneskôr v utorok, 04.05.2021, do 14:00</font>.</li>
</ul>
<hr size="3" width="100%" noshade style="color:#440000" align="left" />
<br><br>

<br><br>

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