Uvoz podatkov

podatki <- read.table("./UE.csv", 
                      header = TRUE, 
                      sep = ";", 
                      dec = ",")

head(podatki)
##   ID Rezultat Pisanje
## 1  1       50     120
## 2  2       48     120
## 3  3       48      90
## 4  4       47      50
## 5  5       52      70
## 6  6       50     120

opis spremenljivk: -ID: oznaka študenta -Rezultat:rezultat dosežen na izpitu -Pisanje: čas pisanja v minutah

podatki1 <- podatki[ -4 , c(-1,-2) ] #odstranili smo 4. vrstico ter prvi in drugi stolpec

podatki2 <- podatki[  ,(-3)]
str(podatki[ , -1])
## 'data.frame':    31 obs. of  2 variables:
##  $ Rezultat: int  50 48 48 47 52 50 50 54 57 50 ...
##  $ Pisanje : int  120 120 90 50 70 120 120 65 95 100 ...
mean(podatki$Rezultat)
## [1] 66.22581

Ocenjevanje parametrov

#install.packages("psych")
library(psych)
describe(podatki[ , -1]) #odstanili smo stolpec za ID, ker za ID se ne računa povprečja. Me časa pisanja se vidi pod median 95. Polovica študentov je pisala 95 minut ali manj, druga polovica pa več.Variacijski razmik časa je 105 - razlika med min in max. Ali je porazdelitev asimetrična v levo ali desno? Asimetrična je v levo, saj je skew -0.92. Če je minus je vedno asimetrično v levo.
##          vars  n  mean    sd median trimmed   mad min max range  skew kurtosis   se
## Rezultat    1 31 66.23 28.84     60   63.24 17.79  20 189   169  2.32     8.00 5.18
## Pisanje     2 31 91.58 25.73     95   94.76 37.06  15 120   105 -0.92     0.61 4.62
install.packages("pastecs")
## Warning: package 'pastecs' is in use and will not be installed
library(pastecs)
round(stat.desc(podatki[ , -1]), 2)
##              Rezultat Pisanje
## nbr.val         31.00   31.00
## nbr.null         0.00    0.00
## nbr.na           0.00    0.00
## min             20.00   15.00
## max            189.00  120.00
## range          169.00  105.00
## sum           2053.00 2839.00
## median          60.00   95.00
## mean            66.23   91.58
## SE.mean          5.18    4.62
## CI.mean.0.95    10.58    9.44
## var            831.91  662.05
## std.dev         28.84   25.73
## coef.var         0.44    0.28
#razlaga: Če klikneš na 2 dobiš še naprej... KJe je večja variabilnost pri pisanju ali razultatu? To nam pove coef.var in sicer večje so razlike pri točkah, kot pri času pisanja ker je 0.44 več kot 0.28
summary(podatki[ , -1])
##     Rezultat         Pisanje      
##  Min.   : 20.00   Min.   : 15.00  
##  1st Qu.: 50.00   1st Qu.: 77.50  
##  Median : 60.00   Median : 95.00  
##  Mean   : 66.23   Mean   : 91.58  
##  3rd Qu.: 75.00   3rd Qu.:115.00  
##  Max.   :189.00   Max.   :120.00

Razlaga: prvi kvartil je 50 - četrtina študentov je dosegla 50 ali manj pik preostali pa več, to je ocena prvega kvartila

sapply(podatki[ , -1], FUN = mean) #če tukaj napišemo var namesto mean dobimo varianco za obe spremenljivki
## Rezultat  Pisanje 
## 66.22581 91.58065
mean(podatki$Rezultat)
## [1] 66.22581
#install.packages("modeest")
library(modeest)
## Registered S3 method overwritten by 'rmutil':
##   method         from 
##   plot.residuals psych
mlv(podatki$Rezultat) #most likely value - modus!
## [1] 50
hist(podatki$Rezultat, 
     main = "Porazdelitev doseženih točk na izpitu UE", #main je naslov grafa, xlab in ylab so imena osi, breaks so ločitve stolpcev
     xlab = "Točke", 
     ylab = "Frekvenca", 
     breaks = seq(from = 0, to = 200, by = 20))# če daš by=20 dobiš širše stolpce

Normalna porazdelitev

pnorm(80, mean = 62.13, sd = 17.99, 
      lower.tail = FALSE)
