Introducere in R

55
Introducere in R Cursul 2-modul 2

description

Programul R

Transcript of Introducere in R

  • Introducere in RCursul 2-modul 2

  • De ce utilizam REste gratuit (open-source)Functioneaza pe o mare varietate de platforme incluzand Windows (dar si Mac, Linux, chiar Playstation 3)Ofera o platforma pentru programarea metodelor noi de statistica intr-o modalitate facilaContine rutine statistice avansate care nu sunt disponibile in alte programeInclude cele mai moderne disponibilitati graficePermite o trecere graduala de la utilizator la programator.

  • Ce inseamna free softwareDreptul de a utiliza programul pentru orice scopuri este necesarDreptul de a studia programul si a il adapta necesitatilor fiecaruia (inclusiv de a modifica codul sursa)Dreptul de a il redistribui altor persoane care au nevoie de elDreptul de a imbunatati programul si de a distribui modificarile realizate spre binele comunitatii

  • Cum se descarcaSe cauta pe Google using R sau CRAN (Comprehensive R Archive Network) sauSe utilizeaza direct link-ulhttp://www.r-project.org

  • Imagini grafice obtinute in R

  • TutorialeP. Kuhnert & B. Venables, An Introduction to R: Software for Statistical Modeling & Computing J.H. Maindonald, Using R for Data Analysis and Graphics B. Muenchen, R for SAS and SPSS Users W.J. Owen, The R Guide D. Rossiter, Introduction to the R Project for Statistical Computing for Use at the ITC W.N. Venebles & D. M. Smith, An Introduction to RLista completa de documentatie la: http://www.r-project.org/doc/bib/R-books.html

  • IstoricInitial R a fost creat de Ross Ihaka si Robert Gentleman de la Departamentul de Statistica al Universitatii din Auckland, Noua Zeelanda in cursul anilor 90 ca dialect al limbajului S (creat in 1976 de catre John Chambers in laboratoarele Bell).

    Este un limbaj pentru realizarea calculelor si reprezentarilor grafice in statistica.

  • Dificultati pentru incepatoriSintaxa. O parantez greit pus, sau o parantez [.] n loc de (.) poate crea erori foarte mari.Scripturi. Adica un fisier cu extensia .R. conteaza unde este salvat, proiectele diferite s fie puse n directoare diferite Introducerea datelor din fiiere.-transferarea datelor in si din Excel de exemplu

  • Dezavantaje ale limbajului RFunctionalitatea se bazeaza pe necesitatile consumatorilor si contributiile utilizatorilor. Daca aveti nevoie de imbunatatiri le faceti singuri!Obiectele cu care se lucreaza trebuie stocate in memoria fizica a computerului (deci acesta trebuie sa faca fata in cazul utilizarii unor obiecte care ocupa mult spatiu de memorie)

  • Interfata ROdata cu pornirea sistemului R va apare fereastra principala (Rgui-Graphic User Interface) cu o sub-fereastra (R Console)In fereastra Consola cursorul ramane in asteptarea comenzilor (>) permitand lucrul in mod interactiv.Alta metoda este lucrul cu ajutorul scripturilor (apelate prin Open script)

  • Prima sesiune de lucru in R

  • Fereastra de lucru in R

  • Comenzi de baza in RComenzile se pot introduce cate una in momentul aparitiei prompterului (>) sau se poate introduce un set de comenzi dintr-un fisier sursa.Exista o mare varietate de date cum ar fi: vectori (numerici, de caractere, logici), matrici, tabele de date si listePentru a iesi din programul R utilizati quit>q()

  • HelpPentru a obine informaii despre facilitile oferite de functia help(), din R > help.start() Pentru a obine informaii despre o anumit funcie R, de exemplu plot> help(plot) sau comanda alternativ > ?plot

  • Introducere in RAtribuirea si rezultatele calculelor pot fi scrise sub forma de obiecte utilizand operatori ca:O sageata formata din caracterul mai mic si caracterul liniuta (
  • ObiecteIn R exista cinci tipuri de clase de obiecte:CaracterNumeric (numere reale)IntregComplexLogicObiectul de baza este vectorul. Un vector trebuie sa contina numai obiecte de aceeasi clasa.Singura exceptie este lista, reprezentata ca un vector dar poate contine obiecte de clase diferite.

  • Introducere in RAceste obiecte pot fi utilizate in alte calculePentru a printa un obiect este suficient sa introducem numele obiectului respectivExista unele restrictii atunci cand denumim un obiect:Numele obiectului nu poate contine urmatoarele simboluri !, +, -, #Sunt permise punctul si underscore (.), (_)Numele poate contine un numar dar nu poate incepe cu un numarR este case sensitive deci conteaza daca utilizam litere mari sau litere mici

  • Numerele in R sunt tratate ca obiecte numerice (numere reale in dubla precizie)In cazul numerelor intregi trebuie adaugat explicit sufixul L.Spre exemplu numarul intreg 1 se va scrie 1LExista numarul special Inf insemnand infinit adica rezultatul unei operatii de forma 1/0Valoarea NaN reprezinta o valoare nedefinita, practic un numar inexistent (rezultat al operatiei 0/0)

  • Obiectele din R pot avea anumite atribute:Nume, nume prescurtateDimensiuni (matrici, multimi)ClasaLungimeaAlte atribute definite de utilizatorAtributele unui obiect pot fi accesate utilizand functia attributes ()

  • La aparitia prompterului in R vom scrie expresii> x print (x)[1] 1Caracterul # indica un comentariu. Tot ce apare in dreapta lui # (inclusiv #) va fi ignorat de R.> x
  • Cand introducem o expresie dupa prompter, aceasta este evaluata, iar rezultatul evaluarii este returnat. Rezultatul poate aparea prin auto-tiparire.> x x ## apare auto-tiparirea[1] 5Sau > print(x) ## tiparirea este solicitata explicit[1] 5[1] indica faptul ca x este un vector iar 5 este primul sau element

  • Operatorul : este utilizat pentru a crea secvente de numere intregi.> x xPrin auto tiparire va rezulta un vector lung de forma[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15[16] 16 17 18 19 20[1] semnifica faptul ca primul element al vectorului este 1, apoi [16] faptul ca primul element este 16

  • Functia c() este utilizata pentru a crea vectori de obiecte> x x x x x x x[1] 0 0 0 0 0 0 0 0 0 0

  • Cand mai multe tipuri de obiecte sunt combinate in cadrul unui vector apare asa numitul fenomen de constrangere , fiecare element al vectorului fiind incadrat in aceeasi clasa. Astfel> y y y
  • Obiectele pot fi constranse in mod explicit sa faca parte dintr-o anumita clasa utilizand functia as.> x class (x)[1] integer> as.numeric (x)[1] 0 1 2 3 4 5 6> as.logical (x)[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE> as.character (x)[1] 0 1 2 3 4 5 6> as.complex (x)[1] 0+0i, 1+0i, 2+0i, 3+0i, 4+0i, 5+0i, 6+0iConstrangerea fara sens va returna NA si un mesaj de eroare.

  • Matricile sunt vectori avand ca atribut dimensiunile (nrow, ncol) adica nr de randuri si nr de coloane.Putem crea o matrice vida ca exemplu>mm [,1] [,2] [,3][,1] NA NA NA[,2] NA NA NA> dim(m)[1] 2 3> attributes (m)$dim[1] 2 3

  • Pentru a introduce valori in matrice, sa ne imaginam ca acestea se vor aseza la rand, pe coloane, incepand din coltul stanga sus al matricei.Exemplu> m m[,1] [,2] [,3][,1] 1 3 5[,2] 2 4 6

  • Matricile pot fi create din vectori carora le adaugam ca atribute dimensiunile matricei> m dim(m) m[,1] [,2] [,3] [,4] [,5][,1] 1 3 5 7 9[,2] 2 4 6 8 10

  • O matrice poate fi creata si cu ajutorul functiilor cbind () legarea coloanelor sau rbind () legarea randurilor. > x y cbind(x, y)x y[1,] 1 10[2,] 2 11[3,] 3 12>rbind (x, y)[,1] [,2] [,3]x 1 2 3y 10 11 12

  • Lista este un tip special de vector care poate contine date din clase diferite.x
  • > x x[1] yes yes no yes noLevels: no yesOrdinea nivelurilor poate fi stabilita utilizand atributul levels cu functia factor.> x x[1] yes yes no yes noLevels: yes no

  • Date tabelare-sunt reprezentate ca tipuri speciale de liste in care fiecare element trebuie sa aiba aceeasi lungime-fiecare element al listei poate fi considerat o coloana in timp ce lungimea lui va reprezenta numarul de randuri-spre deosebire de matrici, se pot stoca elemente din clase diferite- Sunt create cu ajutorul functiilor read.table() sau read.csv()

  • Datele tabelare pot fi create si cu ajutorul functiei data.frame() Spre exemplu, fie prima coloana numita variabila foo (numar intreg) iar a doua variabila bar (variabila logica).> x xfoo bar1 1 TRUE2 2 TRUE3 3 FALSE4 4 FALSE

  • Obiectele din R pot primi diferite denumiri prin utilizarea functiei names()> x names (x) xfoo bar norf 1 2 3

  • Functii utile in Rlength() # numar de elemente sau componentestr() # structura unui obiect class() # clasa sau tipul unui obiectnames() # denumirile obiectelorc() # combina obiecte intr-un vectorcbind() # combina obiecte sub forma de coloane rbind() # combina obiecte sub forma de randurils() # lista obiectelor curenterm() # sterge un anumit obiectnewobject
  • Spatiul de lucruObiectele create in timpul unei sesiuni de lucru in R sunt pastrate in memorie, iar colectia de obiecte curente se numeste spatiu de lucru.Spatiul de lucru nu se salveaza in calculator pana cand nu se da comanda de salvare.Cand se inchide fereastra se solicita salvarea spatiului de lucru. Salvarea are loc intr-un fisier .Rdata

  • In timpul sesiunii in R se poate salva explicit spatiul de lucru, astfel:In meniul File se selecteaza Save WorkspaceSau se utilizeaza functia save.image()Pentru a verifica denumirea directorului curent se utilizeaza functia getwd()setwd() modifica directorul curent

  • Alte comenzi in R> help (options) # ofera ajutor legat de optiunile disponibile> options() # setarile curente ale optiunilor> options (digits=3) # nr de cifre utilizat la tiparirea rezultatului> history() # afiseaza ultimele 25 de comenzi> history(max.show=Inf) # afiseaza toate comenzile precedente

  • Seturi de date in RComanda> data() permite vizualizarea tuturor seturilor de date disponibile

    Iar comanda> help(numele setului de date) afiseaza detalii legate de setul de date nominalizat

  • Intrari-iesiri> source() afiseaza un program din sesiunea curenta. Daca numele fisierului nu include o cale, fisierul este luat din directorul curent> sink() defineste directia rezultatuluiOptiunea append controleaza faptul ca fisierul suprascrie sau se adauga unui fisierOptiunea split determina daca rezultatul este trimis atat spre ecran cat si spre fisier

  • Rezultate graficeFunctia dev.off() returneaza rezultatul catre terminal. Mai exista urmatoarele posibilitati:

    FunctionOutputpdf("mygraph.pdf")pdf file win.metafile("mygraph.wmf")windows metafile png("mygraph.png")png file jpeg("mygraph.jpg")jpeg file bmp("mygraph.bmp")bmp file postscript("mygraph.ps")postscript file

  • Importarea datelorDin ExcelO prima varianta ar fi convertirea intr-un fisier text cu virgula (comma) ca separator.Primul rand va contine numele variabilelor separate prin virgula.Asociati variabila id cu numele randurilor.mydata
  • Importarea datelor din ExcelA doua varianta este utilizarea pachetului RODBC pentru a accesa fisierele Excel. Primul rand va contine numele variabilelor (coloanelor) channel
  • Importarea tabelelor din ExcelPresupunem ca a fost creat un tabel in ExcelDatele se copiaza si raman in ClipboardSe da comanda>t=read.table("clipboard")>t

  • Crearea tablourilor de dateExemplu varsta
  • Exemplu varsta sex greutate1 25 masculin 1602 30 feminin 1103 56 masculin 220

  • Exportarea datelorCatre un fisier text cu separator tabwrite.table(mydata, "c:/mydata.txt", sep="\t")

    Catre un fisier Excellibrary(xlsReadWrite)write.xls(mydata, "c:/mydata.xls")

  • ListeLista este o colecie de obiecte R care pot fi de tipuri diferite i de mrimi diferite. Crearea unei liste se face simplu prin funcia list urmat ntre paranteze de numele obiectelor ce o compun.

  • Exemplu de creare listaS presupunem c exist o familie cu numele tatlui Ion, numele mamei Maria, iar numele copiilor sunt: Andrei (4 ani), Alexandra (7 ani) i Bogdan (9 ani).> lista1=list(sot="Ion",sotie="Maria",nr.copii=3, varsta.copii=c(4,7,9))> lista1 #afisarea continutului listei

  • Baze de date in RR include i un numr de baze de date care se pot folosi n diverse aplicaii.Aceste baze de date sunt de fapt data frame-uri.Pentru a vizualiza toate bazele de date disponibile, se poate folosi funcia data:> data()i se va deschide o fereastr n care sunt enumerate toate bazele de date disponibile.

  • Pentru a accesa una dintre aceste baze de date, se poate scrie data(numele bazei de date). De exemplu, pentru a accesa baza de date cars care conine vitezele i distanele de oprire ale unor maini (1920) putem proceda astfel:> data(cars)> cars[1:5,] #primele 5 rnduri ale bazei de datespeed dist #coloanele bazei de date

  • Dac se dorete manipularea pe caracteristici, atunci se poate folosi vectorul cars[,1] ce ne d toate vitezele msurate sau vectorul cars[,2] ce ne d toate distanele disponibile.O alt modalitate de a lucra cu o baz de date este de a folosi funcia attach:> attach(cars)> names(cars) #numele coloanelor bazei de date

  • Utilizarea pachetelor de date (exemplu pachetul MASS)

  • Apelarea setului de date Cars93