Multivariata och högdimensionella data

Variabler och observationer

  • Mål: Att beskriva och visualisera data
  • Detta görs ofta genom att titta på:

  • Samspel mellan variabler
  • Grupper av "liknande" observationer

Exempel: Finans, Biologi, Epidemiologi, Ekologi, …

Hur hittar vi liknande observationer?

head(mtcars, n = 5) %>% knitr::kable()
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

Glyfer stars(mtcars)

Glyfer aplpack::faces(mtcars)

Heatmap (standardiserade var.)

Linjer

Linjer

Samspel GGally::scatmat(trees)

Samspel GGally::scatmat(mtcars)

Samspel GGally::scatmat(randu)

Samspel rgl::plot3d(randu)

Samspel rgl::plot3d(randu)

Samspel corrplot::corrplot

Singulärvärdesuppdelning

\(X\) matris med \(d\) variabler i kolumner och \(n\) observationer på rader. Antag centrerad. Singulärvärdesuppdelning (SVD) av \(X\)

\[ X = UD V^T \]

  • \(U \text{ dim. } n\times p\) har ortonormala kolumner
  • \(D := \operatorname{diag}(d_1,\ldots, d_p),\: d_1\geq \ldots \geq d_p\geq 0\)
  • \(V \text{ dim. } p\times p\) är en ortogonal matris

Singulärvärdesuppdelning

\[ \begin{align*} X & = UD V^T = \sum_{i=1}^p u_id_iv_i^T\\ & \approx \sum_{i=1}^q u_id_iv_i^T = U_{1:n,1:q}D_{1:q}V_{1:q}, \end{align*} \] för \(q<p\).

mtcars utan cyl

mtcars färglagt cyl

Data TMD (Kaggle)

  • TMD Dataset - 5 seconds sliding window (Kaggle data)
  • Rörelse/Ljud från android telefoner.
  • p=14, n=5893.
df_tmp %>% 
  select(target, `sound#mean`, `android.sensor.gyroscope#mean`) %>%
  head(n = 3) %>% knitr::kable()
target sound#mean android.sensor.gyroscope#mean
Still 0.00000 0.0016508
Car 89.20021 0.0363257
Still 0.00000 0.0015246

Data TMD (normaliserade)

\(u_1\) och \(u_2\)

\(u_4\) och \(u_5\) ser mer ut som brus

Återskapa \(X\) med fåtal singulärvärde?

Använd endast de fyra största singulärvärdena, \(\tilde{D}=\operatorname{diag}(d_1,d_2,d_3,d_4,0,...,0)\).

Principalkomponenter

  1. \[\max_{v_1} \operatorname{Var}(X\times v_1),\: |v_1|=1\]
  2. \[\max_{v_2} \operatorname{Var}(X\times v_2),\: |v_2|=1,\: v_1\perp v_2 \]
  3. \[\max_{v_3} \operatorname{Var}(X\times v_3),\: |v_3|=1,\: v_1\perp v_2,\: v_1\perp v_3,\: v_2\perp v_3 \]

Principalkomponenter

  • Egenvektorerna till kovariansmatrisen \[X^TX v_i = \lambda_i v_i\]
  • Hur relaterar SVD och principalkomponenter? \[X^TX=(UD V^T)^TUD V^T=V D U^TU D V^T=VD^2V^T\]
  • Som tidigare så väljer ofta att visualisera \[U = X V\] vilket är "roterad data" med en otrogonal bas (ej oberoende)!

Tiokamp

Vi tänker titta på alla poäng-relaterade kolumner, finns i dataframe scores. Dessa borde korrelera!

library(GDAdata)
scores_ <- select(Decathlon, starts_with("P"), -Polevault)
scores <- mutate_all(scores_, scale)
head(scores_, n=3) %>% knitr::kable()
P100m Plj Psp Phj P400m P110h Ppv Pdt Pjt P1500
938 1061 773 859 896 911 880 732 757 752
839 975 870 749 887 878 880 823 863 741
814 866 841 887 921 939 819 778 884 691

Tiokamp

PCA - Bekräfta att matten stämmer:

mat_scores <- as.matrix(scores)
eigen_scores <- eigen(t(mat_scores) %*% mat_scores)
svd_scores <- svd(scores)
## [1] TRUE
  • Är egenvektorerna unika?
# principalkomponents analys, implementerat i 
pca_scores <- stats::prcomp(scores, retx = TRUE)
# all(abs(pca_scores$rotation) - abs(eigen_scores$vectors) < 10^(-10))

biplot "överplottad"

biplot

Klusteranalys

Vi vill hitta kluster av observationer/variabler som liknar varandra

  • Om två kolumnerna är nära varandra mäter variablerna samma storhet
  • Om två rader är nära varandra är observationerna lika
  • Vi begränsar oss till euklidiskt avstånd, kräver standardisering (scale)

Hierarkisk linkage

  1. Varje observation utgör ett kluster
  2. Slå ihop de två närmaste klustren, bestäm ny avståndsmatris.
  3. Upprepa steg 2 tills det bara finns ett kluster.

Avstånd mellan kluster

  • Complete: Största avståndent
  • Single: Minsta avståndet
  • Average: Medelavståndet

Visualisera med dendrogram scores (Tiokamp)

Visualisera med dendrogram, mtcars

Visualisera med dendrogram, mtcars

Heatmap sorterad efter klustring