##########################################################################################
################################## SOFTWARE R - CAST 2 ###################################
##########################################################################################

# Nastaveni pracovniho adresare - napr.:
setwd("c:/Users/brozoval/Desktop/vyuka/2018/BIMAT/1. cviceni/")
getwd()

###########################################################################################
###############         Nacteni dat a jejich kontrola       ###############################
###########################################################################################

kardio <- read.table(file="Data_pro_R.txt", sep="\t", dec=".", header=T) # nacteni dat

dim(kardio)                       # pocet radku a sloupcu datove matice
head(kardio)                      # prvnich 10 radku tabulky
str(kardio)                       # sumarni informace o jednotlivych promennych
is(kardio)				                # typ objektu
names(kardio)				              # nazvy parametru

###########################################################################################
######################## Nacteni balicku ##################################################
###########################################################################################

install.packages("nortest")       # nacteni balicku pro testovani normality
library("nortest")
install.packages("DescTools")     # nacteni balicku pro znamenkovy test
library("DescTools")
install.packages("car")           # nacteni balicku pro Levenuv test
library(car)
###########################################################################################
################################## JEDNOVYBEROVE TESTY ####################################
###########################################################################################

# A) Testujeme stredni hodnotu parametru X, ktery ma zhruba normalni rozdeleni -> 
#     1) t-test: test prumeru pri neznamem rozptylu
#     2) z-test: test prumeru pri znamem rozptylu

# B) Testujeme stredni hodnotu parametru X, ktery nema normalni rozdeleni -> 
#     1) Wilcoxonuv test:
#        - predpoklad symetrie kolem medianu
#        - testuje shodu medianu s hodnotou c
#        - pracuje s poradim diferenci puvodnich hodnot od medianu -> nizsi sila ve srovnani s parametrickymi testy
#     2) Znamenkovy test: 
#        - bez predpokladu na rozlozeni dat
#        - testuje shodu medianu s hodnotou c
#        - pracuje s informaci, zda je hodnota nad/pod medianem -> nizsi sila ve srovnani s Wilcoxonovym testem

########## Priklad 1. "Two-tailed, one-sample test"
# Zadani: 
# Ov??te na hladin? v?znamnosti alpha=0.05, zda se systolick? tlak u pacient? v na?em souboru li?? od publikovan? hodnoty 140.

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# jednovyberovy
# b) Definujte nulovou a alternativni hypotezu:
#    H0: st?edn? hodnota = 140 mmHg, H1: st?edn? hodnota != 140 mmHg
# c) Splnuji data predpoklady pouziti parametrickeho testu? Overte graficky i pomoci testu.
hist(kardio$sys_tlak)

# Histogram s krivkou hustoty normalniho rozdeleni
x <- kardio$sys_tlak
h<-hist(x, col="gray", xlab="vyska",main="Histogram s krivkou hustoty normalniho rozdeleni")
xfit<-seq(min(x),max(x),length=length(unique(x)))
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="red", lwd=2) 

boxplot(kardio$sys_tlak)
qqnorm(kardio$sys_tlak) # Q-Q graf: teoreticky (za predpokladu X~N) vs. pozorovany kvantil

# Kolmogorovuv - Smirnovuv test: Lilieforsovu variantu testu pocitame vzdy, kdyz nezname stredni hodnotu a rozptyl dat
lillie.test(kardio$sys_tlak)

# p-hodnota < 0.05 -> zamitame H0, ze se data ridi normalnim rozdelenim. 
# Dle grafickeho zobrazeni lze usoudit, ze se data ridi zhruba normalnim rozdelenim, jsou symetricka, neobsahuji odlehla pozorovani,
# lze tedy testovat pomoci parametrickych testu.

# d) Spocitejte prumer a median testovanych parametru.
summary(kardio$sys_tlak)

# e) Testujte nulovou hypotezu - uvedte nazev pouziteho testu.

test.stat <- (mean(kardio$sys_tlak) - 140)/(sd(kardio$sys_tlak)/sqrt(90)) # vypocet testove statistiky 
# hodnota roste s rostoucim N, mensi variabilitou, vetsim efektem: rozdil pozorovaneho prumeru a testovane hodnoty

