Detta görs ofta genom att titta på:
Grupper av "liknande" observationer
Exempel: Finans, Biologi, Epidemiologi, Ekologi, …
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 |
stars(mtcars)
aplpack::faces(mtcars)
GGally::scatmat(trees)
GGally::scatmat(mtcars)
GGally::scatmat(randu)
rgl::plot3d(randu)
rgl::plot3d(randu)
corrplot::corrplot
\(X\) matris med \(d\) variabler i kolumner och \(n\) observationer på rader. Antag centrerad. Singulärvärdesuppdelning (SVD) av \(X\)
\[ X = UD V^T \]
\[ \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
TMD (Kaggle)
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 |
TMD
(normaliserade)Använd endast de fyra största singulärvärdena, \(\tilde{D}=\operatorname{diag}(d_1,d_2,d_3,d_4,0,...,0)\).
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 |
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
# 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
Vi vill hitta kluster av observationer/variabler som liknar varandra
scale
)scores
(Tiokamp)mtcars
mtcars