Valodas R ievads

Valodas un vides uzstādīšana

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Pārskati un datu vizualizācija

Datu vizualizācija (tāpat kā, teiksim, teātris) ir “sintētiska” lietojumu joma, kur apvienojas dažas konkrētas lietas:

  • Deskriptīvā statistika un statistiskā modelēšana
  • Mašīnmācīšanās - klasterizācija, rezultātu ranžēšana
  • Analītiskā ģeometrija, vektorgrafika, datoranimācija
  • Datubāzes u.c. datu struktūras
  • Datu noliktavas un semantiskais tīmeklis
  • Ģeogrāfiski u.c. telpiski dati
  • UI, grafiskais dizains, lietojamība
  • PDF, HTML, Word dokumentu radīšana ar WYSIWYG un marķēšanas valodām
  • Programmēšana un Web izstrāde
  • Prezentāciju veidošana, cilvēku pārliecināšana, un demagoģija

Deskriptīvā statistika

Kāpēc to vajag? Tiešā veidā skatoties uz (statistiski neapstrādātiem) datiem, tajos ir grūti kaut ko saprast.

Deskriptīvā statistika parāda veidus, kā īsi apkopot (summarize) lielas datu kopas datu atribūtus. Kvantitatīviem datu atribūtiem aplūko caurmēra novērtējumus (vidējo vērtību, mediānu) un izkliedes novērtējumus (dispersiju vai standartnovirzi, starpkvartiļu attālumu, datu diapazonu u.c.).
Kvalitatīviem datu atribūtiem var apskatīt vērtību relatīvo biežumu. Šos raksturlielumus var tālāk attēlot histogrammās (attiecīgi kvalitatīviem datiem - joslu vai sektoru diagrammās).

Piemērs: Centralizētais matemātikas eksāmens pēc 12.kl. Vai eksāmena datus analizē pareizi?

Statistiskā modelēšana

Modeļi apskata reālu datu tuvināšanu ar matemātiski aprakstāmu deterministisku vai varbūtisku procesu, ko ir vieglāk analizēt un arī zīmēt. Kļūdu novērtējumi, piemēram, dabaszinātņu eksperimentos vai socioloģiskās aptaujās izriet no statistiskiem modeļiem.

Slikti izvēlēts modelis ir kā Roršaha tests - jebkuros datos var ieraudzīt neparastas formas, korelācijas u.c. (MMR vakcīnas un autisms…)

Piemērs: Francis Galtons - tēvu un dēlu garumi, piemēram, centimetros. Viena no pirmajām lineārajām regresijām.
(Bet ne katram punktu mākonītim var vilkt cauri regresijas taisni. Jābūt precīzi nomērītam neatkarīgajam mainīgajam, neatkarīgiem mērījumiem, normāli sadalītiem un homogēni izvietotiem atlikumiem.)

Praktiska vizualizācija: Rīki

  • R/RStudio/KnitR+ggplot2 - veido pārskatus u.c. strukturētus dokumentus.
    Marķēšana ar Markdown (arī Pandoc, Github, Reveal.JS izmantots standarts). Dokumentu kompilē visu uzreiz vai pa daļām; tajā līdz ar datu kopu atjaunojas visas tabulas un diagrammas.
  • Python/Eclipse-PyDev/Matplotlib - veido atsevišķus attēlus vai vienkāršas animācijas.
  • JavaScript/IDE-?/D3 - veid

R alternatīvas datu apstrādē

  • Izklājlapas: MS Excel, LibreOffice Calc. Piemērotas datu ievadei un pārlūkošanai. Datu ievades formiņas, atsevišķu gabalu noslēpšana vai atfiltrēšana. Diagrammas zīmē ar VBA (VBA - Visual Basic for Applications).
  • Maksas produkti: IBM SPSS, STATA. Arī MATLAB, Mathematica, Maple.
  • Universālas programmēšanas valodas: Python, Java/Scala, JavaScript/D3. PYPL - Programmēšanas valodu salīdzinājums

Ko satur R programmēšanas vide

  • R ir programmēšanas valoda; kodu var rakstīt ar (RStudio, Notepad++, u.c.).
  • RStudio ir integrētā vide (IDE), kur programmē valodā R.
  • R ir daudz bezmaksas pakotņu (packages), kas veic sarežģītus aprēķinus, zīmē bildes, u.c.

Valodas izvēle skolā atkarīga no (A) piemērotas integrētās vides (IDE); (B) ērtas licencēšanas; (C) lietotāju “kopienas” - cik viegli meklēt atbildes ar Google.

