Izlaist līdz saturam

R 3.0.0

Šodien ir liela diena programmas R lietotājiem – izlaista jaunākā R versija ar numuru 3.0.0 (tādējādi norādot, ka ir sācies jauns posms R attīstībā).

Kā jau parasti ar programmu R, ārēji izmaiņas nebūs ātri pamanāmas, toties ir vairākas būtiskas izmaiņas R darbībā:

  • tagad var veidot vektorus, kuru garums pārsniedz 2^31 (uz 64 bitu sistēmas);
  • uz 64 bitu sistēmām R var atvēlēt lielāku atmiņas daudzumu (RAM), ko ierobežo tikai OS iespējas;
  • daudzām funkcijām pievienotas jaunas iespējas, kā arī novērstas atrastās poblēmas.

Būtiskākais – uzinstalējot jaunāko R versiju, ir jāpārinstalē visas paketes, kuras Jūs izmantojat.

Vairāk informācijas par veiktajām izmaiņām un uzlabojumiem www.r-bloggers.com

Par programmu R, Excel un SPSS izmantošanu studentu apmācībā

Šodien man palūdza uzrakstīt viedokli par R, Excel un SPSS izmantošanu apmācībā. Nolēmu šo viedokli uztaisīt publisku, izveidojot ierakstu blogā. Šeit būs tikai īss viedoklis, kura galvenais uzdevums ir paskaidrot kāpēc vajadzētu izvēlēties R kā alternatīvu Excel un SPSS.

Programmām SPSS un Excel protams ir savas priekšrocības, no kurām kā galvenās no ikdienas lietotāja puses varētu minēt:

  • Intuitīva darbošanās – ar izvēlnēm var nonākt pie vēlamā rezultāta;
  • Iespēja veidot grafikus izmantojot gatavus šablonus;
  • Plaši pieejami materiāli gan latviešu, gan citās valodās;
  • Vairumam studentu ir priekšzināšanas darbā ar Excel.

Tomēr šīm programmām ir arī savi trūkumi:
Excel

  • Nav statistikas programma – attiecīgi statistiskie testi ir pieejami kā Add-in, turklāt šeit ir pieejami tikai daļa no vienkāršākajiem testiem. Nav pieejami pat neparametriskie testi paraugkopu salīdzināšanai, kas ikdienā būtu bieži izmantojami. Lai mācītu kādus papildus testu nākas izmantot arī citas programmas. Tas ir viens no galvenajiem iemesliem, kāpēc Excel vairs netiek izmantots statistikas mācīšanai LU BF.
  • Lai arī grafikus ir viegli veidot, no zinātniskā viedokļa standarta grafiki vairumā gadījumu neatbilst labai praksei tam, kā grafikam jāizskātās (trīsdimensiju grafiki, nevajadzīgi virsraksti, apzīmējumi).
  • Versijas – datorklasē visos datoros būs vienota Excel versija, bet studentiem katram būs cita versija, kas reizēm apgrūtina apmācību, jo mainās izvēļņu izkārtojums, pieejamās papildus iespējas.

SPSS

  • Programmas iespējas ir atkarīgas no papildus moduļiem, kas tiek iekļauti licenzē – pamata SPSS ļauj darīt tikai niecīgu daļu no iespējamām analīzēm. Pat par nedaudz sarežģītākām analīzēm ir jāņem papildus modulis. Šīs politikas dēļ ir bijusi situāciju, ka vienā gadā nebija iespēja mācīt visas tēmas, jo konkrētā gada licenze neparedzēja šādus analīzes veidus (tāpēc arī meklēta alternatīva R veidā)
  • Cena – nav iespējams nodrošināt, ka visiem studentiem ir pieejama programma SPSS, turklāt tādā pašā versijā kā datorklasē. Tādējādi studenti apgūst programmu SPSS, kura ārpus universitātes viņiem varbūt vairs nav pieejama. Universitātei arī nebūtu jāveicina nelegālo programmu izmantošana, jo tas visdrīzāk būs risinājums, kuru meklēs studenti.

Par R, iespējams, pilnīgi objektīvu vērtējumu vairs neesmu spējīgs sniegt, jo esmu liels šīs programmas atbalstītājs, bet tomēr mēģināšu:

