library (Hmisc) library (ppcor) library (corrplot) tab <- read.csv2 (file = "ukazatele.csv") summary (tab) X <- as.matrix (tab) dim (X) # Korelacni matice w <- rcorr (X) R <- w$r R.p <- w$P corrplot (R, p.mat = R.p) w <- pcor (X) Rp <- w$estimate Rp.p <- w$p.value corrplot (Rp, p.mat = Rp.p) # PCA pca <- princomp (X, cor = TRUE, scores = TRUE) pca str (pca) # Sutovy graf dev.off () screeplot (pca, npcs = 16, las = 3, main = "Scree plot") screeplot (pca, npcs = 10, las = 3, main = "Scree plot") screeplot (pca, npcs = 5, las = 3, main = "Scree plot") # Rozptyly pca$sdev**2 # Soucet rozptylu je rovny poctu promennych. Proc? sum (pca$sdev**2) cumsum (pca$sdev**2) / 16 # Porovnejte s vlastnimi cisly korelacni matice w <- eigen (R) # Prozkoumejte vlastni cisla korelacni matice a jejich vlastni vektory w$values U <- w$vectors U t(U) %*% U # Proc determinant korelacni matice vyjde veli blizky nule? det (R) # Graf podilu variability v zavislosti na poctu hlavnich komponent plot (1:16, cumsum (pca$sdev**2) / 16, type = "b", xlab = "r", ylab = "variability fraction") # Loadings = koeficienty linearni kombinace puvodnich promennych v bazi hlavnich komponent (R vypisuje jen ty >= 0.1) pca$loadings # Koeficienty v hlavnich komponentach pca$scores cor (pca$scores) det (cor (pca$scores)) w <- eigen (cor (pca$scores)) w$values U <- w$vectors U t(U) %*% U # Biplot prvnich dvou hlavnich komponent biplot (pca, choices = c (1,2)) # Totez v puvodni skale biplot (pca$scores[,1:2], t (t (pca$loadings[,1:2]) * pca$sdev[1:2]) ) # Vyzkousejte nyni jinou vartiantu, kdy PCA provedete na kovariancni matici pca2 <- princomp (X, cor = FALSE, scores = TRUE) pca2 sum (pca2$sdev**2) cumsum (pca2$sdev**2) / sum (pca2$sdev**2) # ... atd. # dalsi vypocty, grafu, vysvetleni... # Pouziti PCA na kovariancni matici nasich dat ale nedava prakticky smysl. Proc?