### priklad 1
data <- read.delim("data-zapocet.txt", header = TRUE, sep = "") # nastaveni sep na mezeru/prazdny znak
str(data)
# uprava na faktorove promenne
data$sex <- factor(data$sex)
data$kino <- factor(data$kino)
# nastaveni urovni faktoru
levels(data$kino) <- c("nikdy", "vyjimecne", "obcas", "casto")
data$vzd <- factor(data$vzd)
levels(data$vzd) <- c("ZS", "SS", "SSm", "VOS", "VS")
str(data) # kontrola struktury dat, ze uz je vse tak, jak chceme

# promenna navsteva kina
# sloupcovy graf - nejzakladnejsi vykresleni bez upravu popisu os apod.
barplot(table(data$kino), col = 1:4)
# kontingencni tabulka - uplne jednoduse, bez pridanych popisku
# samozrejme pro prezentaci/publikaci bychom je pridali
tkino <- table(data$sex, data$kino)
tkino <- cbind(tkino, rowSums(tkino))
tkino <- rbind(tkino, colSums(tkino))
tkino
# 6 osob nechodi do kina nikdy, 8 muzu casto, zen vyjimecne 5

# promenna vzdelani 
# sloupcovy graf - nejzakladnejsi vykresleni bez upravu popisu os apod.
barplot(table(data$vzd), col = 1:5)
# kontingencni tabulka - uplne jednoduse, bez pridanych popisku
# samozrejme pro prezentaci/publikaci bychom je pridali
tvzd <- table(data$sex, data$vzd)
tvzd <- cbind(tvzd, rowSums(tvzd))
tvzd <- rbind(tvzd, colSums(tvzd))
tvzd
# muzi SSm 5, osoby s VS vzdelanim 12, zeny se zakladnim vzdelanim 2

# nominalni a ordinalni promenna - Crameruv koeficient
lsr:: cramersV(data$sex, data$vzd) #0.1256941 velmi slaba (nekdo by rekl i zanedbatelna) pozitivni zavislost
lsr:: cramersV(data$sex, data$kino) #0.3512501 slaba pozitivni zavislost

### priklad 2

data <- read.delim("./Data/19-more-samples-correlations-skull.txt")
str(data)
# nastaveni faktorovych promennych - jako faktor chceme prom. populace a pohlavi
data$pop <- factor(data$pop)
data$sex <- factor(data$sex)

# nemecka populace, promenna nose.H
nem <- data[data$pop == "nem",]
nem.nh <- nem$nose.H
mu <- mean(nem.nh) # 51.85 prumer
sigma <- sd(nem.nh) # 2.906888 sm. odchylka
n <- length(nem.nh) # 20 pocet pozorovani
range(nem.nh) # 44 57  rozsah
# Sturgesovo pravidlo
r <- 3.3 * log10(n) + 1 # 5.29 -- zaokrouhleno na 5
# rozsah promenne je 13, potrebuji delitelne 5, takze zaokrouhlim na 15
# proto do sekvence pro breaks musim dat jako krajni hodnoty 43 a 58
# v arg. "by" je delka kroku, v nasem pripade je to 15/5 = 3
b <- seq(43,58, by = 3)
hist(nem.nh, prob = T, breaks = b, ylim = c(0,0.16), ylab = "f(x)", 
     xlab = "vyska nosu muzu nemecke populace", main = "") 
# pro vykresleni hustoty musim mit ve funkci hist argument prob = T
# pomoci ylim si zmenim rozsah osy tak, aby pak slo videt vrchni cast krivek
# PS: opet jde o nejjednodussi histogram, nema posunute popisky x na stredy intervalu
nem.x <- seq(43, 58, length.out = 300)
# sekvenci pro vykresleni hustoty nastavuji bud na stejnem rozsahu jako tridici intervaly,
# nebo si to muzu trochu rozsirit, napr. od 42 do 59
# delku nastavuji aspon na 200 nebo 300 kvuli hladkemu vykresleni
lines(density(nem.nh), col = "blue") # jadrovy odhad hustoty
lines(nem.x, dnorm(nem.x, mu, sigma), col = "red", lty = 2) # hustota norm. rozdeleni

# sikmost, spicatost, dolni kvartil
(sikmost <- e1071::skewness(nem.nh, type = 3))    # -0.7626956
# vyrazne zaporne zesikmena data - levostranna sikmost, vetsina dat je nad prumerem
(spicatost <- e1071::kurtosis(nem.nh, type = 3))  # 0.5534502
# kladna spicatost - vice spicate nez normalni rozdeleni
quantile(nem.nh, 0.25, type = 2) # 50.5 - tj. 25 procent muzu nem. populace ma delku nosu 50.5 mm nebo mensi

# pravdepodobnost
1 - pnorm(52, mu, sigma) #0.4794231
# druha pravdepodobnost je 0 (vyplyva z definice spojiteho rozdeleni)


# cinska populace, promena intorb.B
cin <- data[data$pop == "cin", ]
cin.i <- cin$intorb.B 
mu <- mean(cin.i) # 23.842 prumer
sigma <- sd(cin.i) # 1.893 sm. odchylka
n <- length(cin.i) # 19 pocet pozorovani
range(cin.i) # 19 27 rozsah
# Sturgesovo pravidlo
r <- 3.3 * log10(n) + 1 # 5.21 -- zaokrouhlim na 5
# rozsah promenne je 8, potrebuji delitelne 5, takze zaokrouhlim na 10
# proto do sekvence pro breaks musim dat jako krajni hodnoty 18 a 28
# v arg. "by" je delka kroku, v nasem pripade je to 10/5 = 2
b.i <- seq(18,28, by = 2)
hist(cin$intorb.B, prob = T, breaks = b.i, main = "", ylab = "f(x)",
     xlab = "interorbitalni sirka u muzu cinske populace")
# pro vykresleni hustoty musim mit ve funkci hist argument prob = T
# pomoci ylim si zmenim rozsah osy tak, aby pak slo videt vrchni cast krivek
# PS: opet jde o nejjednodussi histogram, nema posunute popisky x na stredy intervalu
cin.x <- seq(18, 28, length.out = 300)
# sekvenci pro vykresleni hustoty nastavuji bud na stejnem rozsahu jako tridici intervaly,
# nebo si to muzu trochu rozsirit, napr. od 42 do 59
# delku nastavuji aspon na 200 nebo 300 kvuli hladkemu vykresleni
lines(density(cin.i), col = "blue") # jadrovy odhad hustoty
lines(cin.x, dnorm(cin.x, mu, sigma), col = "red", lty = 2) # hustota norm. rozdeleni

# horni kvartil, sikmost a spicatost
quantile(cin.i, 0.75, type = 2) # 25 - tj. 75 procent muzu ma interorb. sirku 25 mm nebo mensi 
(sikmost <- e1071::skewness(cin.i, type = 3))   # -0.53
# zaporne zesikmena data - levostranna sikmost, vetsina dat je nad prumerem
(spicatost <- e1071::kurtosis(cin.i, type = 3))  # 0.09
# velmi slaba kladna spicatost, data se spicatosti prilis nelisi od norm. rozdeleni
# (jsou jen zanedbatelne strmejsi/spicatejsi)

# pravdepodobnost 
pnorm(24, mu, sigma) # 0.5332309
# druha pravdepodobnost je 0 (vyplyva z definice spojiteho rozdeleni)