Alati

Za pregled istraživačkih podataka dostupni su nam razni alati otvorenog koda (eng. open source). Ispod su navedeni neki od tih alata, zajedno s kratkim opisima. U daljnjem tekstu povremeno ćemo se referirati na konkretne alate i opisivati neke njihove funkcionalnosti koje su posebno pogodne za čišćenje podataka.

LibreOffice Calc

LibreOffice Calc je dio LibreOffice paketa uredskih alata otvorenog koda, a namijenjen je radu s tablicama (isto kao i Microsoft Office Excel). LibreOffice Calc (ili sličan program) je temeljni alat potreban za rad s podacima. Njegove funkcionalnosti su ograničene u odnosu na neke druge alate, ali zato nudi jako jednostavno i lako shvatljivo sučelje za pregled samih podataka. Naravno, i drugi programi (poput jamovija ili PSPP) nude tu mogućnost, no LibreOffice Calc je alat kojem se redovito vraćamo za brzi pregled.

Korisni resursi

R

R je programski jezik otvorenog koda posebno dizajniran za baratanje podacima i statističke analize. Budući da je otpočetka dizajniran s podacima na umu, u jezik su ugrađene brojne funkcije i strukture podataka koje korisnicima omogućavaju brzo baratanje podacima.

Jedno od najpopularnijih sučelja za korištenje R-a je RStudio – besplatno integrirano razvojno sučelje (eng. integrated development environment; IDE) koje korisnicima na raspolaganje stavlja brojne funkcionalnosti koje olakšavaju svakodnevni rad (poput jednostavnog pretraživanja dokumentacije).

Korisni resursi

jamovi

jamovi je statistički softver otvorenog koda koji korisnicima omogućuje rad putem grafičkog sučelja modernog dizajna. jamovijeve mogućnosti baratanja podacima su dosta ograničene, ali je koristan alat za pregledavanje podataka te za proučavanje nekih osnovnih statističkih svojstava.

Korisni resursi

PSPP

PSPP je statistički program otvorenog koda koji je zamišljen kao besplatna i slobodna zamjena za SPSS. PSPP ne nudi toliko funkcija koliko ih nudi SPSS, ali daje slično grafičko sučelje te može biti koristan za pregledavanje podataka.

Korisni resursi

Uređivači teksta (eng. text editor)

Uređivači teksta su, manje ili više jednostavni, programi koji barataju običnim tekstualnim datotekama (eng. plain text files). Ovdje govorimo o programima poput Notepada (koji dolazi s Windows operativnim sustavom), a ne o programima poput LibreOffice Writera ili Microsoft Office Worda.

U kontekstu čišćenja podataka, uređivače teksta prvenstveno možemo koristiti za pregled podataka dostavljenih u običnim tekstualnim formatima, kao što su CSV (comma separated values) ili JSON (JavaScript object notation). Zbog čega bismo za pregledavanje podataka radije koristili neki uređivač teksta nego, primjerice, LibreOffice Calc ili Microsoft Office Excel? Zato što ti programi prilikom otvaranja, na primjer, CSV datoteke mogu napraviti neke izmjene kojih možda nećemo biti svjesni, a koje mogu promijeniti našu percepciju podataka. Primjerice, MS Office Excel mogao bi neki stupac vrijednosti protumačiti kao datum ili smanjiti broj decimala koje se prikazuju. Uređivači teksta, s druge strane, daju nam uvid u sirove podatke, točno onako kako su oni zapisani. Naravno, takav prikaz je ponekad teško čitljiv (pogotovo ako radimo s velikim brojem varijabli), ali je svejedno koristan za dobivanje odgovora na neka precizno postavljena pitanja.

Neki uređivači teksta navedeni su u Korisnim resursima.

Korisni resursi

Pregledavanje podataka

Prvi korak u čišćenju podataka je njihovo pregledavanje. Pregledavanje podataka možemo smatrati procesom koji se sastoji od dvije komponente. Prvo, pregledavanje podataka možemo doslovno shvatiti kao vizualnu inspekciju samih podataka. Drugo, pregledavanje podataka možemo shvatiti kao proučavanje nekih njihovih statističkih svojstava (primjerice, raspona rezultata) i nekih značajki koje bismo mogli smatrati “strukturalnima” (poput imena varijabli ili formata vrijednosti varijabli). Svaka od tih komponenti pobliže je opisana u nastavku ovog poglavlja.

