Andmed: 351 eesti keele tasemeeksamite kirjutist, esindatud tasemed A2 (1), B1 (2), B2 (3) ja C1 (4). Tunnused iseloomustavad tekstide pikkust sõnades ja lausetes, sõnade ja lausete pikkust, ainulaadsete sõnade arvu, käänete üldarvu, nimetavas käändes sõnade osakaalu, olevikus ja lihtminevikus tegusõnade osakaalu ning abitegusõnade osakaalu.

print(tekstid)
## # A tibble: 351 x 12
##    kood  keeletase sonad laused spikkus lpikkus lemmad yld_kaanded yld_Nom
##    <chr>     <dbl> <dbl>  <dbl>   <dbl>   <dbl>  <dbl>       <dbl>   <dbl>
##  1 A2I_…         1    39      9    4.87    4.33     31           4   0.410
##  2 A2I_…         1    72     12    4.19    6        43           7   0.306
##  3 A2I_…         1    38      6    5.74    6.33     26           8   0.184
##  4 A2I_…         1    61      8    5.46    7.62     43           7   0.279
##  5 A2I_…         1    75     12    4.77    6.25     45          10   0.293
##  6 A2II…         1    31      6    5.10    5.17     26           7   0.323
##  7 A2II…         1    47      6    4.64    7.83     41           6   0.426
##  8 A2II…         1    40      6    4.78    6.67     32           5   0.4  
##  9 A2II…         1    43      7    5       6.14     33           8   0.372
## 10 A2II…         1    57      8    4.60    7.12     42           7   0.316
## # … with 341 more rows, and 3 more variables: V_Pres <dbl>, V_Past <dbl>,
## #   V_aux <dbl>

Et näha, kuidas sõnade pikkus tekstides keeleoskustasemeti jaotub, leian juhuvalikuga igal tasemel 1000 korda 50 teksti keskmise sõnapikkuse. Talletan andmed tabelis, mille põhjal koostan võrdleva joonise.

A2_keskmised <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==1) %>% sample_n(50) %>% summarise(k=mean(spikkus)) %>% .$k
})

B1_keskmised <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==2) %>% sample_n(50) %>% summarise(k=mean(spikkus)) %>% .$k
})

B2_keskmised <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==3) %>% sample_n(50) %>% summarise(k=mean(spikkus)) %>% .$k
})

C1_keskmised <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==4) %>% sample_n(50) %>% summarise(k=mean(spikkus)) %>% .$k
})

keskmised <- tibble(A2=A2_keskmised, B1=B1_keskmised, B2=B2_keskmised, C1=C1_keskmised)
print(keskmised)
## # A tibble: 1,000 x 4
##       A2    B1    B2    C1
##    <dbl> <dbl> <dbl> <dbl>
##  1  4.92  5.02  5.28  6.28
##  2  4.90  5.07  5.29  6.27
##  3  4.89  5.10  5.26  6.26
##  4  4.83  5.03  5.22  6.35
##  5  4.87  5.15  5.30  6.27
##  6  4.88  5.06  5.29  6.31
##  7  4.90  5.09  5.28  6.27
##  8  4.84  5.14  5.30  6.27
##  9  4.86  5.09  5.30  6.25
## 10  4.93  5.04  5.26  6.29
## # … with 990 more rows
keskmised %>% gather(keeletase, keskmine) %>% ggplot(aes(keskmine, color=keeletase)) + geom_density()

Võrdlen paarikaupa tasemete keskmist sõnapikkust. Tõenäosus, et A2- ja B1-tasemel on sõnad sarnase pikkusega, on 0,48%. 95% tõenöosusega on A2-tasemel sõnad keskmiselt 0,06 kuni 0,3 tähte lühemad. Tulemus on statistiliselt oluline, kuid kas ka eluliselt?

t.test(tekstid %>% filter(keeletase==1) %>% .$spikkus,
       tekstid %>% filter(keeletase==2) %>% .$spikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 1) %>% .$spikkus and tekstid %>% filter(keeletase == 2) %>% .$spikkus
## t = -2.8548, df = 181.88, p-value = 0.004806
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.32299017 -0.05898893
## sample estimates:
## mean of x mean of y 
##  4.887698  5.078688