# interval spolehlivosti naseho vyberoveho prumeru z dat
kvantil <-  qt(1-0.05/2,90-1)     # kvantil Studentova rozdeleni
IS.dolni <- mean(kardio$sys_tlak) - kvantil*(sd(kardio$sys_tlak)/sqrt(90))
IS.horni <- mean(kardio$sys_tlak) + kvantil*(sd(kardio$sys_tlak)/sqrt(90))
IS.dolni;mean(kardio$sys_tlak);IS.horni 
# testovana hodnota 140 se nenachazi v 95% intervalu spolehlivosti vyberoveho prumeru -> H0 zamitame

?t.test
t.test(kardio$sys_tlak, mu=140, alternative="two.sided", conf.level=0.95) # jednovyberovy t-test

# f) Interpretujte vysledek testovani.
# p-hodnota < 0.05 -> zamitame nulovou hypotezu, ze je prumerny tlak pacientu 140 mmHg, prijimame alternavu, ze se tlak lisi od hodnoty 140 mmHg.

# f) Testujte nulovou hypotezu pomoci neparametrickeho testu - uvedte nazev pouziteho testu.
?wilcox.test
wilcox.test(kardio$sys_tlak,alternative="two.sided",mu=140,conf.level=0.95) # Wilcoxonuv test
?SignTest
SignTest(kardio$sys_tlak,alternative="two.sided",mu=140,conf.level=0.95) # znamenkovy test

# t-test: p=9.735e-06
# Wilcoxonuv test: p=1.313e-05
# znamenkovy test: p=0.0002565
# v situaci, kdy jsou splneny predpoklady parametrickych testu, maji tyto vetsi silu 
# (pravdepodobnost, ze zamitneme neplatnou H0) ve srovnani s testy neparametrickymi

########## Priklad 2. "One-tailed, one-sample test"
# Zadani:
# Masina plni lahve do objemu 500ml. Vyrobci se obavaji, ze masina dostatecne nenaplnuje lahve. Nahodne bylo vybrano 20 lahvi, u kterych byl zmeren objem kapaliny. 
# Ov??te na hladin? v?znamnosti alpha=0.05, zda je mnozstvi tekutiny v lahvich nizsi nez pozadovanych 500 ml.

bottles <- read.table(file="bottles.csv", sep=";", dec=".", header=T) # nacteni dat
dim(bottles)
head(bottles)

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# jednovyberovy
# b) Definujte nulovou a alternativni hypotezu:
#    H0: st?edn? hodnota >= 500 ml, H1: st?edn? hodnota < 500 ml
# c) Splnuji data predpoklady pouziti parametrickeho testu? Overte graficky i pomoci testu.

x <- bottles$Volume
h<-hist(x, col="gray", xlab="vyska",main="Histogram s krivkou hustoty normalniho rozdeleni")
xfit<-seq(min(x),max(x),length=length(unique(x)))
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="red", lwd=2) 

boxplot(bottles$Volume)

# Shapiruv-Wilkuv test - doporucovan pro mensi vzorky (N<20), muze byt moc prisny pro velke vzorky
shapiro.test(bottles$Volume)

# Kolmogorovuv - Smirnovuv test: Lilieforsovu variantu testu pocitame vzdy, kdyz nezname stredni hodnotu a rozptyl dat
lillie.test(bottles$Volume)

# p-hodnota > 0.05 -> nezamitame H0, ze se data ridi normalnim rozdelenim (-> muzeme testovat pomoci parametrickych testu)

# d) Spocitejte prumer a median testovanych parametru.
summary(bottles$Volume)

# e) Testujte nulovou hypotezu - uvedte nazev pouziteho testu.
t.test(bottles$Volume, mu=500, alternative="less", conf.level=0.95) # jednovyberovy t-test

# f) Interpretujte vysledek testovani.
# p-hodnota > 0.05 -> Nezamitame nulovou hypotezu, ze jsou lahve naplnovany 500 nebo vice ml tekutiny.
# 95% IS zahrnuje testovanou hodnotu 500 -> nezamitame H0.


########## Samostatny ukol c. 1
# Zadani:
# Chceme overit na hladine vyznamnosti alpha=0.05, zda lide v nasem souboru trpi nadvahou (tedy zda maji BMI vetsi nez 25).

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# jednovyberovy
# b) Definujte nulovou a alternativni hypotezu:
#    H0: st?edn? hodnota <= 25, H1: st?edn? hodnota > 25
# c) Splnuji data predpoklady pouziti parametrickeho testu? Overte graficky i pomoci testu, vysledky okomentujte.
hist(kardio$BMI)
boxplot(kardio$BMI)
summary(kardio$BMI)

# Lilieforsova varianta K-S testu
lillie.test(kardio$BMI)