Vizualna inspekcija podataka

Vizualna inspekcija podataka uglavnom je prvi korak koji ćemo napraviti. U idealnom slučaju, koristili bismo alat koji najbolje odgovara formatu dobivenih podataka. Na primjer, ako smo od istraživača dobili SAV datoteku, idealno bi bilo koristiti SPSS. Međutim, prema našem iskustvu, alati otvorenog koda spominjani ranije su sasvim dovoljni za ove potrebe.

Koji je cilj vizualne inspekcije? Prvi i ključan cilj je utvrditi da su podaci koje smo dobili ispravno formatirani. Primjerice, CSV datoteke trebaju sadržavati vrijednosti odvojene zarezima, pa bi ispravno formatirana CSV datoteka trebala izgledati ovako:

varijabla_1,varijabla_2,varijabla_3
vrijednost_1_1,vrijednost_1_2,vrijednost_1_3
vrijednost_2_1,vrijednost_2_2,vrijednost_2_3

Kad bismo otvorili tu datoteku koristeći neki uređivač teksta i vidjeli da podaci izgledaju ovako

varijabla_1    varijabla_2    varijabla_3
vrijednost_1_1    vrijednost_1_2    vrijednost_1_3
vrijednost_2_1    vrijednost_2_2    vrijednost_2_3

znali bismo da se ne radi o ispravno formatiranoj CSV datoteci. U konkretnom slučaju, moglo bi se raditi o tab-delimited datoteci, u kojoj su vrijednosti međusobno odvojene znakom tab. U tom slučaju, i dalje bi se moglo raditi o strukturiranoj i dobro formatiranoj datoteci, ali bismo daljnji rad potencijalno trebali prilagoditi tome da su vrijednosti odvojene znakom tab umjesto zarezom.

U nekom drugom slučaju, mogli bismo očekivati JSON datoteku, koja bi trebala izgledati ovako:

{
    "id": "0001",
    "tip": "keks",
    "vrsta": "cokoladni",
}

Kad bismo otvorili datoteku u nekom uređivaču teksta i vidjeli ovo

<‍!DOCTYPE html>
<‍html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark">
  <‍head>
    <‍meta charset="utf-8">

znali bismo da se uopće ne radi o JSON datoteci, a kamoli o dobro formatiranoj JSON datoteci. Naravno, kad bismo ovu datoteku pokušali otvoriti u nekom drugom programu, dobili bismo obavijest o grešci. Ovisno o tome koji program koristimo, ta bi obavijest mogla biti manje ili više detaljna,

No, razlike mogu biti i znatno suptilnije. Vratimo se na primjer CSV datoteke. Zamislimo da smo otvorili CSV datoteku i dobili sljedeće:

varijabla_1,varijabla_2,varijabla_3
vrijednost_1_1,vrijednost_1_2,vrijednost_1_3,
vrijednost_2_1,vrijednost_2_2,vrijednost_2_3

Obratite pažnju na drugi red – na kraju reda se nalazi zarez kojeg nema na kraju drugih redova. Ovisno o tom koji bismo program koristili za otvaranje ove datoteke mogli bismo naići na različite probleme. Primjerice, program bi mogao protumačiti da u podacima postoji još jedan stupac (čije vrijednosti nedostaju).

Sličan problem mogli bismo imati u ovom slučaju:

varijabla_1,varijabla_2,varijabla_3
vrijednost_1_1,vrijednost_1_2,vrijednost_1_3
vrijednost_2_1,vrijednost_2_2,,vrijednost_2_3

Sada u trećem redu između unosa vrijednost_2_2 i vrijednost_2_3 imamo dva zareza umjesto jednog. U ovom slučaju, program bi također mogao krivo pročitati datoteku, i pretpostaviti da postoji četvrti, neimenovani stupac, koji u trećem redu ima unos vrijednost_2_3.