Sk. Microsoft acquires Revolution Analytics (2015).

Lab.Darbs: R/RStudio uzstādīšana

Soļi:

  1. Vispirms uzstāda R,
  2. Tad uzstāda RStudio.
  3. Pārbauda, vai RStudio pareizi strādā
  4. Instalē dažas pakotnes.
  5. Pārbauda pakotni GMP
  6. Apskata iebūvētās lietotāju pamācības

1.solis: Uzstāda R

  • Apciemo kādu CRAN Mirror - R lejupielādes “spoguli”.
  • Izvēlas serveri, piemēram, Vācijā, atver linku.
  • Atver linku savai operētājsistēmai (teiksim, Windows).
  • Lejupielādē uzstādītāju (piemēram EXE failu).
  • Darbina šo failu - var dzēst ķeksi pie 32-bitu versija (nezkāpēc uzstādītājs piedāvā uzstādīt GAN 32-bitu, GAN 64-bitu).
Savāc R valodu
Savāc R valodu

2.solis: Uzstāda RStudio

  • Apciemo RStudio mājaslapu
  • Izvēlas “RStudio Desktop FREE”.
  • Savāc operētājsistēmai piemērotu instalētāju.
  • Darbina šo failu.
RStudio lejupielāde
RStudio lejupielāde

3.solis: Pārbauda RStudio (1)

Kreisajā panelī, lodziņā Console ieraksta šādu kodu:

3.solis: Pārbauda RStudio (2)

Pārbauda RStudio ar sektoru diagrammu
Pārbauda RStudio ar sektoru diagrammu

4.solis: Uzstāda dažas pakotnes

Piezīme 1: Ja pirmo reizi lieto kādu pakotni, tā jāinstalē (jāsavāc no Interneta).
KnitR - pārskatu ģenerēšanas bibliotēka. GGPlot2 - diagrammu zīmēšana. GMP - Ļoti lielu skaitļu aritmētika.

Piezīme 2: Uz 32 bitu datoriem iet vecāka RStudio versija (v1.1 nevis v1.2).

5.solis: Pārbauda pakotni GMP

Piezīme: Ir spēkā Vilsona teorēma: Katram pirmskaitlim \(p\), skaitlis \((p-1)!\) dod atlikumu \(p-1\), dalot ar \(p\).

6.solis: Apskata iebūvētās pamācības

To pašu var arī meklēt internetā. Piemēram, Google meklētājā ierakstīt
r package gmp filetype:pdf

  • Katrai R pakotnei ir standartizēta dokumentācija (pieejama kā PDF un arī RStudio Help sadaļā), kur aprakstītas visas pakotnē ietilpstošās funkcijas, daži izsaukšanas piemēri.

 

Valodas R ievads

“Vektori” (1-dimensionālas datu struktūras) valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Vektori ir gandrīz tie paši masīvi

Vektori valodā R pilda apmēram to lomu, ko citās valodās masīvi. Ir dažas atšķirības:

  • R vektorus var “salipināt”, pieaudzēt lielākus, u.c.
  • R valodā arī skaitļi un virknes/stringi ir “vektori” (ar garumu \(1\))
  • R vektoros elementus sāk numurēt no \(1\) (nevis no \(0\)).

Vektora summa un garums

  • Skaitļu vektora visu elementu summu atrod ar sum(...).
  • Vektora garumu atrod ar funkciju length(...).
  • Var rēķināt aritmētisko vidējo.

Vidējā vērtība

Definīcija: Ja \(x_1,x_2,\ldots,x_n\) ir \(n\) skaitliski novērojumi, tad par šo lielumu vidējo vērtību sauc aritmētisko vidējo: \[\mu = \frac{\sum_{i=1}^n x_i}{n}.\]

Piezīme: Vārds “mean” nozīmē gan “nejauks”, gan “vidējais”. Aritmētiskais vidējais (arithmetic mean).

Dispersija un standartnovirze

Definīcija: Par dispersiju (variance) skaitliskiem novērojumiem \(x_1,x_2,\ldots,x_n\) sauc izteiksmi: \[\sigma^2 = \frac{\sum_{i=1}^n (x_i - \mu)^2}{n}.\]

Par standartnovirzi (standard deviation) sauc kvadrātsakni no variances: \[\sigma = \sqrt{\frac{\sum_{i=1}^n (x_i - \mu)^2}{n}}.\]

Ja \(x_i\) ir mērvienības (piemēram, centimetri), tad arī \(\sigma\) mēra centimetros.

Dispersija un standartnovirze iztvērumam