# p-hodnota < 0.05 -> zamitame H0, ze se data ridi normalnim rozdelenim. 
# Dle grafickeho posouzeni lze vsak komentovat, ze rozlozeni je zhruba symetricke,
# prumer popisuje stred rozlozeni, lze tedy vyuzit parametrickych testu.

# d) Spocitejte median, prumer a geometricky prumer BMI.
med<-median(kardio$BMI,na.rm=T)
aritm<-mean(kardio$BMI,na.rm=T)
geom<-10^(mean(log10(kardio$BMI)))

hist(kardio$BMI)
abline(v=geom,col="red") # geometricky prumer lepe popisuje stred ve srovnani s aritmetickym prumerem
abline(v=aritm,col="green")
abline(v=med,col="blue")

# e) Testujte nulovou hypotezu pomoci parametrickeho i neparametrickeho testu - uvedte nazev pouziteho testu.
t.test(kardio$BMI, mu=25, alternative="greater", conf.level=0.95) # jednovyberovy t-test
wilcox.test(kardio$BMI, mu=25, alternative="greater", conf.level=0.95) # Wilcoxonuv test
SignTest(kardio$BMI, mu=25, alternative="greater", conf.level=0.95) # znamenkovy test

# f) Interpretujte vysledek testovani.
# p-hodnota < 0.05 -> nezamitame nulovou hypotezu, ze BMI nasi populace je <= 25.

# g) Testujte nulovou a alternativni hypotezu:
#    H0: st?edn? hodnota = 25, H1: st?edn? hodnota != 25 pomoci Wilcoxonova testu. 
# Interpretujte vysledek (proc vychazi jinak ve srovnani s jednostranym testem?).

wilcox.test(kardio$BMI, mu=25, alternative="two.sided", conf.level=0.95) # Wilcoxonuv test

# p < 0.05 -> zamitame H0
# -> jednostranny test testoval pouze jeden scenar: zda je BMI > 25, kdezto oboustranny test testuje oba smery asociace 
# = zda je BMI vetsi nebo mensi nez 25.

###########################################################################################
###################################### PAROVE TESTY #######################################
###########################################################################################

# Princip vypoctu parovych testu je identicky jednovyberovym testum, do vypoctu vstupuji diference parovych hodnot 
# (timto zredukujeme dva vektory do jednoho). 

########## Priklad 3. 
# Zadani:
# Chceme overit na hladine vyznamnosti alpha=0.05, ze lecba vedla ke zmene systolickeho tlaku.

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# parovy
# b) Definujte nulovou a alternativni hypotezu:
#    H0: (prumer_po_lecbe - prumer_pred_lecbou) = 0; 
#    H1: (prumer_po_lecbe - prumer_pred_lecbou) != 0
# c) Splnuji data predpoklady pouziti parametrickeho testu? Overte graficky i pomoci testu, vysledky okomentujte.

kardio$rozdil.tlaku <- kardio$sys_tlak_po_lecbe - kardio$sys_tlak

windows()
par(mfrow=c(1,2))
hist(kardio$rozdil.tlaku)
hist(kardio$rozdil.tlaku,breaks=seq(from=-4,to=1,by=1))

boxplot(kardio$rozdil.tlaku)
summary(kardio$rozdil.tlaku)

# Lilieforsova varianta K-S testu
lillie.test(kardio$rozdil.tlaku)

# p-hodnota < 0.05 -> zamitame H0, ze se data ridi normalnim rozdelenim. 

# d) Spocitejte prumer a median testovanych parametru (rozdilu hodnot). Co nam rika median?
summary(kardio$rozdil.tlaku) # u poloviny pacientu doslo ke snizeni o 2 mmHg

# e) Testujte nulovou hypotezu pomoci neparametrickeho testu - uvedte nazev pouziteho testu.

SignTest(kardio$rozdil.tlaku, mu=0, alternative="two.sided", conf.level=0.95) # znamenkovy test - data nejsou rozlozena symetricky okolo medianu
SignTest(kardio$sys_tlak_po_lecbe,kardio$sys_tlak,mu=0,alternative="two.sided", conf.level=0.95,paired=TRUE) # alternativni zapis

# f) Interpretujte vysledek testovani.
# p-hodnota < 0.05 -> zamitame nulovou hypotezu, ze po lecbe nedoslo ke zmene tlaku.