Uređivači teksta ne bi imali problema s otvaranjem bilo koje od ovih datoteka jer bi prikazali njihov sirovi oblik. Naravno, neki od ovih primjera su suptilni i lako je moguće da navedene pogreške ne bismo primijetili kad bismo imali znatno više stupaca i znatno više redova u podacima. Ipak, uređivači teksta mogu biti korisni i za pomnije proučavanje podataka jednom kad korištenjem nekog drugog programa utvrdimo nelogičnosti ili naiđemo na pogreške.

Osim pogrešaka u formatiranju podataka, vizualna inspekcija pomaže pri brzom otkrivanju problema s vrijednostima varijabli. To se prvenstveno odnosi na SAV datoteke, ali nije ograničeno samo na taj slučaj.

Kad govorimo o SAV datotekama, treba obratiti pozornost na oznake vrijednosti (eng. value labels) navedene u podacima. Ponekad se dogodi da, primjerice, varijabla ima zabilježene vrijednosti od 1 do 6, a da oznake vrijednosti postoje samo za vrijednosti od 1 do 4. U tom slučaju potrebno je upozoriti istraživače – ili su zaboravili staviti oznake za preostale dvije vrijednosti, ili su preostale dvije vrijednosti pogrešni unosi te ih je potrebno ispraviti.

PSPP i jamovi mogu otvarati SAV datoteke, te ih preporučujemo za pregledavanje SAV datoteka (ako SPSS nije dostupan, naravno). Ako imamo pregled podataka u kojem su umjesto vrijednosti (npr. 1 do 6) prikazane oznake vrijednosti (npr. “uopće se ne slažem”, “u potpunosti se slažem”), vrijednosti bez oznake lako je prepoznati kao brojeve među tekstualnim podacima. Primjerice:

varijabla
---------
u potpunosti se slažem
uopće se ne slažem
uopće se ne slažem
6
niti se slažem niti se ne slažem

jamovi je automatski namješten tako da prikazuje oznake vrijednosti ako one postoje.

SAVJET: Dvostrukim klikom na naziv varijable u jamoviju otvara se panel koji prikazuje karakteristike odabrane varijable; primjerice, je li ona numerička ili tekstualna. Također, ako je varijabla numerička, prikazuju se oznake njenih vrijednosti. Taj prikaz je jako pregledan i vrlo je lako prelaziti preko varijabli i provjeravati imaju li sve vrijednosti pripadajuće oznake.

Također, ako se radi o SAV datoteci, želimo provjeriti i sadrže li sve varijable odgovarajuće oznake varijabli (eng. value labels). Ovisno o tom koji program koristimo za pregledavanje podataka, pristupi će se razlikovati. Primjerice, ako koristimo PSPP, tu informaciju možemo saznati pod variable view prikazom, dok u jamoviju taj podatak dobivamo u prikazu koji se otvori kad dvaput kliknemo na ime neke varijable.

Učitavanje podataka

Da bismo mogli proučiti svojstva podataka, najčešće ih prvo učitavamo u neki od ranije navedenih programa za statističku obradu. Kako je broj različitih formata datoteka s podacima i programa koji se mogu koristiti velik, ispod navodimo informacije samo o nekim formatima s kojima smo se često susretali u radu unutar Arhiva.

CSV

CSV (comma separated values) datoteke moguće je bez većih poteškoća otvoriti u:

  • R
    • funkcija read.csv() iz R-ovih osnovnih paketa; ako je kao separator korišten znak ;, možemo koristiti funkciju read.csv2()
    • funkcije read_csv() i read_csv2() iz paketa readr. Te dvije funkcije su analogne R-ovim osnovnim funkcijama, ali imaju nešto drugačije zadane postavke i vraćaju nešto drugačije objekte (tibble umjesto data.frame)
  • jamovi
  • PSPP
  • LibreOffice Calc
  • Microsoft Office Excel

TSV

TSV (tab separated values) datoteke koriste znak tab za odvajanje vrijednosti. Bez većih poteškoća mogu se otvoriti koristeći:

  • R
    • funkcije read.delim() ili read.delim2() iz R-ovih osnovnih paketa (separator je isti u obje funkcije, ali se neke druge zadane opcije razlikuju)
    • funkcija read_tsv() iz paketa readr. Ta je funkcija analogna R-ovim osnovnim funkcijama, ali ima nešto drugačije zadane postavke i vraća nešto drugačije objekte (tibble umjesto data.frame)
  • LibreOffice Calc
  • Microsoft Office Excel
