Muudan andmestikku, nii et vahetan numbriliselt kodeeritud keeleoskustasemed välja nimetuste vastu (selleks, et keeleoskustaset ei loetaks arvtunnuseks) ning jätan kõrvale abitegusõnade osakaalu tekstis (V_aux), mis eelneva vaatluse põhjal ei erista keeleoskustasemeid olulisel määral.
tekstid <- tekstid %>% select(-kirjtulemus, -V_aux) %>% mutate(keeletase=recode(keeletase,
'1'="A2",
'2'="B1",
'3'="B2",
'4'="C1"))
print(tekstid)
## # A tibble: 400 x 12
## kood eksam keeletase sonad laused spikkus lpikkus J_osak lemmad lss
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 A2I_… 2018… A2 39 9 4.87 4.33 0.0256 31 0.795
## 2 A2I_… 2018… A2 72 12 4.19 6 0.0972 43 0.597
## 3 A2I_… 2018… A2 38 6 5.74 6.33 0.0263 26 0.684
## 4 A2I_… 2018… A2 61 8 5.46 7.62 0.0656 43 0.705
## 5 A2I_… 2018… A2 75 12 4.77 6.25 0.0933 45 0.6
## 6 A2II… 2018… A2 31 6 5.10 5.17 0 26 0.839
## 7 A2II… 2018… A2 47 6 4.64 7.83 0.0426 41 0.872
## 8 A2II… 2018… A2 40 6 4.78 6.67 0.025 32 0.8
## 9 A2II… 2018… A2 43 7 5 6.14 0.0698 33 0.767
## 10 A2II… 2018… A2 57 8 4.60 7.12 0.0526 42 0.737
## # … with 390 more rows, and 2 more variables: yld_kaanded <dbl>, yld_Nom <dbl>
Teisendan andmed kaugusmõõtudeks, mis väljendavad seda, kuivõrd sarnased/erinevad on vaadeldavad tekstid andmestikus olevate arvtunnuste põhjal.
tekstid %>% head(10) %>% select_if(is_numeric) %>% dist()
## 1 2 3 4 5 6 7
## 2 35.416009
## 3 7.470696 38.529451
## 4 25.479577 11.885042 28.718589
## 5 39.252273 4.732643 42.082768 15.078901
## 6 10.380580 44.805997 7.198101 34.629423 48.408103
## 7 13.759043 25.877598 17.707381 14.344597 29.233856 22.120845
## 8 4.178169 34.435994 7.077900 23.904206 38.147476 11.106836 11.505847
## 9 6.580018 31.107945 8.696157 20.698301 34.599101 13.999085 9.380925
## 10 21.514750 15.602846 24.978982 4.242330 18.942488 30.661017 10.321508
## 8 9
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9 4.508774
## 10 19.931223 16.737143
Leian tekstide asukohad koordinaatteljestikul.
tekstid %>% head(10) %>% select_if(is_numeric) %>% dist() %>% cmdscale(2)
## [,1] [,2]
## [1,] 12.402236 0.6404981
## [2,] -22.851801 2.9109321
## [3,] 15.486187 4.0611819
## [4,] -12.480866 -2.3162337
## [5,] -26.519991 2.8565949
## [6,] 21.870723 1.7049646
## [7,] 1.241764 -6.2619168
## [8,] 11.334945 -1.0421401
## [9,] 7.975148 0.1965792
## [10,] -8.458345 -2.7504602
Talletan koordinaadid tabelisse ja lisan tulba “keeleoskustase”.
tekstid %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>%
as_tibble() %>% add_column(keeleoskustase=tekstid$keeletase)
## # A tibble: 400 x 3
## V1 V2 keeleoskustase
## <dbl> <dbl> <chr>
## 1 -120. 2.65 A2
## 2 -84.9 -2.27 A2
## 3 -123. -1.19 A2
## 4 -94.8 2.98 A2
## 5 -81.3 -1.85 A2
## 6 -129. 2.08 A2
## 7 -108. 7.77 A2
## 8 -119. 3.11 A2
## 9 -115. 2.62 A2
## 10 -98.8 3.95 A2
## # … with 390 more rows
Koostan joonise, kus kuvatakse iga teksti keeleoskustase. Nii on näha, kas samale tasemele hinnatud tekstid koonduvad või mitte.
tekstid %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>%
as_tibble() %>% add_column(keeleoskustase=tekstid$keeletase) %>%
ggplot(aes(V1, V2, label=keeleoskustase)) + geom_text()
Tõstan eri tasemete tekstid eri värvidega esile, et joonist oleks lihtsam lugeda.
tekstid %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>%
as_tibble() %>% add_column(keeleoskustase=tekstid$keeletase) %>%
ggplot(aes(V1, V2, label=keeleoskustase, color=keeleoskustase)) + geom_text()
Piiritlen y-telje skaalat, et joonis oleks kompaktsem ja objektid selgemini eristatavad. Loobun legendist, et joonis oleks laiem.
tekstid %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>%
as_tibble() %>% add_column(keeleoskustase=tekstid$keeletase) %>%
ggplot(aes(V1, V2, label=keeleoskustase, color=keeleoskustase)) +
ylim(-30, 30) + geom_text(show.legend=FALSE)
Sarnaselt saab tekste kuvada ühe taseme kaupa, eristades eksamikordi.
tekstid_A2 <- tekstid %>% filter(keeletase=="A2")
tekstid_A2 %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>%
as_tibble %>% add_column(eksamikord=tekstid_A2$eksam) %>%
ggplot(aes(V1, V2, label=eksamikord, color=eksamikord)) + geom_text(show.legend=FALSE)