Tõenäosus, et B1- ja B2-tasemel on sõnad sarnase pikkusega, on 0,16%. 95% tõenäosusega on B1-tasemel sõnad keskmiselt 0,08 kuni 0,3 tähte lühemad.

t.test(tekstid %>% filter(keeletase==2) %>% .$spikkus,
       tekstid %>% filter(keeletase==3) %>% .$spikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 2) %>% .$spikkus and tekstid %>% filter(keeletase == 3) %>% .$spikkus
## t = -3.2169, df = 156.99, p-value = 0.001574
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.32166672 -0.07692899
## sample estimates:
## mean of x mean of y 
##  5.078688  5.277986

Sõnade sarnase pikkuse tõenäosus B2- ja C1-tasemel on vaid 0.00000000000000022 ehk nullilähedane. 95% tõenäosusega on B2-tasemel sõnad keskmiselt 0,9 kuni 1,1 tähe võrra lühemad. Erinevus on juba märgatav.

t.test(tekstid %>% filter(keeletase==3) %>% .$spikkus,
       tekstid %>% filter(keeletase==4) %>% .$spikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 3) %>% .$spikkus and tekstid %>% filter(keeletase == 4) %>% .$spikkus
## t = -17.676, df = 148.23, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.1463781 -0.9158264
## sample estimates:
## mean of x mean of y 
##  5.277986  6.309088

Võrdlen sarnaselt lausete pikkust keeleoskustasemeti. Esmalt koostan joonise tekstide jaotumisest vastavalt keskmisele lausepikkusele.

A2_kesklaused <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==1) %>% sample_n(50) %>% summarise(k=mean(lpikkus)) %>% .$k
})

B1_kesklaused <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==2) %>% sample_n(50) %>% summarise(k=mean(lpikkus)) %>% .$k
})

B2_kesklaused <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==3) %>% sample_n(50) %>% summarise(k=mean(lpikkus)) %>% .$k
})

C1_kesklaused <- sapply(1:1000, function(x){
  tekstid %>% filter(keeletase==4) %>% sample_n(50) %>% summarise(k=mean(lpikkus)) %>% .$k
})

keskmised <- tibble(A2=A2_kesklaused, B1=B1_kesklaused, B2=B2_kesklaused, C1=C1_kesklaused)
print(keskmised)
## # A tibble: 1,000 x 4
##       A2    B1    B2    C1
##    <dbl> <dbl> <dbl> <dbl>
##  1  5.97  8.19  11.3  13.5
##  2  6.09  8.38  11.0  13.0
##  3  5.95  8.26  11.6  13.2
##  4  5.87  7.99  11.2  13.1
##  5  5.96  8.05  11.5  13.6
##  6  5.97  8.13  11.1  13.8
##  7  5.90  7.92  11.4  13.4
##  8  5.97  8.07  11.3  13.8
##  9  5.90  7.81  11.9  13.4
## 10  5.68  8.24  11.3  13.7
## # … with 990 more rows
keskmised %>% gather(keeletase, keskmine) %>% ggplot(aes(keskmine, color=keeletase)) + geom_density()

Tõenäosus, et laused on A2- ja B1-tasemel sarnase pikkusega, on 0.00000000000002629%. 95% tõenäosusega on A2-tasemel laused keskmiselt 1,8 kuni 2,8 sõna jagu lühemad.

t.test(tekstid %>% filter(keeletase==1) %>% .$lpikkus,
       tekstid %>% filter(keeletase==2) %>% .$lpikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 1) %>% .$lpikkus and tekstid %>% filter(keeletase == 2) %>% .$lpikkus
## t = -8.5095, df = 137.84, p-value = 2.629e-14
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.823222 -1.758570
## sample estimates:
## mean of x mean of y 
##  5.925277  8.216172

B1- ja B2-taseme lausete sarnase pikkuse tõenäosus on 0.0000000000006039%. 95% tõenäosusega on B1-tasemel laused keskmiselt 2,3 kuni 3,8 sõna võrra lühemad.

t.test(tekstid %>% filter(keeletase==2) %>% .$lpikkus,
       tekstid %>% filter(keeletase==3) %>% .$lpikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 2) %>% .$lpikkus and tekstid %>% filter(keeletase == 3) %>% .$lpikkus