## [1] 0.1602747
mean = 62.13; sd = 17.99
lb = 80; ub = Inf

x <- seq(-4,4,length=100)*sd + mean
hx <- dnorm(x,mean,sd)

plot(x, hx, type="n", xlab="Točke", ylab="",
  main="", axes=FALSE)

i <- x >= lb & x <= ub
lines(x, hx)
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="blue") 

area <- pnorm(ub, mean, sd) - pnorm(lb, mean, sd)
result <- paste("P(",lb,"< Točke <",ub,") =",
   signif(area, digits=3))
mtext(result,3)
axis(1, at=seq(0, 100, 20), pos=0)

Intervalna ocena

ybar = mean(podatki$Rezultat); sd = sd(podatki$Rezultat); n = nrow(podatki)

se=sd/sqrt(n)

ybar_spodnja_t = ybar + qt(0.025, df=n-1)*se
ybar_zgornja_t = ybar + qt(0.975, df=n-1)*se

cat(c("95-odstotna intervalna ocena:", round(ybar_spodnja_t, 3), "< Mu <", round(ybar_zgornja_t, 3)))
## 95-odstotna intervalna ocena: 55.646 < Mu < 76.805

Graf kvantilov

boxplot(podatki[ , -1])

Čiščenje podatkov tukaj popravimo graf zgoraj z naslovom porazdelitev točk (hočemo se znebit tiste 200ke)

podatki <- read.table("./UE.csv", 
                      header = TRUE, 
                      sep = ";", 
                      dec = ",")

head(podatki)
##   ID Rezultat Pisanje
## 1  1       50     120
## 2  2       48     120
## 3  3       48      90
## 4  4       47      50
## 5  5       52      70
## 6  6       50     120
tail(podatki)
##    ID Rezultat Pisanje
## 26 26       74      95
## 27 27       74      95
## 28 28       76     120
## 29 29       44      45
## 30 30       52      92
## 31 31      189     110
boxplot(podatki[ , -1]) #spodnja črta je min, zgornja je max, spodnji rob sivega pravokotnika je prvi kvartil, zgornja tretji kvartil, debela pa je mediana. s krogcem je označena čudna enota tistih 198.Radi bi odstarnili krogce ker je to vrednost čisto xy...slovenski izraz za boxplot je grafikon kvantilov

library(psych)
describe(podatki[ , -1])
##          vars  n  mean    sd median trimmed   mad min max range  skew kurtosis   se
## Rezultat    1 31 66.23 28.84     60   63.24 17.79  20 189   169  2.32     8.00 5.18
## Pisanje     2 31 91.58 25.73     95   94.76 37.06  15 120   105 -0.92     0.61 4.62
  head(podatki[order(-podatki$Rezultat), ])#če bi radi razvrstili enote po spremenljivki, prikažimo tabelo po rezultatih, izpiše nam prvih 6 vrstic po decending order od najvišjih do najnižjih,če pa hočemo dobit od najnižjega do najvišjega zbrišemo minus pred podatki
##    ID Rezultat Pisanje
## 31 31      189     110
## 24 24       95     120
## 16 16       92     120
## 23 23       92     120
## 22 22       85      90
## 15 15       80      95
podatki_novi <- podatki[-31, ]#ta ukaz nam zbriše 31 vrstico v novi tabeli
boxplot(podatki_novi[ , -1])

tukaj ni več težave s krogci…

podatki[31, 2] <- 89 #vrednost, ki je v 31 vestici in 2 stolpcu nadomestim z 89, v tem primeru bo drugačna ar. sredina spodaj je druga cifra
mean(podatki$Rezultat)
## [1] 63
head(podatki[order(-podatki$Rezultat), ])
##    ID Rezultat Pisanje
## 24 24       95     120
## 16 16       92     120
## 23 23       92     120
## 31 31       89     110
## 22 22       85      90
## 15 15       80      95
boxplot(podatki[ , -1])

library(psych)
describe(podatki[ , -1])
##          vars  n  mean    sd median trimmed   mad min max range  skew kurtosis   se
## Rezultat    1 31 63.00 18.33     60   63.12 17.79  20  95    75 -0.07    -0.66 3.29
## Pisanje     2 31 91.58 25.73     95   94.76 37.06  15 120   105 -0.92     0.61 4.62