'TO-DO' # nacteni dat mlrm-fat.txt, prohlednuti struktury, prip. odstraneni NA ## Vykresleni bodoveho diagramu pro data 'TO-DO' # "Skloneni bodu" z leveho dolniho rohu do praveho horniho rohu indikuje silnou # pozitivni korelaci, naopak "Skloneni bodu" z leveho horniho rohu do praveho dolniho # rohu indikuje silnou negativni korelaci. ## Vykresleni boxplotu 'TO-DO' # Zatim slouzi pouze pro ilustraci, protoze nemame standardizovana data. # Tj. kazda promenna je v jinych jednotkach! ## Vypocet korelacni matice R <- 'TO-DO' ## Bartlettuv test o uplne nezavislosti promennych. library(psych) n <- nrow(data) cortest.bartlett(R,n = n,diag = T) ## pomoci vzorce k <- ncol(data) # pocet promennych test.stat <- -n * log(det(R)) * (1 - (2 * k + 11) / (6 * n)) kvantil <- qchisq(0.95, df = k * (k - 1) / 2) # porovnavame test. statistiku s kritickym oborem ## PCA # PCA se v R provadi pomoci funkce prcomp(), do ktere vlozime nas datovy soubor. # Parametr center = T udava, zda chceme pracovat s centrovanymi daty (vetsinou ano, protoze # nas datovy soubor neni vycentrovany) a parametr scale. = T zase udava, zda chceme pracovat # s korelacni matici. data.PCA <- prcomp(data, center = T, scale. = T) data.PCA ## podil variability a kumulativni podil variability # pro jednotlive komponenty ziskame nejjednoduseji pomoci funkce summary 'TO-DO' ## sutinovy graf # Vykresluje rozptyly jednotlivych komponent # Pouzijeme funkci plot na vystup z fce prcomp() a zadame typ grafu "l". plot(data.PCA, type = "l") ## Kaiserovo kriterium # Zajima nas, ktere rozptyly jsou nad 1 # K vykresleni pouzijeme fci abline() (h znaci horizontalni primku) abline(h = 1, lty = 2, col = "blue") # Dale budeme pracovat s prvnimi dvema komponentami. # Pro vypocet korelace komponent s puvodnimi promennymi nejprve vezmeme # pozorovani v souradnich hlavnich komponent ($x v nasem listu) a # spocitame korelaci prostoru prvnich dvou komponent s datovym souborem data.in.pc <- data.PCA$x # pozorovani v souradnicich hlavnich komponent 'TO-DO'(data, data.in.pc[,1:2]) ## biplot # Vykresleni pozorovani a promennych v rovine prvnich dvou hlavnich komponent # Vstupem funkce je opet vystup z fce prcomp() # Parametr scale udava, jak graf skalujeme, # pouzivame-li korelacni matici pro vypocet komponent, nastavime jej na 0. biplot('TO-DO', scale = 0) # cim "vice jsou sipky rovnobeznejsi" s danou osou, # tim vetsi ma dana promenna korelaci s prislusnou PC # blizkost sipek pak udava korelaci jednotlivych promennych # (vice korelovane promenne maji sipky vic u sebe) ## reprodukovana a residualni korelacni matice # nejprve potrebujeme spocitat vlastni cisla - mozno 2 zpusoby: vl.cis <- (data.PCA$sdev^2)[1:2] vl.cis <- eigen(R)$values[1:2] # Hlavni komponenty najdeme jako sloupce data.PCA$rotation, vezmeme jen prvni dva. # Vlastni cisla musime naskladat do diagonalni matice (fce diag()), # %*% znaci maticove nasobeni R.reproduced <- data.PCA$rotation[,1:2] %*% diag(vl.cis) %*% t(data.PCA$rotation[,1:2]) # Rezidualni korelacni matici ziskame jako rozdil korelacni matice a reprodukovane # korelacni matice R.residual <- R - R.reproduced # Chceme, aby prvky matice R.residual byly (v absolutni hodnote) co nejmensi. 'TO-DO' ## samostatne provedte pro nereseny priklad