########## Samostatny ukol c. 2
# Zadani:
# Testujte na hladine vyznamnosti alpha=0.01, zda lecba vedla ke snizeni systolickeho tlaku v prumeru o 2 mmHg.

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# parovy
# b) Definujte nulovou a alternativni hypotezu:
#    H0: (prumer_po_lecbe - prumer_pred_lecbou) >= -2; 
#    H1: (prumer_po_lecbe - prumer_pred_lecbou) < -2

# a) Testujte nulovou hypotezu pomoci neparametrickeho testu - uvedte nazev pouziteho testu.
?SignTest
SignTest(kardio$rozdil.tlaku, mu=-2, alternative="less", conf.level=0.99) # znamenkovy test - data nejsou rozlozena symetricky okolo medianu

# f) Interpretujte vysledek testovani.
# p-hodnota > 0.01 -> nezamitame nulovou hypotezu, ze po lecbe doslo ke snizeni tlaku maximalne do 2 mmHg.

###########################################################################################
################################## DVOUVYBEROVE TESTY #####################################
###########################################################################################

# A) X ma v ramci obou skupin zhruba normalni rozdeleni -> 
# Testujeme, zda se rozdil strednich hodnot parametru X ve dvou nezavislych skupinach lisi o hodnotu c
#     1) skupiny maji srovnatelny rozptyl = homoskedasticita
#        - F-test(pouze pro dva vybery; vyzaduje X~N)
#        - Levenuv test (nevyzaduje X~N)
#        -> dvouvyberovy t-test 
#     2) skupiny nemaji srovnatelny rozptyl -> Welchova korekce dvouvyberoveho t-testu (r pocita defaultne)

# B) X nema v ramci obou skupin zhruba normalni rozdeleni  -> 
# Testujeme shodu distribucnich funkci parametru X ve dvou nezavislych skupinach -> Mannuv-Whitneyuv U test
#        - predpoklad stejneho rozlozeni dat v obou skupinach (muze se lisit posunutim)
#        - pracuje s poradim namisto puvodnich hodnot -> nizsi sila ve srovnani s t-testem

########## Priklad 4. 
# Zadani:
# Chceme overit na hladine vyznamnosti alpha=0.05, zda se systolicky tlak lisi podle pohlavi.

# Ukoly:
# a) Zvolte variantu testu: jednovyberovy x dvouvyberovy x parovy
# dvouvyberovy
# b) Definujte nulovou a alternativni hypotezu:
#      H0: (prumer_zeny - prumer_muzi) = 0; 
#      H1: (prumer_zeny - prumer_muzi) != 0
# c) Splnuji data predpoklady pouziti parametrickeho testu? Overte graficky i pomoci testu, vysledky okomentujte.

### overeni normality - graficky
# boxplot
boxplot(sys_tlak~pohlavi_rek,data=kardio)

# histogram
windows()
par(mfrow=c(1,2))
# zeny
x <- kardio$sys_tlak[which(kardio$pohlavi_rek=="Z")]
h<-hist(x, col="red", xlab="tlak (mmHg)",main="Zeny",breaks=c(seq(from=100,to=170,by=10)))
xfit<-seq(min(x),max(x),length=length(unique(x)))
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="red", lwd=2) 
# muzi
x <- kardio$sys_tlak[which(kardio$pohlavi_rek=="M")]
h<-hist(x, col="blue", xlab="tlak (mmHg)",main="Muzi",breaks=c(seq(from=100,to=170,by=10)))
xfit<-seq(min(x),max(x),length=length(unique(x)))
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="blue", lwd=2) 

# Q-Q graf: teoreticky (za predpokladu X~N) vs. pozorovany kvantil
windows()
par(mfrow=c(1,2))
qqnorm(kardio$sys_tlak[which(kardio$pohlavi_rek=="Z")],main="Zeny")
qqnorm(kardio$sys_tlak[which(kardio$pohlavi_rek=="M")],main="Muzi")

### overeni normality - pomoci testu
lillie.test(kardio$sys_tlak[which(kardio$pohlavi_rek=="Z")])
lillie.test(kardio$sys_tlak[which(kardio$pohlavi_rek=="M")])

### overeni shody rozptylu

# pomoci boxplotu
boxplot(sys_tlak~pohlavi_rek,data=kardio)

# Levenuv test
leveneTest(sys_tlak ~ pohlavi_rek, data=kardio)

# F-test
var.test(sys_tlak ~ pohlavi_rek,data=kardio)

# Data v ramci obou skupin nejsou normalne rozdelena, test nezamitl shodu rozptylu. 
# Pro nazornost ukazeme postup vypoctu parametrickeho i neparametrickeho testu.