UPOZORENJE: Učitavanje TSV datoteka u R-u često može biti problematično ako podaci nisu pažljivo formatirani. Primjerice, ako imena varijabli na bilo kojem mjestu sadrže razmake ili ako vrijednosti koje nedostaju nisu eksplicitno zabilježene u podacima, nego je samo ostavljeno prazno mjesto. Koliko nam je poznato, ne postoji jedinstven recept za rješavanje takvih poteškoća. Jedna od opcija je, svakako, pokušati otvoriti podatke u LibreOffice Calcu illi nekom drugom programu te ih potom spremiti kao CSV datoteku.

SAV

SAV je SPSS-ov format za datoteke koje sadrže podatke i neke metapodatke o varijablama. Osim u SPSS-u, SAV datoteke mogu se otvoriti u:

  • R
    • funkcija read_sav() iz paketa haven omogućava učitavanje SAV datoteka. Oznake varijabli i oznake vrijednosti također se pohranjuju, kao atribut svake varijable.
  • PSPP
  • jamovi

XLS(X)

Osim u Microsoft Office Excelu, XLS(X) datoteke se lako mogu otvoriti koristeći:

  • R
    • funkcije read_xls() i iz read_xlsx() iz paketa readxl omogućavaju učitavanje XLS odnosno XLSX datoteka.
  • PSPP
  • jamovi
  • LibreOffice Calc

Pregledavanje svojstava podataka

Kad pričamo o pregledavanju svojstava podataka, možemo razmatrati dvije široke kategorije: (1) pregledavanje “strukturalnih” svojstava podataka i (2) pregledavanje statističkih svojstava podataka.

Strukturalna svojstva podataka

Strukturalnim svojstvima podataka ovdje ćemo smatrati svojstvima koja se daju iščitati iz samih podataka bez da se na njima primjenjuju neke statističke funkcije.

Jedna od prvih stvari koje ćemo provjeriti su imena varijabli. Skupovi podataka koje proizvode istraživači unutar društvenih područja često sadrže znakove poput razmaka, povlaka, točaka ili upitnika, koji mogu stvarati probleme prilikom rada s podacima u programskim jezicima poput R-a ili Pythona, ali i  drugim programima.

Osim što sadrže ranije navedene znakove, imenovanje varijabli često nije konzistentno. Primjerice, ponekad će odgovori na pitanja u kojima je moguće odabrati više vrijednosti biti spremljeni u nekoliko varijabli s malim varijacijama u imenima koje je ponekad teško uočiti, a mogu biti izvor frustracija. Zamislimo da je u nekom upitniku postojalo pitanje na kojem su sudionici mogli odabrati između 0 i 3 odgovora. Odgovori na ta pitanja mogli bi biti spremljeni u varijable

Pitanje- odgovor “A”
Pitanje - odgovor “B”
Pitanje -  odgovor “C”

Font odabran u tablici razlike čini lako uočljivima, no u programu s nekim drugim fontom i većim brojem varijabli, te se razlike lako mogu previdjeti.

Koji su problemi s gore navedenim imenima?

  1. imena varijabli sadrže znakove -,  (razmak) i “” koji u različitim programskim jezicima mogu imati različite funkcije (npr. - predstavlja oduzimanje), što znači da bi rad s takvim imenima varijabli mogao zahtijevati posebne procedure
  2. broj razmaka između prefiksa Pitanje i povlake varira od varijable do varijable: u prvom redu razmaka nema, dok u preostala dva reda imamo po jedan razmak. Osim toga, i broj razmaka između povlake i riječi odgovor također varira između jedan (u prva dva reda) i dva (u posljednjem redu). Zbog toga, kad bismo, na primjer, htjeli pretražiti sve varijable čije ime sadrži Pitanje -, ne bismo obuhvatili prvu varijablu.
  3. Način na koji navodnici mogu stvarati probleme jako ovisi o tome koji alat koristimo za rad s podacima, tako da oko toga nećemo ulaziti u detalje.

