momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Explorarea şi analiza datelor (partea a II-a)

Evaluare naţională | limbajul R
2016 mar

În [1] am văzut că este foarte plauzibilă o relaţie liniară între numărul de şcoli şi numărul de locuitori şi că în raport cu dreapta de regresie respectivă, Olt prezenta surplusul cel mai mare (138 de şcoli "mai mult decât s-ar cuveni" conform regresiei - cu mult peste media surplusurilor altor judeţe) în timp ce M.Bucureşti prezenta "lipsa" de şcoli cea mai mare (mai mult de 400 de şcoli în minus, faţă de valoarea liniei de regresie); iar acum vedem că Olt are şi procentul cel mai mare de absenţi la examen (11.278% - de 3.8 ori media), în timp ce M.Bucureşti are procentul cel mai scăzut de absenţi, 0.514%.

Constatăm că marea majoritate a candidaţilor au vârsta standard (14 sau 15 ani), sau apropiată de aceasta (13 ani, sau 16 ani); există şi excepţii (sub 13 ani, sau 17 ani, sau 18..35 de ani) pe care probabil că Ministerul le-ar putea eventual explica. Vedem însă că există şi candidaţi cu vârsta de peste 100 de ani - însemnând că s-au strecurat anumite erori la înregistrarea datelor.

Explorarea şi analiza datelor (partea I)

AWK | CSV | Evaluare naţională | Excel | Microsoftizare | MySQL | Python | limbajul R
2016 feb

Intenţia de transparenţă este probată întâi de modul în care se pot extrage datele; dacă nu pot face altceva decât să descarc, să tipăresc şi doar să mă uit la datele (pozate) respective, atunci este vorba numai de falsă transparenţă - dar acesta şi este cazul obişnuit la noi: site-urile instituţiilor publice oferă "*.DOC" (documente Microsoft Word Document), sau PDF, sau SWF (cadre Adobe Flash) şi JPG, iar programele şcolare de la noi chiar nu au legături cu "Open-", fiind subjugate produselor comerciale Microsoft şi educaţiei funcţionăreşti asociate, "point-and-click".

//data.gov.ro inspiră încredere, din acest prim punct de vedere; datele sunt emise în format machine-readable, încât şi utilizatorul poate să le investigheze (cu propriile instrumente) şi le poate eventual restructura şi integra în vreun context propriu.

Vom folosi aici setul de date EVNAT-2015.csv, reprezentând rezultatele "Evaluării Naţionale". Am ales până la urmă acest set de date, fiindcă înregistrează suficient de multe observaţii individuale (linii de date), iar pe de altă parte - nu conţine decât datele brute respective (putem ignora că s-a intervenit asupra acestora pentru "anonimizare" şi probabil, pentru calculul câmpurilor de "notă finală" şi "medie"); în plus, acoperă o bună parte dintre greşelile tipice şi formatele defectuoase cu care ne-au obişnuit instituţiile noastre.

Simularea aruncării zarului

Excel | Gnumeric | Octave | limbajul R
2016 jan

Experimentăm în Gnumeric (sau în Excel) şi în Google Sheets şi pe de altă parte experimentăm cu limbajele (specializate pe analiză statistică şi pe calcul numeric) GNU Octave şi R, pe seama aruncării zarurilor.

Daţi-mi un exemplu...

Excel | Octave
2015 dec

Poate că înţelegerea lucrurilor ar necesita un mic act de judecată. Cum adică "să dăm un exemplu…"? Ce "să dăm"? Ce este de dat într-o ecuaţie a sistemului: nişte coeficienţi - care pot fi aleşi oricum - şi un termen liber, care poate fi eventual dedus având dată o soluţie. Desigur (mai ales că am amintit de Excel, în cerinţa noastră), ar fi de bun simţ să evităm alegerile banale - recunoscând totuşi că putem reduce orice sistem liniar la o formă "banală", precum "2x=4, 2y=5, 2z=6".

Două exemple de reducere/acumulare funcţională

C++11 | Python | javaScript
2015 dec

Funcţiile din libstdc++ (C++ Standard Library) sunt "parametrizate", iar std::__gcd() nu face excepţie, fiind definită pentru un tip de date - denumit _EuclidianRingElement - care permite "împărţirea cu rest" şi binecunoscutul algoritm al lui Euclid...

"Cel mai mare divizor comun" chiar merita scrierea unei funcţii separate gcd(a, b), indicată apoi ca parametru al reducerii; dar acum, operaţia care trebuie implicată în reducerea listei coeficienţilor până la valoarea finală este una extrem de banală - încât o vom modela direct în lista parametrilor reducerii, ca funcţie "anonimă" (sau, "expresie lambda").

Am putut lucra cu diverse tipuri de polinoame, în programul C++11 de mai sus; vedem astfel unele dintre avantajele conferite de conceptele de programare parametrizată specifice pentru C++11. Pe de altă parte însă, în Python calculul cu orice fel de numere (inclusiv cu numere complexe, sau cu întregi mari) este deja "nativ" - nu necesită neapărat demersuri explicite prealabile.


Prev
Next
ALL (349 titluri)

vezi Cărţile mele (de programare)

despre acesta ~ Home
(sau https://vlad.bazon.net/

Factoriale | Graficul funcţiilor

PGN browser | chess JS engine

Load

in /slightchess

/slightchess

626 partide analizate cu Crafty

(R) Computer Art | Decoraţiuni

Aplicaţii şcolare (javaScript)

Sinteze: