Sissejuhatus

Kursuse korraldusest

  • E 14.15-15.45, K 10.15-11.45.
  • Kokku 20 kohtumist.
  • Toimumisnädalad 25-29, 31-34, 37.
  • See tähendab, et praktikume EI toimu 25. ja 27. märtsil ning 29. aprillil, 1., 6. ja 8. mail.
  • Kui vähegi võimalik, püüame kohtuda kohapeal. Jätame võimaluse osaleda ka Zoomi kaudu, ent praktikume ei salvestata.
  • Kohalkäimine (sh virtuaalne) ei ole kohustuslik, küll aga tungivalt soovituslik.
  • Kõik õppematerjalid on Moodle’is.
  • Loeng + praktiline osa.
  • Kursus on arvestuslik (arvestatud/mittearvestatud).
  • Arvestuse saamiseks vajalik esitada kõik kursuse jooksul antud kodutööd ja lõpuprojekt.
  • 3 kodutööd:
    • Andmetüübid - tidyverse, tähtaeg 17.03.2024.
    • Valim ja populatsioon - Mittearvuliste tunnuste vahelised seosed, tähtaeg 31.03.2024.
    • Lineaarse regressiooni mudelid - Logistilise regressiooni segamudelid, tähtaeg 28.04.2024.
  • Lõpuprojekt: iseseisev töö, milles kasutatakse mõnd kursusel käsitletud meetodit mõnel kursusel mitte kasutatud andmestikul. Peab sisaldama nii koodi, analüüsi kui ka järeldusi. Kokku u 5 lk. Kursuse viimasel nädalal saab enda projektist, sellega kaasnenud probleemidest jms-st lühidalt (u 5 minutit) ka teistele rääkida. Võib edasi arendada teiste ainete raames tehtud projekte, kui on selgelt välja toodud, mis analüüse olete selle aine põhjal lisanud ning kuidas need aitavad uuritavat nähtust kirjeldada ja seletada. Esitamise tähtaeg 10.05.2024.

Selleks, et mõne nädala pärast kursuse materjalid pilla-palla kõiksugu salajastes kohtades laiali ei oleks ning et andmestike sisselugemine, jooniste salvestamine jms oleks võimalikult hõlbus, võiks kasutada selget kaustade ja failide struktuuri. Näiteks midagi sellist:

kvanthum2024  
    /materjalid  
        /praktikum1.html  
        /praktikum1.Rmd  
        /praktikum2.html 
        /praktikum2.Rmd  
        /...  
    /andmestikud  
        /ykstekst.txt  
        /tabel12345.csv  
        /andmed.RData  
        /...  
    /skriptid  
        /praktikum1_skript.R  
        /praktikum2_skript.R  
        /...  
    /kodutööd  
        /kodutöö1  
            /kodutoo1.Rmd   
            /kodutoo1.html  
            /kodutoo1_Perekonnanimi.Rmd  
            /kodutoo1_Perekonnanimi.html  
            /kodutoo1_tagasiside.txt  
            /...  
        /kodutöö2  
        /kodutöö3  
    /lõpuprojekt  

Kvantitatiivne andmeanalüüs humanitaarteadustes

  • Kvantitatiivne -> arvud: mõõtmis- ja loendusandmed
  • Empiirilisus
  • Suurtes andmehulkades orienteerumine
  • Nähtuste kirjeldamine, koosesinemise mustrid ja põhjuslikud seosed
  • Sagedused, tõenäosused, varieerumise mudelid


Kvantitatiivsete meetodite kasutamine ei asenda kvalitatiivset analüüsi ega vastandu teooriale!


Kvantitatiivsed meetodid humanitaarteadustes?

Every softer discipline these days seems to feel inadequate unless it becomes harder, more quantifiable, more scientific, more precise. That, it seems, would confer some sort of missing legitimacy in our computerized, digitized, number-happy world. But does it really? Or is it actually undermining the very heart of each discipline that falls into the trap of data, numbers, statistics, and charts? Because here’s the truth: most of these disciplines aren’t quantifiable, scientific, or precise. They are messy and complicated. And when you try to straighten out the tangle, you may find that you lose far more than you gain.

But at the end, no matter how meticulous you’ve been, history is not a hard science. Nor is literature. Or political science. Or ethics. Or linguistics. Or psychology. Or any other number of disciplines. They don’t care about your highly involved quantitative analysis. They behave by their own rules.

https://blogs.scientificamerican.com/literally-psyched/humanities-arent-a-science-stop-treating-them-like-one/


_________________________________________

A common prejudice, to be sure, divides the social world into phenomena that are suitable for quantification (population distributions, social mobility, etc.) and those that are irreducibly qualitative: conversation, narratives, biography, ethnography, and history often serve as examples. Formalisms clearly can and do apply, however, to these phenomena as well. (Tilly 2004: 38)

Although history is not an exact science, counting, comparing, classifying, and modeling are nevertheless useful methods for measuring our degree of doubt or certainty, making our hypotheses explicit, and evaluating the influence of a phenomenon. (Lemercier, Zalc 2019)