Preporuka je imena varijabli formirati tako da:

  1. se korišteni znakovi svedu na mala i velika slova engleske abecede te podvlaku (_)
  2. imena varijabli ne započinju brojem
  3. se primjenjuje konzistentan obrazac imenovanja

Ispod se nalaze tri prijedloga boljih imena varijabli:

1) pitanje_odgovorA, pitanje_odgovorB, pitanje_odgovorC
2) pitanjeOdgovorA, pitanjeOdgovorB, pitanjeOdgovorC
3) pitanje_Odgovor_a, pitanje_Odgovor_b, pitanje_Odgovor_c

Naravno, konkretan odabir uvelike je stvar osobnih preferencija i dogovora članova istraživačkog tima.

SAVJET: Za programski jezik R postoji paket janitor, u kojem se nalazi funkcija clean_names(). Ona kao argument prima objekt s podacima (data.frame ili tibble) te vraća isti taj objekt, ali s pročišćenim imenima varijabli.

Također, treba obratiti pažnju na to da datoteka s podacima ne sadrži više varijabli s istim nazivom.

Osim provjeravanja imena varijabli, želimo provjeriti i konzistentnost zabilježenih tekstualnih vrijednosti. Zamislimo da su istraživači u nekom upitniku prikupljali podataka o pripadnosti političkoj stranci, te da su ispod prikazane neke vrijednosti koje su prikupili

stranka
-------
Stranka za A i B
Pokret - C
Pokret- C
Stranka za A i  B

Ovdje vidimo da postoji nekonzistentnost u bilježenju unosa: za svaku od navedenih stranaka imamo dvije varijante koje se neznatno razlikuju. Kod Stranka za A i B imamo varijantu s jednim i s dva razmaka prije slova “B”. Za Pokret - C imamo varijantu sa i bez razmaka između riječi “Pokret” i povlake.

Kad radimo s vrijednostima varijabli, uglavnom nećemo htjeti raditi široke i mehaničke zahvate kao što je to slučaj kod imena varijabli; osim što unosi mogu predstavljati konkretna imena entiteta u stvarnosti, često želimo zadržati određenu formu radi grafičkog prikazivanja. Primjerice, ako pripremamo graf za objavu, radije bismo vidjeli oznake Stranka za A i B i Pokret - C nego stranka_za_a_i_b i pokret_c. Naravno, ovisno o tome koji alat koristimo za analiziranje podataka, i te poteškoće se mogu lakše ili teži zaobići.

Informaciju o vrijednostima zabilježenima u pojedinoj varijabli uglavnom možemo dobiti uporabom funkcija koje zbrajaju broj pojava određenog unosa u danoj varijabli. Za svaku varijablu koja sadrži tekstualne unose potrebno je pregledati jedinstvene zabilježene vrijednosti, te utvrditi da li postoje različito unesene vrijednosti koje bilježe isti podatak.

SAVJET: U programskom jeziku možemo koristiti funkciju unique() koja vraća jedinstvene elemente nekog vektora (odnosno, na primjer, nekog stupca u data.frame objektu).

Statistička svojstva podataka

Kad pričamo o statističkim svojstvima podataka, mislimo na neke osnovne deskriptivne pokazatelje. Za numeričke varijable uglavnom računamo samo raspon vrijednosti. Provjeravamo jesu li rasponi u skladu s informacijama koje varijabla predstavlja. Primjerice, ako je varijabla dob, očekujemo da će najmanja zabilježena vrijednost biti jednaka najmlađoj dobi potrebnoj za sudjelovanje u istraživanju (s apsolutnom donjom granicom koja iznosi 0); ako varijabla bilježi prihode u kunama, očekujemo da će najmanja moguća vrijednost biti 0, dok gornja granica može uvelike varirati; ako je varijabla odgovor izražen na skali Likertovog tipa, onda očekujemo da će najmanja i najveća zabilježena vrijednost biti jednaka ili veća odnosno jednaka ili manja od krajnjih uporišnih točaka skale.

Korisni resursi

CESSDA Data Management Expert Guide, poglavlje 3. https://www.cessda.eu/Training/Training-Resources/Library/Data-Management-Expert-Guide