
########################################################
# Kvalitativni podaci 
########################################################
# Okvir sa podacima faithful
faithful
help(faithful)
head(faithful)

########################################################
# Sredina 
########################################################
# Odrediti sredinu za trajanje erupcija
trajanje <- faithful$eruptions
trajanje
trajanje.sredina <- mean(trajanje)
trajanje.sredina

########################################################
# Medijana 
########################################################
# Odrediti medijanu za trajanje erupcija
trajanje <- faithful$eruptions
trajanje
trajanje.medijana <- median(trajanje)
trajanje.medijana

########################################################
# Kvartil
########################################################
# Odrediti kvartile za trajanje erupcija
trajanje <- faithful$eruptions
trajanje.kvartili <- quantile(trajanje)
trajanje.kvartili

########################################################
# Percentil 
########################################################
# Odrediti 32-gi, 57-mi i 98-mi percentil za trajanje
trajanje <- faithful$eruptions
trajanje.percentili <- quantile(trajanje,
        c(0.32, 0.57, 0.98))
trajanje.percentili

# Odrediti 17-ti, 43-ci, 67-mi i 85-mi percentil za trajanje
trajanje <- faithful$eruptions
trajanje.percentili <- quantile(trajanje,
                                 c(0.17, 0.43, 0.67, 0.85))
trajanje.percentili

########################################################
# Opseg 
########################################################
# Odrediti velicinu opsega za trajanje
trajanje <- faithful$eruptions
opseg.velicina <- max(trajanje) - min(trajanje)
opseg.velicina

# Odrediti velicinu opsega za trajanje
trajanje <- faithful$eruptions
opseg <- range(trajanje)
opseg.velicina <- opseg[2] - opseg[1]
opseg.velicina

########################################################
# Opseg medju kvartilima 
########################################################
# Odrediti velicinu opsega medju kvartilima
# (po definiciji)
trajanje <- faithful$eruptions
trajanje.kvartili <- quantile(trajanje)
trajanje.kvartili
trajanje.opseg.medju.kvartilima <- trajanje.kvartili[[4]]-trajanje.kvartili[[2]]
trajanje.opseg.medju.kvartilima

# Odrediti velicinu opsega medju kvartilima
# (po definiciji) drugi nacin
trajanje <- faithful$eruptions
trajanje.kvartili <- quantile(trajanje)
trajanje.kvartili
trajanje.opseg.medju.kvartilima <- trajanje.kvartili[["75%"]]-trajanje.kvartili[["25%"]]
trajanje.opseg.medju.kvartilima

# Odrediti velicinu opsega medju kvartilima
# (koriscenjem IQR)
trajanje <- faithful$eruptions
trajanje.opseg.medju.kvartilima <- IQR(trajanje)
trajanje.opseg.medju.kvartilima

########################################################
# Dijagram tipa kutije (box plot)
########################################################
# Oformiti grafikon tipa kutije koji opisuje trajanja erupcija
trajanje <- faithful$eruptions
boxplot(trajanje, horizontal=TRUE)

########################################################
# Varijansa 
########################################################
# Odrediti varijansu za trajanje erupcija
trajanje <- faithful$eruptions
trajanje.varijansa <- var(trajanje)
trajanje.varijansa

########################################################
# Standardna devijacija 
########################################################
# Odrediti standardnu devijaciju za trajanje erupcija
trajanje <- faithful$eruptions
trajanje.standardna.devijacija <- sd(trajanje)
trajanje.standardna.devijacija

########################################################
# Kovarijansa 
########################################################
# Odrediti kovarijansu izmedju trajanja erupcija i cekanja
# u okviru sa podacima faithful
trajanje <- faithful$eruptions
cekanje <- faithful$waiting
kovarijansa <- cov(trajanje, cekanje)
kovarijansa

########################################################
# Koeficijent korelacije 
########################################################
# Odrediti koeficijent korelacije izmedju trajanja erupcija 
# i cekanja u okviru sa podacima faithful 
# (racuna se po definiciji)
trajanje <- faithful$eruptions
cekanje <- faithful$waiting
koeficijent.korelacije <- cov(trajanje, cekanje) / (sd(trajanje) * sd(cekanje))
koeficijent.korelacije

# Odrediti koeficijent korelacije izmedju trajanja erupcija 
# i cekanjau okviru sa podacima faithful 
# (racuna se funkcijom cor)
trajanje <- faithful$eruptions
cekanje <- faithful$waiting
koeficijent.korelacije <- cor(trajanje, cekanje)
koeficijent.korelacije

########################################################
# Centralni moment 
########################################################
# Odrediti treci centralni moment za trajanje erupcija
library(e1071)
trajanje <- faithful$eruptions
trajanje.treci.centralni.moment <- moment(trajanje, order=3, center=TRUE)
trajanje.treci.centralni.moment

########################################################
# Iskosenost  (skewness)
########################################################
# Odrediti iskosenost za trajanje erupcija
library(e1071)
trajanje <- faithful$eruptions
trajanje.iskosenost <- skewness(trajanje)
trajanje.iskosenost

########################################################
# Zakrivljenost (kurtosis) 
########################################################
# Odrediti zakrivljenost (koliko je glatka raspodela) 
# za trajanje erupcija
library(e1071)
trajanje <- faithful$eruptions
trajanje.kurtosis <- kurtosis(trajanje)
trajanje.kurtosis