Lugemismaterjali

Selle kursuse aluseks on põhiliselt õpikud

  • Natalia Levshina (2015) “How to do Linguistics with R”,
  • Bodo Winter (2019) “Statistics for Linguists: An Introduction Using R”.


Õpikuid ja ülevaateid humanitaar- ja sotsiaalteaduste meetodite kohta aga ilmub üha enam. Springeri kirjastusel näiteks on terve sari Quantitative Methods in the Humanities and Social Sciences, mille alt on hetkeseisuga ilmunud juba tervelt 21 raamatut.

Ajaloolasi võib huvitada ka näiteks Claire Lemercier & Claire Zalc (2019) Quantitative Methods in the Humanities: An Introduction ja Charles H. Feinstein & Mark Thomas (2002) Making History Count: A Primer in Quantitative Methods for Historians.

Sellel kursusel

Miks R?



  • Vabavaraline ja avatud lähtekoodiga
  • Koodid taaskasutatavad ja jagatavad
  • Muudab analüüsi läbipaistvaks ja korratavaks
  • Võrdlemisi lihtne süntaks
  • Spetsialiseerunud pigem andmeanalüüsile
  • Palju erinevaid pakette ja abimaterjale
  • Võimaldab kasutada väga paljusid andmeformaate
  • Andmeid saab koguda, puhastada, analüüsida ja visualiseerida ühes keskkonnas (RStudio abil ka ühes programmiaknas)
  • RStudio kaudu palju lisavõimalusi (slaidid, dokumendid, interaktiivsed rakendused, veebilehed)
  • Integreeritav teiste keskkondade ja programmeerimiskeeltega (nt Python)

R-iga seotud uudistega, pakettide ning funktsioonidega kursis olemiseks tasub silma peal hoida leheküljel R-Bloggers.

RStudio

RStudio on R-i integreeritud arenduskeskkond (IDE), mis võimaldab mugavamalt R-iga töötada. R-i võib kasutada ka ilma RStudiota, aga RStudiot ei saa kasutada ilma R-ita.
RStudiost on praeguseks olemas nii lokaalne, töölauaversioon, millega meie töötame, kui ka pilvepõhine, brauseris kasutatav versioon Posit Cloud, mis sobib hästi lühemateks kursusteks ja kollaboratiivseks tööks.

Kasutame sel kursusel R-i ja RStudio viimaseid versioone (vastavalt R 4.3.2 ja RStudio 2023.12.1).

Nippe ja trikke

  • Akende paigutus: Tools -> Global Options -> Pane Layout
  • Stiili valimine: Tools -> Global Options -> Appearance
  • Teksti murdmine: Tools -> Global Options -> Code -> Editing -> Soft-wrap R source files
  • Kodeeringu määramine: Tools -> Global Options -> Code -> Saving -> Default text encoding: UTF-8
  • Töökataloogi otsimine: getwd()
  • Töökataloogi määramine: setwd() või Session -> Set Working Directory -> Choose Directory
  • Vaikimisi töökataloogi määramine: Tools -> Global Options -> General -> Default working directory
  • Töölaua puhtana hoidmine: Tools -> Global Options -> General -> Workspace (eemalda linnuke)
  • Pakettide installimine: install.packages("paketinimi")
  • Pakettide laadimine: library(paketinimi)
  • Pakettide uuendamine: update.packages()
  • Leia konsoolis viimati kasutatud käsud: Ctrl+Up/Down (Windows), Cmd+Up/Down (Mac)
  • Kontrolli R-i versiooni, lokaati, laaditud pakette: sessionInfo()
  • Küsi abi funktsiooni kasutamiseks: ?funktsiooninimi
  • Puhasta konsool: Ctrl+l (Windows + Mac)
  • Liigu skriptiaknasse: Ctrl+1 (Windows + Mac)
  • Liigu konsooli: Ctrl+2 (Windows + Mac)
  • Liiguta skriptis rida üles/alla: Alt+Up/Down (Windows), Option+Up/Down (Mac)
  • Korda skriptis tervet rida/valikut: Alt+Shift+Up/Down (Windows), Option+Cmd+Up/Down (Mac)
  • Jooksuta skriptis koodirida: Ctrl+Enter (Windows), Cmd+Return (Mac)
  • Klaviatuuriklahv Tab
  • Korrasta skriptis koodi taanded: Ctrl+i (Windows), Cmd+i (Mac)

OLULINE! Leia, kuidas klaviatuuril sisestada järgmisi sümboleid:

<-
~
$
^
|
[
]
{
}

Abi

Pakettide ja nende funktsioonide kohta leiab enamasti abi R-i enda abifailidest ja dokumentatsioonist.

help(paste)
help(ggplot, package = "ggplot2")
help(package = "ggplot2")

või

?paste
?ggplot2::ggplot

Kui sa ei tea täpselt, mis funktsiooni otsida, siis võid kasutada kaht küsimärki, et otsida enda installitud pakettidest mingit järjendit.
??pas

Paketid sisaldavad enamasti ka näiteid konkreetsetest funktsioonidest.
example(paste)

