Uvod u programski jezik R
- Objavljeno u Novosti
O jeziku R smo već pisali prije nešto više od dvije godine. Kako od tada njegova popularnost kontinuirano raste, došao je trenutak da se ponovo napravi pregled tog područja u svojevrsnom serijalu o R jeziku i njegovu korištenju. Kao što ćete vidjeti u nastavku teksta, riječ je o znanju koje se sve više traži od TI stručnjaka, pa nije naodmet imati ga u svojem CV-ju kod zapošljavanja.
U današnjem, prvom nastavku R ćemo predstaviti onom dijelu čitatelja koji s njim još nisu imali nikakav kontakt, pokazat ćemo njegovu trenutnu poziciju na tržištu te napraviti kratku usporedbu s programskim jezikom Python, kao drugom vrlo „vrućom“ tehnologijom, koja se primjenjuje u istim ili sličnim područjima. Tek toliko da vidite kako se te dvije tehnologije međusobno ne isključuju. Štoviše, čak ih možete koristiti i zajedno na istim projektima.
Nadamo se da će vas tekst koji upravo čitate zainteresirati za ovo područje kako biste u sljedećim nastavcima serijala krenuli s njegovim korištenjem na pravim primjerima.
Uvod u jezik R
R je programski jezik te okruženje za statističke izračune i vizualizaciju. Može se slobodno koristiti i distribuirati, pa pripada grupi alata otvorenog kôda („open-source“). Izraz „okruženje“ ističe da je R dobro planiran i konzistentan sustav, a ne sustav koji se postupno dopunjava specifičnim i nefleksibilnim programskim alatima, što je čest slučaj kod drugih programa za analizu podataka.
R predstavlja implementaciju jezika S, koji je razvio John Chambers s kolegama u Bell Laboratories te Robert Gentleman sa sveučilišta u Aucklandu, Novi Zeland. Trenutno jezik R razvija tzv. jezgra, to jest osnovna grupa za razvoj jezika R („R Core Team“). Iako postoje neke važne međusobne razlike, mnogi programi napisani u jeziku S mogu se izvoditi nepromijenjeni i u jeziku R.
R u startu pruža širok izbor statističkih metoda za linearno i nelinearno modeliranje, klasične statističke testove, analize vremenskih serija, odnosno klasteriranje. Lako je proširiv velikim izborom različitih grafičkih tehnika. Tijekom vremena statističari su razvili stotine specijaliziranih statističkih procedura za širok raspon uporabe putem tzv. pridodanih paketa (contributed packages), koji su također slobodno dostupni i integrirani izravno sa sustavom R.
Iako je donedavno bilo uvriježeno mišljenje kako sustav R koristi uglavnom akademska zajednica, dok se za analize podataka u tvrtkama koriste neki drugi alati (npr. Standard Sustav SAS), danas je situacija osjetno drugačija, o čemu govore podaci dostupni s nekoliko nezavisnih i relevantnih izvora. Kao primjer relevantnosti korištenja u praksi spomenimo da je sustav R Federalna agencija za lijekove (Federal Drug Administration - FDA) označila pogodnim za tumačenje podataka iz kliničkih istraživanja. Dio kompanija koje koriste R za analizu i prezentaciju svojih podataka može se pronaći na sljedećoj web adresi: https://www.listendata.com/2016/12/companies-using-r.html U Hrvatskoj je posljednjih godina također zamijećen sličan trend korištenja R-a u domaćim kompanijama.
Neke prednosti sustava R
U odnosu na druge slične alate R ima nekoliko prednosti, koje navodimo u nastavku:
• R je dostupan kao slobodan softver pod uvjetima Free Software Foundation GNU u obliku izvornog kôda (https://en.wikipedia.org/wiki/GNU_Project), što znači da dozvoljava: slobodu uporabe programa u bilo koje svrhe, slobodu proučavanja načina rada programa i mogućnost prilagodbe vlastitim potrebama, slobodu kopiranja i distribucije programa te slobodu poboljšavanja programa, kao i mogućnost dijeljenja poboljšanog programa u zajednici
• Dostupan je putem interneta na raznim UNIX platformama i drugim sličnim sustavima (uključujući FreeBSD i Linux) te platformama Windows i MacOS
• Proizvod je međunarodne suradnje vrhunskih statističara i dizajnera programskih jezika
• Dozvoljava statističke analize i vizualizaciju te njihovo neograničeno unapređivanje
• Ima mogućnost rada na velikim i kompleksnim objektima - ograničenja su u pravilu vezana uz operacijski sustav koji se koristi, a ne za sam sustav R
• Postoji vrlo dobra tehnička dokumentacija o paketima i njihovim funkcijama te velik broj udžbenika i priručnika (na primjer: https://cran.r-project.org/manuals.html) koje, između ostalih, pripremaju sami korisnici. Također, postoji velik broj knjiga koje objašnjavaju kako provesti pojedine vrste analiza koristeći sustav R. Početna web adresa centralne dokumentacije je https://www.r-project.org/other-docs.html
• Svaki korak u analizi je sačuvan, pa se takva povijest (datoteka .Rhistory) može naknadno koristiti u novim analizama ili kao dokumentacija postojećoj
• Zbog svoje organizacije potiče kritičko razmišljanje tijekom provedbe analize, za razliku od čestog poticanja izvršavanja analiza pritiskom na jednu tipku
• U potpunosti je programibilan, a u podlozi sadrži vrlo sofisticirani jezik S
• Pisanjem skripta i korisničkih funkcija analize se jednostavno automatiziraju. Na taj način je i pojednostavljena priprema korisničkih paketa te njihovo stavljanje zajednici na uporabu i provjeru
• Programski kôd svake funkcije je javan, pa je vidljiv svaki korišteni algoritam. Uz to, stručnjaci - statističari osiguravaju korektnost ponuđenih funkcija
Neki nedostaci sustava R
Kao najčešći nedostaci R-a navode se:
• R nije baš jednostavan za početnike, pa je dosta „samoukih“ osoba u ovom području odustalo od kasnijeg stvarnog korištenja. Međutim, nakon početnih problema oko usvajanja znanja o osnovnom načinu funkcioniranja sustava i strukturama podataka, kasnija linija učenja je za R veoma strma te slična ostalim statističkim paketima
• U svojoj suštini temelji se na 40 godina staroj tehnologiji
• Postoji slaba podrška analizama podataka putem grafičkih korisničkih sučelja. Za rad u R-u uglavnom je nužno pisanje naredbi, kako bi se provele analize te napravila vizualizacija rezultata. Mnogi korisnici ovo ipak ne smatraju nedostatkom zbog mogućnosti uspostave potpune kontrole nad sustavom. Kao pokušaj rješavanja ovog problema nastao je projekt Deducer s kojim se možete detaljnije upoznati na adresi https://www.deducer.org/pmwiki/index.php?n=Main
• Korisnik odlučuje o svakom koraku analize, pa je i provodi po koracima. Ovakav način rada ima svoje prednosti, kao što je čuvanje tijeka analize (eng. processing log), koje se koristi u svrhu izvještavanja ili ponavljanja analize
Trenutna popularnost
Za prikaz trenutne popularnosti jezika R najjednostavnije je konzultirati standardne relevantne izvore za takvu namjenu (priložene su i prateće slike uz tekst).
Prema PYPL indeksu (https://pypl.github.io/PYPL.html), koji mjeri učestalost pretraživanja uputa o korištenju nekog programskog jezika, R je već duže vrijeme na čvrstom 7. mjestu. Prema drugom sličnom izvoru, TIOBE indeksu (https://www.tiobe.com/tiobe-index/), čija se rang-lista temelji na podacima dobivenim od vodećih svjetskih tražilica (Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube i Baidu), R je trenutno nešto lošije plasiran, na 15. mjestu, što uopće nije loš rezultat kad se u obzir uzme ukupan broj različitih programskih jezika.
A kako je s potražnjom za R-om kod zapošljavanja? Web lokacija ITJobsWatch (https://www.itjobswatch.co.uk/jobs/uk/r.do), koja prati različite relevantne parametre u vezi s tržištem rada u IT sektoru, otkrila je da učestalost pojma R u oglasima za posao konstantno raste, što je posebno izraženo upravo u posljednje vrijeme. Dakle, riječ je o potencijalno vrlo poželjnom znanju kod traženja novog posla u IT sektoru (i šire) ili promjeni postojećeg.
R vs. Python
Budući da se posljednjih godina Python sve više koristi u različitim područjima (što uključuje i ona za čije je korištenje upravo zamišljen R), zanimljivo je pogledati sličnosti i razlike između navedenih alata.
Polazište i namjena
Dok je R nastao kao sljedbenik programskog jezika S, s naglaskom na jednostavnijoj i „ljubaznijoj“ obradi podataka te pripremi odgovarajućih statističkih i grafičkih modela, Python je svoje ime dobio po poznatoj humorističnoj seriji „Monty Python’s Flying Circus“ kao općenamjenski programski jezik s vrlo preglednim kodom i jednostavnim učenjem te primjenom na vrlo različitim područjima.
Ciljna grupa
Iako je u početku bio usmjeren prije svega na akademsku zajednicu, R je tijekom godina zauzeo vrlo istaknute pozicije i u poduzećima širom svijeta. Polazište Pythona su programeri koji bi se htjeli pozabaviti i rješavanjem problema s područja istraživanja i analize podataka.
Upotrebljivost i fleksibilnost
U R-u se uz vrlo malo kodiranja mogu riješiti vrlo složeni problemi i to na različite načine, ovisno o stupnju znanja korisnika, dok se u Pythonu isti problemi rješavaju na manje ili više sličan način.
Učenje i podrška
Učenje R-a je nešto sporije na samom početku, ali se zato kasnije ubrzava, dok je Python na samom početku jednostavniji za potpune početnike u programiranju. Za oba alata postoji vrlo široka podrška. CRAN (Comprehensive R Archive Network) za R te PyPi (Python Package Indeks) za Python.
Međusobna suradnja
R pomoću dodatka rPython može koristiti Python pakete, dok se RPy2 može koristiti u obrnutom smjeru. To zapravo znači da se oba alata mogu zajednički koristiti na složenim projektima, ako se za tim ukaže potreba.
I primjer za kraj
Završimo današnji uvodni tekst jednim kraćim primjerom u R-u koji, osim već postojećih komentara u kodu, za sada nećemo posebno objašnjavati. Cilj mu je jednostavno najaviti što vas otprilike čeka u sljedećim nastavcima serijala.
#osiguravamo svima jednak rezultat
set.seed(1000)
#stvaramo dvije slučajne varijable, x i y
#izvlačimo po 500 brojeva iz normalne raspodjele
x
y
#generička grafička funkcija visoke razine
#x predstavlja vrijednosti x koordinate, a y - y koordinate
#pozivamo grafičku funkciju visoke razine koje inicira dijagram
plot(x, y)
#nadopunjavamo postojeći dijagram naslovom korištenjem funkcije niske razine
title(main=”Dijagram raspršenja dvaju generiranih slučajnih varijabli x i y”)