# d) Spocitejte prumer a median testovanych parametru v ramci obou skupin.
aggregate(kardio$sys_tlak ~ kardio$pohlavi_rek, FUN = function(x) c(Mean=mean(x),Median=median(x)))

# e) Testujte nulovou hypotezu pomoci parametrickeho testu
#    - uvedte nazev pouziteho testu, interpretujte vysledek.
t.test(sys_tlak~pohlavi_rek,data=kardio) # t-test (defaultne pocitana Welchova korekce)
# p<0.05 -> zamitame Ho, prijimame platnost H1: mezi muzi a zenami je st. vyznamny rozdil v hladine systolickeho tlaku.
# IS pro rozdil: 8-20 nezahrnuje 0 -> zamitame H0

# f) Testujte nulovou hypotezu pomoci neparametrickeho testu
#    - uvedte nazev pouziteho testu,nulovou a alternativni hypotezu, interpretujte vysledek.
# H0: F(x)=F(y); H1: F(x)!=F(y)
wilcox.test(sys_tlak~pohlavi_rek,data=kardio,conf.level=0.95)  # Mannuv-Whitneyuv test
# p<0.05 -> zamitame Ho, prijimame platnost H1: mezi muzi a zenami je vyznamny rozdil v hladine systolickeho tlaku.


########## Samostatny ukol c. 3
# Zadani:
# Pomoci dvouvyberoveho t-testu overtena na hladine vyznamnosti testu a) alpha=0.05, b) alpha=0.01, 
# zda se systolicky tlak lisi u muzu a zen o 21 mm Hg.

# stanovate nulovou a alternativni hypotezu
#      H0: (prumer_zeny - prumer_muzi) = 21; 
#      H1: (prumer_zeny - prumer_muzi) != 21

# Spocitejte test a interpretujte vysledky pro uvedene hladiny vyznamnosti
# a) alpha = 0.05:
t.test(sys_tlak~pohlavi_rek,mu=21,data=kardio,conf.level=0.95) # H0 zamitame, protoze p-value<0.05 a CI neobsahuje 21
# b) alpha = 0.01:
t.test(sys_tlak~pohlavi_rek,mu=21,data=kardio,conf.level=0.99) # H0 nezamitame, protoze p-value>0.01 a CI obsahuje 21

########## Samostatny ukol c. 4
# Zadani:
# Chceme overit na hladine vyznamnosti alpha=0.05, zda je systolicky tlak u muzu vyssi nez u zen.

# stanovate nulovou a alternativni hypotezu
#      H0: (prumer_muzi - prumer_zeny) <= 0; 
#      H1: (prumer_muzi - prumer_zeny) > 0.

# Spocitejte test a interpretujte vysledky
t.test(sys_tlak~pohlavi_rek,mu=0,alternative="greater",data=kardio,conf.level=0.95) 
# H0 zamitame, protoze p-value<0.05 a CI nezahrnuje 0
# pozor - test bude vzdy srovnavat skupina 1 (prvni kategorie faktoru)-skupina 2 (druha kategorie faktoru)
# tedy muzi - zeny

########## Samostatny ukol c. 5
# Zadani:
# Pomoci Mannova-Whitneyho U testu na hladine vyznamnosti 0.05 overte, zda muzi a zeny dosahuji stejne hodnoty BMI.

# stanovate nulovou a alternativni hypotezu
# H0: F(x)=F(y) ... rozlozeni jsou v obou skupinach shodne; 
# H1: F(x)!=F(y) ... rozlozeni se mezi skupinami lisi. 

# Spocitejte test a interpretujte vysledky
wilcox.test(BMI~pohlavi_rek,data=kardio,conf.level=0.95)
# p<0.05 -> zamitame H0, pripoustime platnost H1 = muzi a zeny se v hladine BMI lisi.

###########################################################################################
############################### TESTOVANI PRO 3 A VICE SKUPIN #############################
###########################################################################################

# A) X ma v ramci vsech skupin zhruba normalni rozdeleni -> 
# Testujeme, zda se stredni hodnota parametru X u alespon jedne skupiny lisi
#     1) skupiny maji srovnatelny rozptyl = homoskedasticita
#        - Bartletuv test(vyzaduje X~N)
#        - Levenuv test (nevyzaduje X~N)
#        -> ANOVA "Analysis Of Variance" 