########################################################
# Binomna raspodela 
# dbinom - gustina, pbinom - raspodela, 
# qbinom - kvantil, rbinom - generator pseudoslucajnih
########################################################
# Odrediti verovatnocu da student "na srecu" pogodi 
# tacno 4 odgovra na 12 pitanja 
# (za svako pitanje je ponudjeno 5 alternativa za odgovor)
tacna.4.od.12 <- dbinom(4, size=12, prob=0.2)
tacna.4.od.12

# Odrediti verovatnocu da student "na srecu" pogodi 
# ne vise od 4 odgovra na 12 pitanja 
# (za svako pitanje je ponudjeno 5 alternativa za odgovor)
tacna.do.4.od.12 <- dbinom(0, size=12, prob=0.2
                           )  + dbinom(1, size=12, prob=0.2
                                       ) + dbinom(2, size=12, prob=0.2
                    ) + dbinom(3, size=12, prob=0.2) + dbinom(4, size=12, prob=0.2)
tacna.do.4.od.12

# Odrediti verovatnocu da student "na srecu" pogodi 
# ne vise od 4 odgovra na 12 pitanja 
# (za svako pitanje je ponudjeno 5 alternativa za odgovor)
# Umesto binomne, koristi se kumulativna binomna raspodela
tacna.do.4.od.12 <- pbinom(4, size=12, prob=0.2)
tacna.do.4.od.12

########################################################
# Poasonova raspodela 
# dpois - gustina, ppois - raspodela, 
# qpois - kvantil, rpois - generator pseudoslucajnih
########################################################
# Neka 12 kola u proseku predje preko mosta za 1 minut.
# Odrediti verovatnocu da u datom minutu preko mosta
# predje 17 ili vise kola
verovatnoca.16.ili.manje <- ppois(16, lambda=12) # donji kraj
verovatnoca.17.ili.vise <- 1 - verovatnoca.16.ili.manje 
verovatnoca.17.ili.vise

# Neka 12 kola u proseku predje preko mosta za 1 minut.
# Odrediti verovatnocu da u datom minutu preko mosta
# predje 17 ili vise kola (alternativni nacin)
verovatnoca.17.ili.vise <- ppois(16, 
                                 lambda=12,
                                 lower=FALSE # gornji kraj
                                 ) 
verovatnoca.17.ili.vise

########################################################
# Uniformna raspodela 
# dunif - gustina, punif - raspodela, 
# qunif - kvantil, runif - generator pseudoslucajnih
########################################################
# Oformiti deset pseudoslucajnih brojeva izmedju 1 i 3
# ovaj niz pseudoslucajnih brojeva ima uniformnu raspodelu
slucajni <- runif(10, min=1, max=3)
slucajni

########################################################
# Eksponencijalna raspodela 
# dexp - gustina, pexp - raspodela, 
# qexp - kvantil, rexp - generator pseudoslucajnih
########################################################
# Neka je srednje vreme za obradu na kasi 3 minuta.
# Odrediti verovatnocu da je obrada zavrsena za manje od 2 minuta.
# Ovde se radi o eksponecionalnoj raspodeli sa brzinom 
# procesiranja 1/3 musterije po minuti.
verovatnoca <- pexp(2, rate=1/3)
verovatnoca

########################################################
# Normalna raspodela 
# dnorm - gustina, pnorm - raspodela, 
# qnorm - kvantil, rnorm - generator pseudoslucajnih
########################################################
# Neka se rezultati testova uklapaju u normalnu raspodelu
# sa sredinom 72 i sa stanadrdnom devijacijom 15.2.
# Odrediti procenat studenata koji su osvojili 84 ili vise bodova. 
verovatnoca <- pnorm(84, # vrednost
                      mean = 72, # sredina
                      sd = 15.2, # standardnd devijacija
                      lower.tail=FALSE # intersuje nas samo gornja strana
  )
procenat <- 100 * verovatnoca
staro <- options(digits=4)
procenat
options(staro)

########################################################
# Hi-kvadratna raspodela 
# dchisq - gustina, pchisq - raspodela, 
# qchisq - kvantil, rchisq - generator pseudoslucajnih
########################################################
# Odrediti 95-ti percentil Hi kvadratne raspodela sa 7 stepena slobode
# Koristi se kvantil f-ja hi kvadratne raspodele
percentil.95 <- qchisq(
  0.95, # koji se percentil racuna
  df = 7 # broj stepena slobode hi-kvadratne raspodele
  )
percentil.95

########################################################
# Studentova t raspodela 
# dt - gustina, pt - raspodela, 
# qt - kvantil, rt - generator pseudoslucajnih
########################################################
# Odrediti 2.5-ti i 97.5-ti percentil Studentove t raspodela 
# sa 5 stepena slobode
# Koristi se kvantil f-ja Studentove raspodele
percentili <- qt(c(0.025, 0.975), df = 5)
percentili

########################################################
# F raspodela 
# df - gustina, pf - raspodela, 
# qf - kvantil, rf - generator pseudoslucajnih
########################################################
# Odrediti 95-ti percentil F raspodela sa (5,2) stepena slobode
# Koristi se kvantil f-ja F raspodele
percentil.95 <- qf(
  0.95, # koji se percentil racuna
  df1 = 5, df2 = 2 # stepeni slobode F raspodele
)
percentil.95