Trūkumi:

  • Komandu rindas – nenoliedzami lielākais “klupšanas akmenis” gan mācoties, gan mācot programmu R ir tas, ka visas darbības notiek rakstot komandu rindas, kuras ir jāzin, vai arī jāmāk tās atrast. Turklāt, komandu rindu rakstīšana nozīmē, ka nedrīkst būt kļūdas pierakstos, pretējā gadījumā darbība netiek izpildīta. Tomēr mācību procesā ir iespējams vienkāršot šo komandu rindu rakstīšanu līdz minimumam – ir jāiemāca importēt failus (paris komandas), vajadzības gadījumā atlasīt datus, un pēc tam jau pamatstatistisko analīžu veikšanai ir gatavas funkcijas, kas veic visas nepieciešamas analīzes, piemēram, lineāra regresija – lm(), korelācija – cor(), vidējo aritmētisko salīdzināšana – t.test(). Pēc tam jau mācību procesa laikā var likt klāt jau sarezģītākas lietas, ko iespējams izdarīt R.
  • R lietotāju skaits – šobrīd starp pasniedzējiem programma R netiek plaši izmantota, kā rezultātā studentiem ir samazināta iespēja konsultēties ar saviem darba vadītājiem par praktiskām lietām datu analīzē/apstrādē. Tāpēc vienlaicīgi ar studentu apmācību, ir jādomā arī par pasniedzēju apmācību šajos jautājumos.
  • Mācību materiāli – ir piejemi plaši materiāli angļu valodā (gan grāmatas, gan bezmaksas materiāli internet), bet samērā maz ir materiālu latviešu valodā. Šo jautājumu esmu meģinājis risināt gan izveidojot R pamācības mājaslapu (http://dendro.daba.lv/R/), gan arī sākot veidot bezmaksas R grāmatu biologiem (http://dendro.daba.lv/R/gramata/)

Priekšrocības

  • Bezmaksas – programma brīvi pieejama jebkurai datorsistēmai. Var nodrošināt, ka visiem studentiem ir šī programma, turklāt visi var izmantot vienu un to pašu versiju;
  • Papildinājumi – R programma šobrīd ir pieejamas vairāk nekā 4000 oficiālās papildus paketes, plus vairāki tūkstoši citu pakešu, kas nodrošina, ka ar R var veikt lielāko daļu statistisko testu gandrīz jebkurā zinātnes virzienā;
  • Savas funkcijas – programmā R var veidots pats savas funkcijas, kuras vajadzības gadījumā var apvienot savās paketēs;
  • Grafiku veidošana – viena no labākajām R iespējām ir veidot augstas kvalitātes grafikus, kuros var kontrolēt gandrīz visus parametrus.
  • Savietojamība – ar programmu R izmantojot gan bāzes versiju, gan papildus paketes, ir iespējams importēt ļoti plašu klāstu failu (.txt, .csv, Excel, SPSS, SAS, STATA, …), importēt failus no interneta, izmantot API, veidot pieslēgumus datubāzēm (SQL).
  • Atkārtojamība – ir iespējams veidot R skripta failus, saglabājot visas darītās darbības un nodrošināt, ka arī citi var atkārtot visu, kas veikts, lai pārliecinātos par aprēķinu pareizību. Šobrīd R ir izveidotas paketes, kas nodrošina arī iespējas veidot automātisku ziņojumu veidošanu, no jauna analizējot datus.

R papildinājumi:

  • Rcmdr (Rcommander) – viena no R paketēm, kas nodrošina GUI iespējas darbā ar R, piedāvājot lietājam iespēju ar izvēlnēm importēt failus, veikt analīzes, veidot grafikus, vienlaikus arī ļaujot rakstīt komandu rindas, ja nepieciešams. Tā varētu būt laba alternatīva sākot darbu ar R un mācot pamatstatistiskos testus.
  • RStudio (http://www.rstudio.com) – atsevišķa programma (IDE), kas nodrošina saskarsni ar programmu R. Joprojām visas pamatdarbības jāveic ar komandu rindām, bet ir iespēja vienotā programmā pārvaldīt visus R komandu skriptus, grafikus, veidot projektus, veidot sasaisti ar tādām vietnēm kā github automātiskai sinhronizācijai.

reshape2 pakete

Ļoti bieži dati, kas ir jāizmanto analīzēm programmā R, ir sagatavoti nepareizā formātā, piemēram, katra mēneša dati ir savā kolonnā, bet reāli vajadzētu, ka ir viena kolonna ar mēnešu nosaukumiem, bet otrā kolonnā būtu jābūt visiem mērījumiem. Lai ērti varētu veikt datu pārveidošanu no viena formāta uz otru (no “gara” uz “platu” vai no “plata” uz “garu”), ir pieejamas vairākas funkcijas un paketes. Viena no šādām paketēm ir pakete reshape2.

Nozīmīgākās funkcijas šajā paketē ir melt() un dcast(). Funkcija melt() pārveido tabulu no “platā” formāta uz “garo”, bet funkcija dcast() tabulu pārvērš no “garā” formāta uz “plato” formātu.


> df<-data.frame(diena=c(1,2,3),janv=c(1.2,3.4,5.6),febr=c(7.8,8.9,1.7))
> df

  diena janv febr
1 1 1.2 7.8
2 2 3.4 8.9
3 3 5.6 1.7


> library(reshape2)
> df.long<-melt(df,id.vars="diena",variable.name="menesis",value.name="temp")
> df.long

  diena menesis temp
1 1 janv 1.2
2 2 janv 3.4
3 3 janv 5.6
4 1 febr 7.8
5 2 febr 8.9
6 3 febr 1.7


> df.atp<-dcast(df.long,diena~menesis)
> df.atp

  diena janv febr
1 1 1.2 7.8
2 2 3.4 8.9
3 3 5.6 1.7

plyr pakete

Viena no R paketēm, kurai tiešām ir vērts pievērst uzmanību ir plyr. Iemācoties strādāt ar šīs paketes funkcijām, ātri nonāksiet pie secinājuma, ka izdodas ietaupīt gan laiku, gan garas komandu rindas vienu un to pašu uzdevumu veikšanai.

Pakete plyr ir paredzēta, lai ieviestu principus – sadalīt datu objektu pa Jums interesējošiem līmeņiem, tad katram līmenim piemērot aprēķinus un iegūtos aprēķinus apvienot vienotā objektā. Pamatfunkciju nosaukumi veidoti no pieciem burtiem, piemēram, funkcija ddply() nozīmē, ka analizējamais datu objekts būs datu tabulu (pirmais d burts nosaukumā) un iegūtais rezultāts atkal ir jāsaglabā kā datu tabulu (otrais d burts nosaukumā).

Funkcijas nodrošina iespējas gan veikt apkopojumus, gan arī pārveidot esošos datu objektus pievienojot tiem jaunus mainīgos.

Zemāk ir vienkāršs piemērs, izmantojot iris datu objektu. Katrai no trīs sugām (Species), aprēķināta vidējā Sepal.Length vērtība un saskaitītas kopā Petal.Length vērtības.

> library(plyr)
> ddply(iris,.(Species),
summarize,Videjais=mean(Sepal.Length),Summa=sum(Petal.Length))

Species Videjais Summa
setosa 5.006 73.1
versicolor 5.936 213.0
virginica 6.588 277.6

Vairāk informācijas par šo paketi un tās funkcijām var iegūt paketes autora rakstā.

ggplot2 pakete

Uzsākot rakstu sēriju par R paketēm, kā pirmo gribu izcelt paketi ggplot2, kas šobrīd ir kļuvusi par vienu no biežām izmantotajām paketēm. ggplot2 ir paredzētu grafiku veidošanai, blakus bāzes grafikiem un lattice grafiskajai sistēmai.

ggplot2 pamatā ir likta “gramatika” par to kā būtu jāizskatās labam grafikam, tāpēc varat pat nemēģināt veidot tajā grafikus ar divām y asīm – tas nav iespējams un tuvākajā laikā arī nebūšot.

Man ggplot2 grafiki patīk ar to, ka šajā sistēmā var ērti attēlot sarežģītas datu struktūras, veikt ērtu un ātru atsevišķu grafiku veidošanu katram dalījuma līmenim.

Protams arī grafiku izskats šajā sistēmā ir daudz vizuāli pievilcīgāks, nekā bāzes grafiskajā sistēmā.

Lai sākstu strādāt ar ggplot2 grafikiem, varu ieteikt apskatīt divas mājaslapas:

  • ggplot2 oficiālā lapa
  • pamācība darbā ar ggplot2 ar piemēriem
  • R paketes

    Viena no R priekšrocībām, bet vienlaikus arī problēma, ir tā, ka bez bāzes R programmas ir pieejamas arī ļoti daudzas (tūkstošiem) papildus paketes, kuras varat instalēt, tādējādi iegūstot vēl lielākas iespējas programmā R.

    Problēma šo daudzo pakešu skaitā ir tā, ka bieži ir grūti saprast, kuru paketi tad tieši vajadzētu izmantot, kurā ir tās labākās funkcijas utt. Turpmāk mēgināšu sniegt nelielus apskatus par R paketēm un funkcijām, kuras es uzskatu par ļoti noderīgām manā ikdienas darbā.

    Divu tabulu apvienošana

    Reizēm ir nepieciešams apvienot divas tabulas balstoties uz kolonnu, kas ir kopējā visām tabulām.
    Piemēram izveidosim divas tabulas tab1 un tab2, kur abās tabulās ir kolonna gints, bet atšķiras otrā kolonna. Turklāt tikai viena no gints vērtībām atkārtojas abās tabulās.

    tab1 <- data.frame(gints = c("Pinus", "Picea", "Alnus"), skaits = c(5, 8, 3))
    tab2 <- data.frame(gints = c("Picea", "Ulmus", "Quercus"), diametrs = c(25, 
        34, 67))
    
    tab1
    
    ##   gints skaits
    ## 1 Pinus      5
    ## 2 Picea      8
    ## 3 Alnus      3
    
    tab2
    
    ##     gints diametrs
    ## 1   Picea       25
    ## 2   Ulmus       34
    ## 3 Quercus       67
    

    Viena no funkcijām, kuru var izmantot tabulu apvienošanai, ir funkcija merge(), kurai kā argumenti obligāti jānorāda tabulas, kuras vēlas apvienot. Ja kolonna pēc kuras vēlas veikt apvienošanu ir ar vienādu nosaukumu abās tabulas, tad to var nenorādīt (šajā gadījumā tā ir kolonna gints). Ja kolonnu nosaukumi ir atšķirīgi, tad jālieto argumenti by.x= un by.x= ar norādītiem pirmās un otrās tabulas kolonnu nosaukumiem.

    Nenorādot papildus argumentus, funkcija merge() izveidos jaunu tabulu, kurā būs kolonnas no abām tabulām, bet kā rindiņas parādīsies tikai tie ieraksti, kuriem būs vērtības abās tabulās.

    tab3 <- merge(tab1, tab2)
    tab3
    
    ##   gints skaits diametrs
    ## 1 Picea      8       25
    

    Kā papildus argumentu norādot all=TRUE, jaunajā tabulā parādīsies visas vērtības (rindiņas) no abām tabulām, tikai neesošo vērtību vietās parādīsies NA.

    tab4 <- merge(tab1, tab2, all = TRUE)
    tab4
    
    ##     gints skaits diametrs
    ## 1   Alnus      3       NA
    ## 2   Picea      8       25
    ## 3   Pinus      5       NA
    ## 4 Quercus     NA       67
    ## 5   Ulmus     NA       34
    

    Papildus arguments all.x=TRUE nodrošinās to, ka jaunājā tabulā būs tikai tās vērtības (rindiņas), kas bija pirmajā tabulā, bet no otrās tabulas tiks pievienotas atbilstošo kolonnu vērtības pirmās tabulas rindiņām.

    tab5 <- merge(tab1, tab2, all.x = TRUE)
    tab5
    
    ##   gints skaits diametrs
    ## 1 Alnus      3       NA
    ## 2 Picea      8       25
    ## 3 Pinus      5       NA
    

    Ar argumentu all.y=TRUE panāk pretēju efektu iepriekšējam piemēram.

    tab6 <- merge(tab1, tab2, all.y = TRUE)
    tab6
    
    ##     gints skaits diametrs
    ## 1   Picea      8       25
    ## 2 Quercus     NA       67
    ## 3   Ulmus     NA       34
    
    Follow

    Get every new post delivered to your Inbox.