Kuidas saada vähese vaevaga võimalikult häid hindeid?
Sissejuhatus
See oli juba kolmas järjestikune öö, mil tudeng Keit “Ogar” Agarilt viis une õudusunenägu. “Te olite võrdsed kandidaadid, kuid parema keskmise hinde tõttu võtsime tööle teise kandidaadi,” ütles OÜ Tunnetuslik Homöopaatia personalijuht. Töö sai Keiti alumine naaber, kes õpib 15. sajandi inglise kirjandust. Keit arvab, et seegi unenägu võib olla täideminev ning tal on vaja head vastuargumenti personalijuhile. Äkki on mõnes valdkonnas kergem paremat hinnet saada, mõtles Keit.
Ta teab, et finantsseisu parandamiseks ei saa lootma jääda vaid tööintervjuule. Mida teeks sellises olukorras tema ületee naaber, kes on saanud mitmeid EL toetusi ja sõidab kullatud istmesoojendusnupuga varustatud Mercedes-Benz maasturiga? Ilmselt uuriks, kuidas võimalikult vähese vaevaga parandada oma keskmist hinnet, et nii stipendiumit saada.
Kuna kolm plaani on ikka parem kui kaks, mõtles Keit, mida võtaks ette tema ettevõtlik tuttav, kes juhib alkoholilaenutuse ettevõtet. Pärast pingsat mõtlemist süttis Keiti peas lambike: ehk teeks ta abistava rakenduse kasvavale tudengipopulatsioonile, kelle eesmärk on võimalikult lihtsalt diplom kätte saada?
Selles praktikumis uurimegi:
- kas tõesti on mõnes valdkonnas kergem paremat hinnet saada,
- kas on aineid, milles on märgatavalt kergem paremat hinnet saada,
- kuidas teha veebirakendusi R-is.
Tutvumine andmestikuga
Laadi ÕISist alla andmestik UT_15_16_hinded.csv. Selles andmestikus on 2015/2016 õppeaasta kõigi TÜ eristava hindamisega õppeainete kohta kirjas üliõpilaste õppetulemuste jaotus. Lisaks on teada
- semester (sügis/kevad)
- valdkond (aine struktuuriüksuse lühend)
- HV humanitaarteaduste- ja kunstide valdkond
- SV sotsiaalteaduste valdkond
- MV meditsiiniteaduste valdkond
- LT loodus- ja täppisteaduste valdkond
- aine kood
- aine nimi
- ainele registreerunud üliõpilaste arv
- õppeainele registreerunud üliõpilaste õppetulemuste (A, B, C, D, E, F, mitte ilmunud) jaotus
Ülesanne 1 (4 punkti)
Kas mõnes valdkonnas saavad üliõpilased paremaid hindeid kui mõnes teises? Kuidas seda visuaalselt kontrollida? Tee seda.
Ülesanne 2 (4 punkti)
Kas mõnes õppeaines saavad üliõpilased paremaid hindeid kui mõnes teises? Millistes ainetes täpsemalt? Visualiseeri.
Juhised:
- Vali välja sobiv joonisetüüp. Selleks võid kasutada mõnda eelmises ülesandes välja pakutud lahendust või pakkuda välja enda variandi. (Näiteks võid teha alloleva joonisega analoogilise joonise, ainult et valdkondade rollis oleksid õppeained. Samas võid ka teha näiteks tulpdiagrammi, mis näitaks iga õppeaine keskmist hinnet.)
- Vaatle väiksemat andmestikku, kus valdkond ja semester oleksid fikseeritud. Näiteks võid valida loodus- ja täppisteaduste valdkonna ning kevadsemestri.
(Järgmises ülesandes tuleb koodi natuke modifitseerida, et rakenduse kasutaja saaks ise valida teda huvitava valdkonna ja semestri.) - Vaatle ainult selliseid aineid, kus oli vähemalt 5 registreerunut.
- Leia iga õppeaine keskmine hinne.
- Järjesta õppeained keskmise hinde põhjal.
- Vali visualiseerimiseks välja TOP 25 ained.
- Praegu on õppeaine nimi selline faktor, mille tasemed on tähestikulises järjekorras. Aga ggplot2 joonise jaoks oleks hea, kui see oleks järjestatud keskmise hinde põhjal. (Näpunäide: kasuta funktsiooni
reorder
.) - Tee joonis.
- Juhul, kui kasutad mõnda tulpdiagrammi, võib horisontaalne esitus osutuda efektiivsemaks kui vertikaalne. Abiks on
coord_flip()
. - Kirjuta eelnev kood funktsiooniks, mille sisendiks sobiks selline andmestik nagu oli failis UT_15_16_hinded.csv. Lisaks oleks sisendiks valdkond ja semester. Funktsioon peab tagastama ggplot2 joonise. Kontrolli, kas funktsioon töötab.
plot_oppeained = function(data, vk, sem){
# vali andmestikust data välja sellised read,
# kus valdkond == vk ja semester == sem
# sinu kood
# tagasta ggplot2 joonis
}
Ülesanne 3 (17 punkti) - Rakenduse loomine
Alusta Shiny tutorialiga http://shiny.rstudio.com/tutorial/. Võimalusel on soovitatav läbi vaadata Part 1 ja Part 2 videod, kuid kodutöö sooritamiseks on piisav kasutada lehe lõpus olevaid The written tutorial materjale.
- Tööta läbi lesson 1. Juhime tähelepanu järgnevale.
- Kui sul ei tekkinud nuppu Run App, siis sulge RStudio ning ava uuesti.
- Pane muuhulgas tähele, et
display.mode = "showcase"
võimaldab keerukamate rakenduste puhul jälgida, millseid koodiridu uuendatakse, kui rakenduse kasutaja parameetreid muudab.
- Paralleelselt alusta enda shiny rakenduse loomisega. Selleks tee enda kodutöö jaoks uus kaust ning salvesta sinna
server.R
jaui.R
näidisfailid, mida hakkad edaspidi modifitseerima. - Muuda enda rakenduse pealkiri vastavaks selle temaatikale.
- Tööta läbi lesson 2. Lisa peapaneeli:
- esimese taseme pealkiri “Sissejuhatus”
- tavalise tekstina lause, mis kirjeldaks lühidalt rakendust (näpunäide: vastav html termin on paragraph).
Praeguseks võiks sinu rakendus välja näha umbes selline:
- Tööta läbi lesson 3.
- Lisa valikukast, mille abil saab rakenduse kasutaja valida valdkonna. Näita valdkondade nimesid pikemalt kui vastavad lühendid andmestikus (abiks võib olla
?selectInput
). - Lisa nupp, mille abil saab kasutaja valida, kas teda huvitavad sügis- või kevadsemestri ained.
- Lisa valikukast, mille abil saab rakenduse kasutaja valida valdkonna. Näita valdkondade nimesid pikemalt kui vastavad lühendid andmestikus (abiks võib olla
Praeguseks võiks sinu rakendus välja näha umbes selline:
- Tööta läbi lesson 4. Veendumaks, et kõik töötab nii nagu vaja, näita kasutaja valitud väärtuseid. (Näpunäide: funktsioon
textOutput
.)
Praeguseks võiks rakendus välja näha umbes selline:
- Tutvu lesson 5-st muuhulgas sellega, millist osa
server.R
failist jooksutatakse ainult üks kord ning millist korduvalt.- Lisa oma rakenduse kataloogi kasutatava andmestiku fail (näiteks kas
csv
võiRData
failina). - Loe see fail sisse, et kasutada seda rakenduses.
- Lisa oma rakenduse kataloogi kasutatava andmestiku fail (näiteks kas
- Kasuta nüüd ülesande 2 tulemusena valminud funktsiooni ning lisa joonis shiny väljundisse. Kutsu see funktsioon välja nii, et sisendid valdkond ning semester vastaksid kasutaja poolt sisestatud väärtustele.
Näpunäide: kui teksti kuvamiseks kasutasid funktsioone textOutput
ja renderText
, siis joonise jaoks tuleb kasutada vastavalt funktsioone plotOutput
ja renderPlot
. (Kui soovid muuta joonise suurust, selleks on funktsioonil renderPlot
argumendid width
ja height
.)
Praeguseks võiks rakendus välja näha umbes selline (sõltub, millise joonise tüübi ülesandes 2 valisid):
Et erinevate valdkondade joonised oleksid kohakuti (mõnedel ainetel on väga pikad nimed), võid aine nime asemel joonisel näidata aine nime algust (näiteks esimest n sümbolit, abiks on funktsioon substr
).
Boonusülesanne 1: Rakenduse täiustamine
Täienda enda rakendust järgnevate lisadega:
- (1 boonuspunkt) Lisa slaider, mille abil saab kasutaja valida, mitut TOP ainet ta näha soovib.
- (1 boonuspunkt) Lisa nupp, mille abil saab kasutaja valida, kas teda huvitavad kõige paremate õppetulemustega või hoopis kõige halvemate õppetulemustega ained (neid viimaseid oleks ju vaja vältida).
Abiks on ka Shiny Cheat Sheet pdf, mis on kättesaadav siit lehelt
Boonusülesanne 2: Kuidas optimeerida õppeaine tagasisidet?
Õppejõud Peeter “Bijektsioon” Ratsionaalil kästi õppeaine ümber korraldada. Tema õpetatavate ainete tagasiside on siiani olnud kehv, kuid ta on veendunud, et see pole mitte viletsa õpetamise ja halva ainekorralduse tõttu, vaid et üliõpilased annavadki paremat tagasisidet sellistele ainetele, kus eriti midagi tegema ei pea ning kus saab vähese vaevaga häid hindeid.
Uuri, kas Peetri väited peavad paika. See tähendab, et kas tõepoolest on tal lootust saada ainele paremat tagasisidet, kui selle töömaht on väiksem, kui ette nähtud, ning kui tudengitele panna paremaid hindeid.
Laadi ÕISist alla andmestik UT_15_16_tagasiside.csv. (Praktikumis kasutatud andmestik oli selle alamandmestik.) Siin on toodud 2015/2016 õppeaasta kõigi TÜ õppeainete kohta (st nii eristava kui ka mitteeristava hindamisega):
- semester (sügis/kevad)
- valdkond (aine struktuuriüksuse lühend)
- HV humanitaarteaduste- ja kunstide valdkond
- SV sotsiaalteaduste valdkond
- MV meditsiiniteaduste valdkond
- LT loodus- ja täppisteaduste valdkond
- GV Eesti geenivaramu
- OO Õppeosakond
- aine kood
- aine nimi
- ainele registreerunud üliõpilaste arv
- õppeaine töömahtu puudutava tagasiside küsimuse vastuste jaotus
- tagasiside_1 - aine töömaht oli tunduvalt väiksem
- tagasiside_2 - aine töömaht oli mõnevõrra väiksem
- tagasiside_3 - aine töömaht oli selline, nagu ette nähtud
- tagasiside_4 - aine töömaht oli mõnevõrra suurem
- tagasiside_5 - aine töömaht oli tunduvalt suurem
- tagasiside küsimuse “Kokkuvõttes hindan antud õppeainet hindega” tulemuste jaotus
- veerud tagasiside_A, …, tagasiside_F
- õppeainele registreerunud üliõpilaste õppetulemuste jaotus
- eristava hindamisega ainete jaoks veerud hinne_A, …, hinne_mi
- mitteeristava hindamisega ainete jaoks veerud hinne_arv, hinne_marv, hinne_mi
Ülesanded:
(2 boonuspunkti) Uuri, kas õppeaine tagasiside skoor üleüldse sõltub aine töömahust, ning kas ette nähtust väiksem töömaht tagab ainele parema tagasiside. Visualiseeri.
(2 boonuspunkti) Uuri, kas õppeainele antud tagasiside üleüldse sõltub tudengite õppetulemustest seal aines, ning milline see sõltuvus on. Visualiseeri.
Boonusülesanne 3 (2 boonuspunkti)
Esita kogu kodutöö Shiny Dashboard’i abil, kus ülesanne 1, ülesanne 3 ja soovi korral boonusülesanne 2 on eraldi tabide (menuItem()) all. Töötava lahenduse korral ei ole vaja esitada hmtl ja Rmd faile ega ülesande 3 Shiny rakenduse faile, st kogu kodutöö on vormistatud dashboard’i abil
Juhis, kuidas ehitada Shiny Dashboard’i, on leitav siit.