data <- 'TO-DO' # nacteni dat lrm-foot.txt 'TO-DO' # prohlednuti dat, odstraneni NA, uprava promenne sex na factor ## overeni dvourozmerne normality pomoci bodoveho diagramu ## prolozeneho elipsou spolehlivosti ## pouzijeme funkci dataEllipse z knihovny car ## spolehlivost zadavame pomoci argumentu level ## pro pekne vykresleni je potreba upravit rozsah os pomoci xlim a ylim car::dataEllipse(data$foot.L, data$body.H, level = 0.95, xlim = c(210, 300), ylim = c(1500, 1950), xlab = "Delka chodidla (mm)", ylab = "Telesna vyska (mm)") # chceme, aby co nejvice bodu bylo uvnitr elipsy cor('TO-DO') # vypocet korelacniho koeficientu mezi promennymi body.H a foot.L ## testovani H0, ze veliciny jsou nekorelovane - pouzijeme fci cor.test ## pozadovany typ koeficientu zadavame pomoci method cor.test(data$foot.L, data$body.H, method = "pearson") ####### Priklad 2 neck <- 'TO-DO' # nacteni dat, prohlednuti struktury, prip. odstraneni NA # vykresleni bodovych diagramu (bez promennych ID a sex) plot(neck[,3:8]) # Pro dvojice promennych spocitame korelacni a kovariancni matici. Pocitame # Pearsonuv korelacni koef., proto doplnte prislusnou metodu do uvozovek. cor(neck[,3:8], method = 'TO-DO') cov(neck[,3:8], method = 'TO-DO') # Nyni budeme chtit otestovat nulovost techto koeficientu # Pouzijeme funkci rcorr() z balicku Hmisc # Nacteme balicek Hmisc (pokud ho nemate, musite nejprve nainstalovat) library(Hmisc) # Funkce rcorr se musi pouzit pouzit na datovy typ "matice", proto z nasi tabulky # vytvorime matici pomoci funkce as.matrix(). # Pozadovany typ koeficientu je v argumentu type rcorr(as.matrix(neck[,3:8]), type = "pearson") ## Pro vypocet parcialnich korelacnich koeficientu (tj. korelace pri kontrole vlivu ostatnich promennych) ## pouzijeme funkci pcor z knihovny ppcor, pozadovany typ koeficientu zadavame do method # Nacteme (pripadne i nainstalujeme) knihovnu ppcor library(ppcor) pcor(neck[,3:8], method = "pearson") ## Koeficient vicenasobne korelace obvodu krku s ostatnimi promennymi # Nejprve spocitame (Pearsonovu) korelaci mezi neck.C a zbylymi promennymi cor.yx <- cor('TO-DO', neck[,3:7] , method = 'TO-DO') cor.yx # Nyni spocteme korelacni matici zbylych (vysvetlujicich) promennych cor.xx <- cor(neck[,3:7], method = 'TO-DO') cor.xx # Podle vzorce dopocitame koeficient vicenasobne korelace. # Ve vzorci vystupuje inverze matice, tu pocitame pomoci funkce solve() r.yx <- sqrt(cor.yx %*% solve(cor.xx) %*% t(cor.yx)) r.yx model <- lm(neck.C ~ body.W + body.H + waist.C + hip.C + antb.C, data = neck) y.odhad <- model$fitted.values (r.yx <- cor(neck$neck.C, y.odhad, method = "pearson")) # Vsimneme si jeste souvislosti mezi koeficientem vicenasobne korelace # a indexem determinace naseho modelu (koef. vicenasob. korelace je odmocninou ID). # Index determinace najdeme v summary(model) pod nazvem r.squared ID <- summary(model)$r.squared sqrt(ID) ## test hypotezy o nulovosti koeficientu vicenasobne korelace ## odpovida testu o vyznamnosti modelu jako celku, muzeme tedy pouzit informace v summary na model 'TO-DO' # Muzeme postupovat take vypoctem podle vzorce n <- nrow(neck) # pocet pozorovani k <- 5 # pocet vysvetlujicich promennych (F.obs <- (n - k - 1)/k * r.yx^2/(1 - r.yx^2)) # hodnota test. statistiky qf(0.95,df1 = k, df2 = n - k - 1) # Kriticky obor je W = (2.3272, Inf). # Vypocet p-hodnoty. Pouzije funkci pro hodnotu distribucni funkce F-rozdeleni, tedy pf. (1 - pf(F.obs, df1 = k, df2 = n - k - 1)) 'TO-DO' # samostatne vypracujte nereseny priklad