Andmestikuks on eesti keele tasemeeksamite kirjaliku osa loovkirjutised, mida hetkel andmestikus kokku 380. Kodutöös kasutasin tunnuseid “kirjtulemus” - eksami kirjutamisosa eest teenitud punktid ning “spikkus” - sõnade keskmine pikkus tekstis.
print(tekstid)
## # A tibble: 380 x 13
## kood keeletase kirjtulemus vanus sonad laused spikkus lpikkus S_osak lemmad
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 A2I_… 1 13 59 39 9 4.87 4.33 0.308 31
## 2 A2I_… 1 18 25 72 12 4.19 6 0.194 43
## 3 A2I_… 1 12 27 38 6 5.74 6.33 0.263 26
## 4 A2I_… 1 16 30 61 8 5.46 7.62 0.295 43
## 5 A2I_… 1 20 33 75 12 4.77 6.25 0.24 45
## 6 A2II… 1 17 48 31 6 5.10 5.17 0.452 26
## 7 A2II… 1 16 53 47 6 4.64 7.83 0.426 41
## 8 A2II… 1 14 23 40 6 4.78 6.67 0.35 32
## 9 A2II… 1 19 34 43 7 5 6.14 0.326 33
## 10 A2II… 1 18 35 57 8 4.60 7.12 0.351 42
## # … with 370 more rows, and 3 more variables: yld_kaanded <dbl>, V_Past <dbl>,
## # V_Neg <dbl>
Otsisin tunnust, mille väärtused jaotuksid sarnaselt normaaljaotusega.
Normaaljaotus on pidev jaotus. Näiteks sõnade ja lausete arv tekstis on diskreetsed arvtunnused, millel on võimalikud vaid täisarvulised väärtused. Sõnade ja lausete keskmine pikkus on aga pidevad arvtunnused - väärtuseks võivad olla kõik skaala punktid, ka murdarvud.
Tekstide jaotumine keskmise sõnapikkuse järgi on normaaljaotuse lähedane, ehkki paremal pool on veidi pikem “sabaots”.
tekstid %>% ggplot(aes(spikkus)) + geom_density(adjust=2, fill="gray")
tekstid %>% ggplot(aes(spikkus)) + geom_histogram(bins=20, fill="#00AFBB")
Leidsin tekstide sõnapikkuste aritmeetilise keskmise ja standardhälbe.
tekstid %>% summarise(kesk=mean(spikkus), sthalve=sd(spikkus))
## # A tibble: 1 x 2
## kesk sthalve
## <dbl> <dbl>
## 1 5.35 0.661
Genereerisin nende andmete alusel 100 000 väärtust ja koostasin normaaljaotusel põhineva sagedusjaotuse.
tibble(arvud=rnorm(100000, mean=5.35, sd=0.661)) %>%
ggplot(aes(arvud)) + geom_density(adjust=2, fill="gray")
Arvestades sama keskväärtuse ja standardhälbega, siis kui suures osas tekstidest on sõnad keskmiselt lühemad kui 4 tähte? Vastus: umbes 2% tekstidest.
pnorm(4, mean=5.35, sd=0.661)
## [1] 0.02055791
Kui suures osas tekstidest on sõnad keskmiselt lühemad kui 7 tähte? Vastus: 99% tekstidest.
pnorm(7, mean=5.35, sd=0.661)
## [1] 0.9937237
Kui suurel osal tekstidest jääb keskmine sõnapikkus vahemikku 4-7 tähte? Vastus: 97% tekstidel.
pnorm(7, mean=5.35, sd=0.661) - pnorm(4, mean=5.35, sd=0.661)
## [1] 0.9731658
Mis piiresse jääb 90% tekstide keskmine sõnapikkus? Vastus: 6,2 tähte.
qnorm(0.9, mean=5.35, sd=0.661)
## [1] 6.197106
25% tekstidest jääb sõnade keskmine pikkus alla 4,9 tähe ning 75% tekstidest on see lühem kui 5,8 tähte.
qnorm(0.25, mean=5.35, sd=0.661)
## [1] 4.904162
qnorm(0.75, mean=5.35, sd=0.661)
## [1] 5.795838
Tähistan eri värvi katkendlike joontega tekstide sõnapikkuste tegeliku jaotuse alumise ja ülemise kvartiili, mis langevad tõepoolest ligikaudu kokku 4,9- ja 5,8-tähelise pikkusega. Sellesse vahemikku peaks jääma umbes poolte tekstide keskmine sõnapikkus.
tekstid %>% ggplot(aes(spikkus)) + geom_density(adjust=2, fill="gray") +
geom_vline(aes(xintercept = quantile(spikkus)[2]), color="red", linetype="dashed", size=1) +
geom_vline(aes(xintercept = quantile(spikkus)[4]), color="blue", linetype="dashed", size=1)
Eksamite punktiskoorid jaotuvad sageli sarnaselt normaaljaotusega - kõige rohkem on keskpäraseid tulemusi, vähem nigela ja suurepärase skooriga töid. Siinses valimis on aga üksnes kirjutised, mille eest määrati vähemalt 60% võimalikest punktidest ehk eksami kirjutamisosa on sooritatud positiivsele tulemusele.
A2-taseme kirjutamisosa punktiskooride jaotus on justkui kahe küüruga kaamel, mille teine küür on kõrgem. Olen kasutanud tulpdiagrammi, sest punktiskoor on diskreetne täisarvuline väärtus, mida ei esitata tihedusfunktsiooniga.
tekstid %>% filter(keeletase==1) %>% group_by(kirjtulemus) %>% summarise(kogus=n()) %>%
ggplot(aes(kirjtulemus, kogus)) + geom_col(fill="#00AFBB")
B1- ja B2-tasemel hakkab silma vastupidine tendents, skoorid jäävad pigem vahemiku alumisse otsa. Kõige selgem on see suundumus C1-tasemel, kus skooride jaotumine on Poissoni jaotuse lähedase kujuga.
tekstid %>% filter(keeletase==4) %>% group_by(kirjtulemus) %>% summarise(kogus=n()) %>%
ggplot(aes(kirjtulemus, kogus)) + geom_col(fill="#00AFBB")
A2-taseme kirjutamisosa tulemus saab olla 12 kuni 20 punkti. Tekstide tegelik jaotumine punktiskoori järgi + iga skoori osakaal:
tekstid %>% filter(keeletase==1) %>% group_by(kirjtulemus) %>%
summarise(kogus=n()) %>% mutate(osakaal=kogus/sum(kogus))
## # A tibble: 9 x 3
## kirjtulemus kogus osakaal
## <dbl> <int> <dbl>
## 1 12 5 0.05
## 2 13 15 0.15
## 3 14 8 0.08
## 4 15 10 0.1
## 5 16 9 0.09
## 6 17 17 0.17
## 7 18 17 0.17
## 8 19 9 0.09
## 9 20 10 0.1
A2-taseme tekste on kokku 100. Võimalikke väärtusi on valimis 9, aga kuna 0 ei lähe arvesse, on seeria pikkus 8. Eksaminandid on kokku teeninud 1627 punkti võimalikust 2000 punktist. Kuna aga siinses valimis saaks eksaminandid teenida minimaalselt 1200 punkti ja maksimaalselt 2000, siis on tegelik punktivahemik 800 punkti. Nendest miinimumlävendit ületavast 800 punktist on teenitud 1627 - 1200 = 427 punkti ehk 53,375%. Seda võib tõlgendada kui lisapunktide teenimise tõenäosust.
tekstid %>% filter(keeletase==1) %>% summarise(summa=sum(kirjtulemus))
## # A tibble: 1 x 1
## summa
## <dbl>
## 1 1627
427 / 800
## [1] 0.53375
Arvestame, et 12 punkti on 0 lisapunkti, 13 punkti 1 lisapunkt, 14 punkti 2 lisapunkti jne. Kui suur on 12 punkti (0 lisapunkti) teenimise tõenäosus, kui punktide jaotumine on juhuslik? Tulemus on 0,2% - väiksem kui tegelik osakaal (5%).
pbinom(0, 8, 0.53375)
## [1] 0.002233319
Kuni 15 punkti (3 lisapunkti) teenimise tõenäosus on 29,2%, selliste tekstide osakaal tegelikus andmestikus on 38%.
pbinom(3, 8, 0.53375)
## [1] 0.2922633
Kuni 17 punkti (5 lisapunkti) teenimise tõenäosus on 80,7%, selliste tekstide osakaal tegelikus andmestikus on 64%.
pbinom(5, 8, 0.53375)
## [1] 0.8066375
30% eksaminandide kokkusaamiseks tuleks teoreetiliselt kaasata 12-16 punkti (0-4 lisapunkti) saanud eksaminandid. Tegelikult tuleb 30% täis 15 punkti (3 lisapunkti) juures.
qbinom(0.3, 8, 0.53375)
## [1] 4
Leidsin iga võimaliku punktiskoori kohta nende teoreetilise osakaalu juhusliku jaotumise korral. Sarnane on 14 punkti saamise tõenäosus (8%), üsna lähedane ka 18 punkti tõenäosus (14% vs. 17%). Üldiselt ei ole osakaalud sarnased. Järeldus: eksamipunktid ei jagune juhuslikult, vaid süsteemselt.
sapply(0:8, function(nr){dbinom(nr, 8, 0.53375)})
## [1] 0.002233319 0.020453130 0.081949607 0.187627251 0.268488057 0.245886113
## [7] 0.140741783 0.046033505 0.006587234
Eeldan, et C1-taseme kirjutamisosa punktide jaotumine on sarnane Poissoni jaotusega. Leidsin tekstide jaotumise punktiskoori järgi ja eri skooride osakaalud. Minimaalne positiivse soorituse skoor on 15 ja maksimumskoor 25, seega on 11 võimalikku väärtust ja seeria pikkus 10.
tekstid %>% filter(keeletase==4) %>% group_by(kirjtulemus) %>%
summarise(kogus=n()) %>% mutate(osakaal=kogus/sum(kogus))
## # A tibble: 11 x 3
## kirjtulemus kogus osakaal
## <dbl> <int> <dbl>
## 1 15 26 0.325
## 2 16 13 0.162
## 3 17 13 0.162
## 4 18 7 0.0875
## 5 19 4 0.05
## 6 20 6 0.075
## 7 21 2 0.025
## 8 22 1 0.0125
## 9 23 3 0.0375
## 10 24 3 0.0375
## 11 25 2 0.025
Kokku on C1-tasemel kirjutamisülesande eest saadud 1396 punkti. Kirjutisi on valimis 80. Maksimaalselt olnuks võimalik saada 2000 punkti, minimaalselt 1200. Võimalikust 800 punktist, mis miinimumlävendile lisaks saab teenida, on saadud 1396 - 1200 = 196 punkti. Teksti kohta on teenitud 2,45 lisapunkti.
tekstid %>% filter(keeletase==4) %>% summarise(summa=sum(kirjtulemus))
## # A tibble: 1 x 1
## summa
## <dbl>
## 1 1396
tekstid %>% filter(keeletase==4) %>% summarise(kogus=n())
## # A tibble: 1 x 1
## kogus
## <int>
## 1 80
196 / 80
## [1] 2.45
Kui sündmuse sagedus on 2,45, siis 15 punkti (0 lisapunkti) saamise tõenäosus on 8,6%. Tegelik osakaal on 32,5%.
ppois(0, 2.45)
## [1] 0.08629359
Kuni 17 punkti (2 lisapunkti) saamise tõenäosus on 55,6%, tegelik osakaal on sellistel tekstidel aga 64,9%.
ppois(2, 2.45)
## [1] 0.5567015
Kuni 20 punkti (5 lisapunkti) saamise tõenäosus on 96,1%, tegelik osakaal on sellistel tekstidel 86,15%.
ppois(5, 2.45)
## [1] 0.9612358
Leidsin iga võimaliku punktiskoori kohta nende teoreetilise osakaalu Poissoni jaotuse järgi. Tõenäosus ja tegelik osakaal on sarnased 16 punkti (21,1% vs. 16,2%), 20 punkti (6,3% vs. 7,5%), 21 punkti (2,6% vs. 2,5%) ja 22 punkti (0,91% vs. 1,25%) puhul.
sapply(0:10, function(nr){dpois(nr, 2.45)})
## [1] 0.0862935865 0.2114192869 0.2589886265 0.2115073783 0.1295482692
## [6] 0.0634786519 0.0259204495 0.0090721573 0.0027783482 0.0007563281
## [11] 0.0001853004
Leidsin ka ennustatavad absoluutväärtused ning võrdlesin hii-ruut testi abil juhuslikke ja tegelikke väärtusi. Väärtuste sarnasuse tõenäosus on nullilähedane, seega võib järeldada, et need erinevad üldistataval määral. Kokkuvõte taas, et punktiskoorid ei allu juhuslikkusele.
juhuslikud <- sapply(0:10, function(nr){dpois(nr, 2.45)}) * 80
round(juhuslikud)
## [1] 7 17 21 17 10 5 2 1 0 0 0
tegelikud <- tekstid %>% filter(keeletase==4) %>% group_by(kirjtulemus) %>%
summarise(kogus=n()) %>% .$kogus
print(tegelikud)
## [1] 26 13 13 7 4 6 2 1 3 3 2
jsuhe <- juhuslikud/sum(juhuslikud)
chisq.test(tegelikud, p=jsuhe)
## Warning in chisq.test(tegelikud, p = jsuhe): Chi-squared approximation may be
## incorrect
##
## Chi-squared test for given probabilities
##
## data: tegelikud
## X-squared = 509.94, df = 10, p-value < 2.2e-16