## t = -7.8655, df = 153.83, p-value = 6.039e-13
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.817688 -2.284948
## sample estimates:
## mean of x mean of y 
##  8.216172 11.267491

B2- ja C1-taseme lausete sarnase pikkuse tõenäosus on 0.0000003946%. 95% tõenäosusega on B2-tasemel laused keskmiselt 1,4 kuni 3 sõna võrra lühemad.

t.test(tekstid %>% filter(keeletase==3) %>% .$lpikkus,
       tekstid %>% filter(keeletase==4) %>% .$lpikkus)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 3) %>% .$lpikkus and tekstid %>% filter(keeletase == 4) %>% .$lpikkus
## t = -5.2971, df = 155.97, p-value = 3.946e-07
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.986084 -1.363943
## sample estimates:
## mean of x mean of y 
##  11.26749  13.44250

PAARIKAUPA T-TEST: Olevikuliste ja minevikuliste tegusõnade osakaal tekstis, võrdlus tasemeti.

A2-tase, ilma lisaparameetrita: oleviku ja mineviku sarnase esinemise tõenäosus on nullilähedane. 95% tõenäosusega on olevikus tegusõnade osakaal 8,2% kuni 11,8% suurem.

t.test(tekstid %>% filter(keeletase==1) %>% .$V_Pres, 
       tekstid %>% filter(keeletase==1) %>% .$V_Past)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid %>% filter(keeletase == 1) %>% .$V_Pres and tekstid %>% filter(keeletase == 1) %>% .$V_Past
## t = 10.958, df = 197.24, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.08174068 0.11761930
## sample estimates:
##  mean of x  mean of y 
## 0.14776558 0.04808559

A2-tase, lisaparameetriga: paarikaupa sarnasust arvestades on usaldusintervall suurem: vahe on 7,5% kuni 12,4%. Sama kehtib ka teiste tasemete puhul ning kogu valimi puhul tervikuna.

t.test(tekstid %>% filter(keeletase==1) %>% .$V_Pres, 
       tekstid %>% filter(keeletase==1) %>% .$V_Past,
       paired=TRUE)
## 
##  Paired t-test
## 
## data:  tekstid %>% filter(keeletase == 1) %>% .$V_Pres and tekstid %>% filter(keeletase == 1) %>% .$V_Past
## t = 8.1535, df = 99, p-value = 1.125e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.07542199 0.12393799
## sample estimates:
## mean of the differences 
##              0.09967999

ÜHEPOOLNE T-TEST: Lemmade ehk unikaalsete sõnade arv tekstis ei saa olla suurem kui kõigi sõnade arv tekstis.

Tavaline kahepoolne t-test: sõnade ja lemmade arvu sarnasuse tõenäosus on ligi null. 95% tõenäosusega on sõnu tekstis 47,7 kuni 67,4 võrra rohkem kui lemmasid.

t.test(tekstid$sonad, tekstid$lemmad)
## 
##  Welch Two Sample t-test
## 
## data:  tekstid$sonad and tekstid$lemmad
## t = 11.491, df = 540.21, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  47.71909 67.39771
## sample estimates:
## mean of x mean of y 
## 138.16809  80.60969

Ühepoolne t-test: p väärtus on sama, sõnade arv tekstis on keskmiselt vähemalt 49,3 võrra suurem kui lemmade arv.

t.test(tekstid$sonad, tekstid$lemmad, alternative="greater")
## 
##  Welch Two Sample t-test
## 
## data:  tekstid$sonad and tekstid$lemmad
## t = 11.491, df = 540.21, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  49.30534      Inf
## sample estimates:
## mean of x mean of y 
## 138.16809  80.60969

Kui juurde märkida, et võrdlen järgemööda samu tekste, on erinevus testi tulemusena suurem: vähemalt 54

t.test(tekstid$sonad, tekstid$lemmad, alternative="greater", paired=TRUE)
## 
##  Paired t-test
## 
## data:  tekstid$sonad and tekstid$lemmad
## t = 26.884, df = 350, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  54.02743      Inf
## sample estimates:
## mean of the differences 
##                 57.5584