Uvoz podatkov

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

head(podatki) #Prikaz prvih 6 vrstic
##   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
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 ...

Ocenjevanje parametrov

#install.packages("psych")
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

V povprečju so študentje pisali 91,58 minute. Polovica jih je pisalo 60 točk ali manj, druga polovica pa več (median) Trim pomeni porezani osamelci tisti podatki ki zelo odstopajo (10% najmanjših in največjih vrednosti), sicer pa to ne bomo gledali Najkrajši čas pisanja je bil 15 min, najdaljši pa 120. Variacijski razmik je range (105) Porazdelitev je asimetrična v levo (ker je skew koeficient porazdelitve negativen).Glej spodaj histogram.

hist(podatki$Pisanje)

#install.packages("pastecs")
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

nbr.val pomeni number of valid cases (dejansko število vrednosti) nbr.null pove, če je kakšna vrednost 0 nbr.na number not available so manjkajoče vrednosti (v našem primeru jih ni) SE.mean je ocena standarde napake aritmetične sredine var je ocena variance std.dev je standardni odklon coef.var je koeficient variacije (uporaben če so spremenljivke izražene v različnih enotah in niso primerljive npr tukaj je rezultat v številu in pisanje v minutah, tukaj vidimo katera bolj varira)

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

1st Qu. je prvi kvartil: 25% je pisalo 50 ali manj, preostali pa več kot 50

sapply(podatki[ , -1], FUN = mean)
## 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)
## [1] 50

mlv pomeni most likely value in to je modus (največ je bilo takih, ki so dosegli 50 točk)

hist(podatki$Rezultat, 
     main = "Porazdelitev doseženih točk na izpitu UE", 
     xlab = "Točke", 
     ylab = "Frekvenca", 
     breaks = seq(from = 0, to = 200, by = 10))

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])

1.kvartil je cca 50, zgornji del boxa je 3.kvartil, debela črta je mediana, krogec je potencialni osamelec.

Odstrani 31. enoto in ustvari novo tabelo s podatki, ki se imenuje podatki1

podatki1 <- podatki[-31, ]
boxplot(podatki1[ , -1])

Spremeni vrednost 189 v 89 in shrani v objekt podatki2

podatki[31, 2] <- 89

podatki2 <- podatki

Čiščenje 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
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])

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), ])
##    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, ]
podatki[31, 2] <- 89
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