Socioloģijā, fizikā un citur bieži jāsecina par ģenerālkopu no iztvēruma (sample). Tad formulā jādala ar \(n-1\) (nevis ar \(n\)):

\[s = \sqrt{\frac{\sum_{i=1}^n (x_i - \mu)^2}{n-1}}.\]

Šādu standartnovirzi (kur dala ar \(n-1\)) rēķina R funkcija sd(...).
Visas populācijas standartnovirzei \(\sigma\) var uzrakstīt savu funkciju fullSD(...).

LD: Rēķinām KhanAcademy vingrinājumus

Soļi:

  1. Apciemo KhanAcademy lapu, ieiet kā “Learner”. Autentificējas ar Gmail vai Facebook kontu.
  2. Aiziet uz statistikas testiem.
  3. Atvērt testa uzdevumu
  4. Aprēķināt vidējo vērtību un standartnovirzi, ierakstīt rezultātus, nosūtīt.

1.solis: Ieiet KhanAcademy

  • Atver https://www.khanacademy.org.
  • Spiež pogu Learner un tad Login.
  • Spiež pogu Continue with Google. (Ja pārlūkprogrammas sesijā jau esat ielogojušies Google Epastā, tad pogai vajadzētu strādāt).
  • No izvēlnes paņemt Courses > Statistics & Probability (Tur ir arī AP Statistics - “Advanced Placement” nozīmē padziļinātais).

2.solis: Atlasīt testus par statistiku

KhanAcademy tests
KhanAcademy tests
  • Ritināt līdz sadaļai Summarizing quantitative data.
  • Izvēlēties Variance and standard deviation of a population
  • VAI arī Variance and standard deviation of a sample

3.solis: Atvērt testa uzdevumu

Populācijas standartnovirze
Populācijas standartnovirze

Aprēķināt vid.vērtību un standartnovirzi

Ierakstīt lodziņos noapaļotas vērtības \(5\) un \(4.1\), nospiest Check.

3.solis: Atvērt citu testa uzdevumu

Iztvēruma standartnovirze
Iztvēruma standartnovirze

Aprēķināt vid.vērtību un standartnovirzi

Šoreiz mums bija slinkums noapaļot, to dara funkcija round()

 

Valodas R ievads

Datu tabulas valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Kaut kas līdzīgs izklājlapām

  • Datu tabula ir līdzīga izklājlapai - katra rindiņa parasti apraksta vienu faktu par kādu objektu.
  • Datu tabulas vieglāk apstrādāt, ja tajā neatkārto līdzīgas kolonnas. Piemēram, ja skolēns saņēmis atzīmes piecos kontroldarbos, tad labākas kolonnas ir “SkolenaID”, “KDnum”, “Atzīme”. (Nevis “SkolenaID”, “KD1”, “KD2”, “KD3”, “KD4”, “KD5”.)

Piezīme: cars ir R “iebūvēta” datu tabuliņa.

Datu tabulas no kolonnām

Ielasīšana no CSV faila

Komanda setwd(...) uzstāda tekošo direktoriju. Mūsu gadījumā rstudioapi (pakotne, kuru vajag pirms lietošanas instalēt) parāda RStudio tekošo direktoriju, kurā dzīvo izpildāmais scenārijs.

Var rakstīt arī: setwd("c:/temp/") utml.

VISC eksāmenu tabula

Soļi:

  1. Saprast VISC eksāmena datus
  2. Ielasīt VISC eksāmena datus tabulā (data frame)
  3. Pielipināt jaunu kolonnu “Part23” - cik procentus no maksimuma skolēns saņēmis eksāmena 2. un 3. daļā kopā.
  4. Izveidot Pīrsona korelāciju starp Part1 un Part23
  5. Saskaitīt datus dažādos šķērsgriezumos

Sk. ZIP apakšdirektoriju: data-analysis-course/chapters/LD-data-frames

1.solis: Saprast eksāmena datus

Excel datu kopa
Excel datu kopa
  • Eksāmenam 3 daļas (1.daļā 25 jautājumi (kopā 25 punkti); 2.daļā ir 10 jautājumi (kopā 40 punkti); 3.daļā ir 3 jautājumi (kopā 15 punkti)).
  • To svari ir attiecīgi \(31.25\%\), \(50\%\) un \(18.75\%\) no kopējā.

2./3.solis: Ielasa datus, pievieno kolonnu

Tad ieraksta konsolē šādas komandas:

4.solis: Pīrsona korelācija

Korelācijas pārskats
Korelācijas pārskats

4.solis: Datu filtrēšana

 