Samuti võib otsida pakette tutvustavaid näiteid koos seletava tekstiga.
browseVignettes(package = "ggplot2")

Kõiksugu praktikas ettetulevate probleemide korral aitab kõige paremini mõistagi guugeldamine, mis viib sageli lehele Stackoverflow.

ChatGPT ja suured keelemudelid

Abi võib küsida põhimõtteliselt ka suurtelt keelemudelitelt (Large Language Models ehk LLM), nagu ChatGPT, Copilot, Claude, Llama jm. Muu hulgas on võimalik suuri keelemudeleid kasutada RStudios, näiteks paketiga gptstudio (ja seda täiendava paketiga gpttools), RTutor või chattr.

Suuri keelemudeleid saab RStudios kasutada APIde kaudu ning selleks on vaja esmalt luua vastavat keelemudelit pakkuvas keskkonnas uus API võti (API key) ning seadistada see RStudios. Keelemudelite kasutamine APIde kaudu võib olla tasuline.

Ülesanne 1

  • Määrame RStudios enda kodukataloogiks kursuse kausta (nt kvanthum2024). Seda võib teha kas konsoolis käsuga setwd(), ülamenüüs Session -> Set Working Directory -> Choose Directory... või paneelil File, Plots, Packages, Help....
  • Teeme uue skripti (File -> New File -> R Script), kuhu sisestame alloleva koodijupi. Loodud funktsioon võtab kasutajalt sisendi ning teeb kõikide sisestatud sõnade esitähed suureks.
suured <- function(){
    sisend <- readline(prompt = "Sisesta sõnad: ")
    sonad <- unlist(strsplit(sisend, split = " "))
    paste(toupper(substring(sonad, 1, 1)),
          tolower(substring(sonad, 2)), 
          sep = "", collapse = " ")
}
  • Salvestame skripti enda kodukausta skriptide kausta (nt kvanthum2024/skriptid) nimega praktikum1_skript.R. Paneme skriptifaili kinni.
  • Trükime RStudio konsooli source("skriptid/praktikum1_skript.R") ning seejärel suured(). Vaatame, kas funktsioon annab sisestatud sõnade esisuurtähelised vasted.

Uurime ka abimaterjalidest, mida teevad funktsioonis kasutatud käsud readline, unlist, strsplit, toupper, substring ja tolower. Kirjutame nende kasutuse kohta lühikese kommentaari iga vastava skriptirea ette.

Ülesanne 2

Teeme joonise R-i pakettide arvust läbi aastate.

# Installime vajalikud paketid
install.packages("rvest")
install.packages("tidyverse")

# Laadime vajalikud paketid  
library(rvest)
library(tidyverse)

# Laadime alla andmestiku
url <- "https://cran.r-project.org/web/packages/available_packages_by_date.html"
paketileht <- read_html(url)
paketitabel <- html_table(paketileht)[[1]]

# Teeme joonise
paketitabel %>%
  mutate(aasta = format.Date(Date, "%Y")) %>% # teeme kuupäevast aasta
  count(aasta) %>% # loeme kokku igal aastal lisandunud paketid
  mutate(n = cumsum(n)) %>% # liidame igale aastale eelmiste aastate arvud
  ggplot(aes(x = aasta, y = n)) + # teeme ggploti joonise
  geom_col() + # tulpdiagrammina
  geom_text(aes(label = n), vjust = -0.2) # lisame ka arvud tekstina

Ülesanne 3

Võtame ühe Exceli faili (Ott Velsberg 2022, https://avaandmed.eesti.ee/datasets/arvamuskusitlus-tehisintellekti-laiema-kasutuse-kohta-(12.202104.2022)), salvestame selle kursuse andmestike kausta (nt kvanthum2024/andmestikud), impordime selle RStudiosse ning loome kiire ülevaate andmestiku tunnustest ja nende jaotumisest.

# Installime vajalikud paketid
# Siin teeme esmalt loendi vajaminevatest pakettidest
# ning seejärel installime paketid ainult juhul, kui need ei ole veel juba installitud pakettide nimekirjas
paketid2 <- c("readxl", "gtsummary", "esquisse")
sapply(paketid2, function(pakett) if(!pakett %in% installed.packages()) install.packages(pakett))

# Laadime vajalikud paketid
library(readxl)
library(gtsummary)
library(esquisse)

# Loeme sisse Exceli andmestiku
andmestik <- readxl::read_excel("andmestikud/Andmestik.xlsx")

# Vaatame tunnuste ülevaadet
tbl_summary(andmestik)

# Vaatame tunnuste ülevaadet vastavalt soole
tbl_summary(andmestik, by = Sugu)

# Teeme mõne joonise
esquisser()

Küsimustik

Täida ära küsimustik, mis asub lehel https://survey.ut.ee/index.php/347927?lang=et (aega u 5 minutit).

R-i test

Tee Moodle’is R-i baasoskusi puudutav test. Ära muretse, kui vastata ei oska, test ei ole hindeline ega mõjuta kuidagi lõpparvestuse saamist.

Järgmisel korral

Andmetüübid ja objektitüübid.