# B) X nema v ramci vsech skupin zhruba normalni rozdeleni -> Kruskaluv-Wallisuv test 
#        - analogie Mannova-Whietneyho U testu pro dva vybery

# overeni normality v ramci skupin a shody rozptylu mezi skupinami je analogicke s dvouvyberovymi testy

########## Priklad 5. 
# Zadani:
# Zjistete pomoci ANOVA, zda se pacienti kategorizovani do vekovych skupin (pod 30, 30-50, nad 50) lisi v hladine systolickeho tlaku.

# a) kategorizujte vek
kardio$vek.3kat <- 1+(kardio$vek>=30)+(kardio$vek>50) 
table(kardio$vek.3kat,useNA="ifany") # frekvencni tabulka 

# b) stanovte nulovou a alternativni hypotezu
# H0: stredni hodnoty tlaku jsou ve vsech trech skupinach stejne
# H1: stredni hodnota tlaku se alespon u jedne skupiny lisi

# C) provedte testovani a interpretujte vysledky 
anova.test <- aov(sys_tlak~vek.3kat,data=kardio)
summary(anova.test)
# p>0.05 -> nezamitame H0

# d) zjistete, ktere skupiny se od sebe lisi:
pairwise.t.test(kardio$sys_tlak,kardio$vek.3kat,p.adj="bonferroni")
TukeyHSD(aov(kardio$sys_tlak~as.factor(kardio$vek.3kat)))

# d) provedte testovani pomoci neparametrickeho testu a interpretujte vysledky 
kruskal.test(sys_tlak~vek.3kat,data=kardio)
# p>0.05 -> nezamitame H0

###########################################################################################
######################################### Korelace  #######################################
###########################################################################################

# A) X a Y ma zhruba normalni rozdeleni -> Pearsonuv koeficient korelace 
#        - vyjimka: lze pouzit i kdyz X!~N, pokud je cilem odhaleni shluku v datech/odlehlych hodnot 
# B) X a Y nema zhruba normalni rozdeleni -> Spearmanuv koeficient korelace 
#        - analogie k nepar. testum - pracuje pouze s poradim, ma tedy nizsi silu nez parametricky odhad


########## Priklad 6. 
# Zadani: Vyhodnotte vztah veku a systolickeho tlaku.

hist(kardio$vek) # meli bych testovat pomoci Spearmanova koeficientu korelace
hist(kardio$sys_tlak)

# Bodovy graf:
plot(kardio$vek,kardio$sys_tlak)

# Pearsonuv korelacni koeficient:
cor.test(kardio$vek,kardio$sys_tlak)
# r = 0.14, p>0.05 -> nezamitame H0, ze korelacni koeficient je roven 0 (neni vztah mezi parametry)

# Spearmanuv korelacni koeficient:
cor.test(kardio$vek,kardio$sys_tlak,method="spearman")
# r = 0.16, p>0.05 -> nezamitame H0, ze korelacni koeficient je roven 0 (neni vztah mezi parametry)

# Korelacni matice (spocita parove korelace vsech parametru):
cor(kardio[,13:16]) 

###########################################################################################
################################ kontingencni tabulky #####################################
###########################################################################################

# A) alespo? 80% bunek ma ocekavanou cetnost >5 -> Chi-kvadrat test
# B) pokud nejsou splneny predpoklady Chi-kvadrat test -> Fisheruv exaktni test

## Samostatny ukol c. 6
#Vyhodnotte vztah pohlavi a vysky (vysku vhodne kategorizujte: 1...<170, 2...170-180, 3...>180). 
# 1. Vytvorte kontingencni tabulku, ktera bude obsahovat pocty i %, z niz bude patrne, zda se v 
#    jednotlivych vyskovych kategoriich zastoupeni muzu a zen lisi.
# 2. Testujte asociaci v kontingencni tabulce.

kardio$vyska.3kat <- 1+(kardio$vyska>=170)+(kardio$vyska>180) 
table(kardio$vyska.3kat)

kt <- table(kardio$pohlavi_rek,kardio$vyska.3kat,useNA="ifany")
kt.procenta <- prop.table(kt,2)
kt;kt.procenta

# Chi-kvadrat test
?chisq.test
chisq.test(kt)$expected # je splnen predpoklad pouziti Chi-kvadrat test
chisq.test(kt)
# p<0.05 -> zamitame H0, ze se vyska u muzu a zen nelisi.

# Fisheruv exaktni test
fisher.test(kt)
# p<0.05 -> zamitame H0, ze se vyska u muzu a zen nelisi.