Valodas R ievads

“Vektori” valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Punktu un līniju zīmēšana

  • Dekarta koordinātu sistēma pielāgojas lielākajām un mazākajām \(x\) un \(y\) vērtībām (bet var “izstaipīt” citādi).
  • Zīmēšana pa punktiem, to savienošana ar līnijām, noklusēto aplīšu aizstāšana ar citām figūriņām.

Sk. Plotting discontinuous functions

Tangensa funkcijas grafiks

Funkcija pieņem ļoti lielas vērtības, iziet ārpus saprātīgiem mērogiem.

Slikts tangenss
Slikts tangenss

Citas pārtrauktas funkcijas

\[f = \left\{ \begin{array}{l} x^2 - 1,\;\text{ja}\;x<1\\ x^3 - 5,\;\text{ja}\;1 < x <2\\ 5-2x,\;\text{ja}\;x>2.1 \end{array} \right.\]

Pārtraukts grafiks
Pārtraukts grafiks

Izlabots tangenss

Ideja: Izmetam no vektoriem xx un yy tās vērtības, kurām tangenss ir pārāk liels (aizstājam ar NA - Not a number).

Tangensa grafiks

Grafiks ar asimptotām
Grafiks ar asimptotām

Vienkāršu animāciju veidošana

  • Animētas un interaktīvas bildes parasti veido ar JavaScript; tā ir cita programmēšanas valoda, ko saprot vairums pārlūkprogrammu (browsers).
  • R/RStudio var sagatavot JSON datus JavaScript programmai.
  • R/RStudio var arī veidot animētu GIF, kur animācija ir “iebūvēta” pašā attēla failā.

Ko darīt ar izveidoto grafiku?

  • Var saglabāt starpliktuvē (clipboard)
  • Var saglabāt failā ar dialogu Export > Save as Image
  • Var saglabāt scenārijā norādītajā failā

No vairākiem kadriem veidots GIF

  • Dažas matemātikas idejas viegli attēlot kustībā.
  • Animēto GIF veidojam no kadriem, kam norāda, cik bieži tie mainīsies.
  • To var izdarīt, izsaucot convert programmu.

Izveidot animētu Teilora rindu

Soļi:

  1. Izveidot funkciju, kas rēķina \(y=\sin(x)\) Teilora rindas parciālsummu līdz \(k\)-tajam loceklim: \[\sum_{i=0}^{k} \frac{(-1)^k x^{2k+1}}{(2k+1)!}.\]
  2. Izveidot bildītes, kurās šos grafikus var noglabāt.
  3. Sašūt bildītes ar GIF veidotāju “convert”

Sk. ZIP apakšdirektoriju: data-analysis-course/chapters/LD-animated-gifs

 

Valodas R ievads

“Vektori” valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Vienkāršu diagrammu veidi

  • Lai būtu, ko zīmēt, var sākt ar “datu ģenerēšanu”.
  • Varam apskatīt dažus diagrammu veidus: barplot, pie, hist.

Sadalījumu funkcijas

Sadalījums Blīvumfunkcija Sadalījumfunkcija Kvantiļu funkcija Ģenerators
Normālais dnorm() pnorm() qnorm() rnorm()
Vienmērīgais dunif() punif() qunif() runif()
Binomiālais dbinom() pbinom() qbinom() rbinom()
Eksponenciālais dexp() pexp() qexp() rexp()
Puasona dpois() ppois() qpois() rpois()

Lab.darbs: Empīriska gadījumlieluma attēlošana

Soļi:

  1. Atrod M.Bendika (lietotājs “mbendiks”) Twitter ierakstus 2018.g., kur minēts vārds “rozīnes”.
  2. Izveido varbūtisku eksperimentu \(1000\) sausiņu (vai saldējumu) izgatavošanai tā, lai katrā saldējumā būtu vidēji \(10\) rozīnes. (Izmantot Puasona sadalījumu ar \(\lambda = 10\).)
  3. Attēlo eksperimenta rezultātu histogrammā. Saskaitīt, cik sausiņos/saldējumos būs (A) mazāk kā \(5\) rozīnes; (B) neviena rozīne.

1.solis: Atrod tvītus par rozīnēm

  • Apciemo www.twitter.com. Ievada meklēšanas lodziņā:
    from:mbendiks rozīnes since:2018-01-01 until:2018-12-31
Par rozīnēm
Par rozīnēm

2.solis: Varbūtisks eksperiments

Puasona lab.d.
Puasona lab.d.

3.solis: Joslu diagramma

Piezīme. Nepārtrauktiem sadalījumiem atbilst histogrammas, diskrētiem - joslu diagrammas (stabiņiem ir atstarpes).

Joslu diagramma
Joslu diagramma

Citi laboratorijas darbi…

  1. Izmantojot Vikipēdijas datus par vidējo garumu vīriešiem un sievietēm Somijā, atrast varbūtību, ka nejauši izvēlēta vīrieša (attiecīgi sievietes) garums ir intervālā \([180;190]\) centimetri. Pieņemt, ka garuma standartnovirze sievietēm ir \(\sigma_s = 6\,\text{cm}\) un vīriešiem \(\sigma_v = 7\,\text{cm}\).
  2. Veikt randomizētus eksperimentus spēlei “Cirks”, kur katru gājienu nosaka metamā kauliņa rezultāts un, nonākot noteiktās pozīcijās, lauciņa numuram pieskaita vai atņem kaut ko. Atrast vidējo kauliņa metienu skaitu, lai nonāktu beigu lauciņā “100”.
  • Viens metamā kauliņa metiena rezultāts: sample(1:6,1)
  • Divu metienu summa: sum(sample(1:6,2,replace=TRUE)) vai sample(1:6,1)+sample(1:6,1)

 

Valodas R ievads

“Vektori” valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Diagrammas ar ggplot2

  • Funkcijām plot(), points(), barplot(), pie() ir neskaitāmi parametri dažādām dzīves situācijām.
  • Vai var kombinēt vizualizācijas elementus tā, kā nevienā bibliotēkā tas “nav paredzēts”.
    • Var zīmēt attēlus ar vektorgrafikas elementiem (līnijām, taisnstūriem, teksta gabaliņiem, utml.), teiksim, ar pakotni grid. Kaut ko līdzīgu dara arī JavaScript bibliotēka D3.
    • Var zīmēt attēlus ar pakotni ggplot2, kas izmanto “diagrammu algebru”.

Diagrammu algebra

  • Diagrammu pamazām pieaudzē, tai “pieskaitot” jaunas izteiksmes, kas apraksta kādas koordinātu asis zīmēt, kādus objektus uzlikt diagrammai, u.c.
  • Diagrammu var piešķirt mainīgajam, atgriezt kā funkcijas vērtību.
  • Zīmēšanas brīdī diagramma pārvēršas par rastra (PNG) vai vektorgrafikas (SVG) attēlu, noteiktā izšķirtspējā attēlo burtiņus.

Centralizēto eksāmenu dati

Soļi

  1. Ielasīt tabulu ar eksāmena datiem.
  2. Pakāpeniski uzaudzēt ggplot2 diagrammu
  3. Ar scenārija komandu noglabāt diagrammu PNG failā

Pilns atrisinājums

Attēls (Izkliedes diagramma)

Scatterplot
Scatterplot

 

Valodas R ievads

“Vektori” valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

Izveidot krāsainu karti

  1. Instalēt trūkstošās pakotnes
  2. Darbināt scenāriju, lai veidotu karti

Sk. ZIP apakšdirektoriju: data-analysis-course/chapters/LD-kartes

1.solis: Instalēt trūkstošās pakotnes

2.solis: Darbināt scenāriju

  • Atvērt direktoriju data-analysis-course/chapters/LD-kartes
  • Atvērt ar RStudio failu krasaina-karte.R
  • Ar Ctrl+A iezīmēt visu scenārija tekstu
  • Spiestu pogu Run
  • Pārliecināties, ka rodas attēls krasaina-karte-2018-01-01.png

 

Valodas R ievads

“Vektori” valodā R

(1) Valoda un vide
(2) Vektori/Vectors
(3) Datu tabulas/Data Frames
(4) Funkciju grafiki
(5) Vienkāršas diagrammas
(6) ggplot2 diagrammas
(7) Ģeogrāfiski dati
(8) Pārskatu veidošana

KnitR bibliotēka

KnitR ir viena cilvēka (Yi Huei) projekts, kas ir tik populārs, ka ir “iebūvēts” rīkā RStudio. Tajā apvienotas vairākas tehnoloģijas:

  • RStudio vide
  • R diagrammas (parastās, ggplot2, jebkādas citas)
  • Markdown - ļoti vienkāršs wiki-stila marķējums; ar to var rakstīt dekorētu tekstu (rich text) - teksta izcēlumi, linki, tabulas.
  • LaTeX - matemātikas formulas un smuka PDF veidošana.
  • Paša KnitR marķējums (lai tekstā iekļautu attēlus, formulas, u.c.).