A linguagem R: um ambiente para explorar dados e aprender...

41
A linguagem R: um ambiente para explorar dados e aprender com eles Conferência Hello World 3 de Maio de 2017, 14h30 Luís Borges Gouveia Auditório da UFP, Porto Universidade Fernando Pessoa

Transcript of A linguagem R: um ambiente para explorar dados e aprender...

A linguagem R: um ambiente para explorar dados e

aprender com eles ConferênciaHelloWorld

3deMaiode2017,14h30LuísBorgesGouveiaAuditóriodaUFP,Porto

UniversidadeFernandoPessoa

A linguagem R: um ambiente para explorar dados e aprender com eles Luis Borges Gouveia Hello World conf, 3 de Maio

1.   Introdução2.   Explorardadosedescobririnformação3.   RstuffMensagemAlinguagemRéumaexperiênciaSécXXI:exigeconhecimentodeesta8s9caematemá9ca,programação,cria9vidade,orientaçãoparaomundorealeumaperspe9vaorientadaaosproblemasObrigaalidarcomdadoseadescobririnformaçãoneles,sendomuitovisual.SaberRéumaboamarcaparaosdesafiosresultantesdosdadosqueexistememquan9dade,diversidadeemúl9plaqualidade(competênciadoSécXXI)

LuisBorgesGouveia,[email protected]

Porque estes slides? A curva de aprendizagem do R…

LuisBorgesGouveia,[email protected]

1

Being smart

!

inteligência adaptação

flexibilidade evolução mudança resposta

2

LuisBorgesGouveia,[email protected]

A importância do conhecimento dos dados ao conhecimento…

2

LuisBorgesGouveia,[email protected]

Os dados são o novo capital! Muitos desafios…

2017

2

• Comimpactonasegurançaedefesa•  Sustentabilidade:Económica,ambientalesocial•  Emprego/Sociedade

•  EnasSTI?(SistemaseTecnologiasdeInformação)•  Segurançaeprivacidade•  Interoperabilidade•  Transformaçãodigital•  Mobilidadeeadaptação:BYOD/BYOA•  Novasplataformas:dacolaboraçãoàintegração•  AutomaWzaçãodaaWvidadehumana:daIAàrobóWca•  …eclaro,redessociais,jogos,realidadeaumentada,IoT,cloud…

LuisBorgesGouveia,[email protected]

O exemplo do Facebook…

2017

HTTP Status Code 201: The request has been fulfilled and has resulted in one or more new resources being created.

2

LuisBorgesGouveia,[email protected]

Aprender (ok) e explorar (ver imagem) o R…

2

LuisBorgesGouveia,[email protected]

R stuff

3,daquiparafrente…

Em que consiste o R?

•  ORéumalinguagemdecomputadorinterpretada,orientadaaosobjetos•  OR,édesenvolvidoemR,àexceçãodeumpequenoconjuntodeprimiWvas

internas•  ÉpossívelintegrarcódigoemC,C++,FORTRANouPython,paramaior

eficiênciaoureuWlizaçãodetrabalhoexistente•  OscomandosdesistemasãochamadosdointeriordoR

•  ORéuWlizadoparaamanipulaçãodedados,estadsWcaegeraçãodegráficoseéconsWtuidopor:

•  Operadores:(+-<-*%,entreoutros)paracálculosemvetoresematrizes•  OferecemúlWplosconjuntos,coerenteseintegrados,defunções•  Possuifuncionalidadesparaproduzirgráficosdeelevadaqualidade•  PermitefunçõesescritaspelouWlizadoreconjuntosdefunções(pacotes),

comumaextensalistajáexistente(quase10000)

LuisBorgesGouveia,[email protected]

Origem do R

•  S:linguagemparaaanálisededadosdesenvolvidanoslaboratóriosBell,porvoltade1976

•  LicenciadapelaAT&T/LucentàInsighQul,quecriouoS-plus,em2004•  Em2008,aTIBCOadquiriuaInsighQul(hSp://www.9bco.com/)

•  R:propostocomosoowarelivre,porRossIhaka(1954)eRobertGentleman(1959)naUniversidadedeAuckland(hSps://www.auckland.ac.nz,NovaZelândia)emAgostode1993(oRestásurgedaletrainicialdonomedosseusautoreseétambémaletraanterioraS…)

•  RfoiinspiradonalinguagemSenoLISP•  Desde1997onúcleointernacionaldoR(cercade20pessoasmasumacomunidadedemilharesdeprogramadores)transformouoRnumsoowaredeestadsWcaeanálisededadosdosmaissofisWcadosecompletos

LuisBorgesGouveia,[email protected]

A arquitetura do R

CRANComprehensiveRArchiveNetwork

NúcleoR

Ferramentas

Utilizadores

R

+pacotesbase

FrontEndscomooRstudio(editoresdetexto,ambientesdedesenvolvimento,Interfacesgráficos)

Profissionais Amadores Investigadores Alunos ProgramadoresProfessores AnalistasdedadosEstatísticos

+de9000pacotes

LuisBorgesGouveia,[email protected]

O Interface do R – https://www.r-project.org/ R (v 3.4.0 de 21 de Abril de 2017 – You Stupid Darkness)

•  AmaiorpartedascoisasnoRsãoobjetos

•  Funções,conjuntosdedados,resultados,…

•  Osgráficossãoproduzidosenãosãoguardadoscomoobjetos

•  Umscriptpodeserpensadocomoummodoparaproduzirobjetos

•  OobjeWvoéobterosresultadosdosdados(novosdados)eosgráficospretendidos

LuisBorgesGouveia,[email protected]

Interfaces de desenvolvimento e suporte o R-Studio como ambiente de trabalho

MuitoseditoreseambientesquefacilitamodesenvolvimentoemR

•  omaisconhecidoeusadoéoR-Studio

•  hSps://www.rstudio.com/

•  EclipsecomStaETforR•  hSp://www.walware.de/goto/

statet

•  ESS,EmacsSpeakssta9s9cs•  hSp://ess.r-project.org/

•  Togaware•  hSp://raSle.togaware.com/

•  Rgedit•  hSp://rgedit.sourceforge.net/ Editordecódigo Ambiente(objetos)ehistórico

ConsoladoR Ficheiros,Gráficos,PacoteseAjuda

LuisBorgesGouveia,[email protected]

Operação básica em R

Numa sessão R

1.   Dados:Lerosdadosdeoutrasfontes2.   Ferramentas:UWlizarpacotes,bibliotecasefunções3.   Problema:Escreverfunçõesecódigo,quandonecessário4.   Análise:ConduzirumaanálisededadosestadsWcaououtra5.   Visualização:Produzirosgráficosnecessáriosparaevidenciaros

resultados6.   Reporte:Gravarosresultadosparaficheiros,astabelasdedadose

osgráficosgeradosouproduzirrelatórios7.   Preservação:GravaroespaçodetrabalhoR,senecessário

LuisBorgesGouveia,[email protected]

Ler os dados: alternativas

•  comotabelas(dataframes),aparWrde:•  ficheirosdetexto,txt(delimitadosportab),csv(cominformaçãoseparadaporvírgulas)

•  diretamentedosconjuntosdedados(origem)•  viaclipboard(copyepaste)ouintroduzidoporteclado

• dadosemformatotextoquepodemserlidosde:•  páginasWeb(webscraping)•  ficheirosdetexto•  ficheirosemformatopdf(portabledocumentformat)

• dadosdesomedeimagempodemserlidoseprocessados

LuisBorgesGouveia,[email protected]

Categorias de objetos em R (mode): como os objetos que são armazenados no R (class): como os objetos são tratados pelas funções

•  O modo da matriz M é determinado de forma automática pelos tipos de valores guardados em M, neste caso números inteiros (caso sejam uma mistura de tipos, o modo é lista)

•  A classe da matriz M pode ser definida por defeito (dependendo de como foi criada) ou de forma explícita pelo utilizador. Podemos verificar a classe de um objeto e modificá-la. A classe determina como as funções vão lidar com M

>M<-matrix(c(2,3,5,6,4,2,1,8,5),nrow=3,ncol=3)>M[,1][,2][,3][1,]261[2,]348[3,]525

LuisBorgesGouveia,[email protected]

Pequenos exercícios em R…

1.  Gerarumadistribuiçãonormalde100valores,comumamédiade62eumdesviopadrãode25•  x<-rnorm(100,mean=62,sd=25)

2.  Gerardadosquesimulam20lançamentosdeumamoedaequilibrada•  x<-sample(1:2,20,TRUE,prob=c(1/2,1/2))

3.  Gerardadosquesimulam100lançamentosdeumdadoequilibradoecomvaloresde1a6,nasfaces•  x<-sample(1:6,100,TRUE,prob=c(1/6,1/6,1/6,1/6,1/6,1/6))

LuisBorgesGouveia,[email protected]

Mais sete exercícios…

1.  Qualéomaiorvalor?ou2.  Oqueéqueafunçãorepfaz?3.  Crieumvetorcontendo50vezesovalor1echameaovetorgrupo24.  UWlizeumcicloforparacalcularosprimeiros50númerosde

Fibonacci.Armazeneestesvaloresnovetorgrupo2(obs:Fn=F(n-1)+F(n-2),F1=1,F2=1

5.  Oquefazafunçãotable?6.  Quantosdos50númerosdeFibonaccisãodivisíveispor3?

(obs:a%%b)7.  Qualéamédiadosprimeiros15númerosdeFibonacci?

20 Introduction to R (Alex Storer, IQSS) 1/20/12 LuisBorgesGouveia,[email protected]

Exercícios… resolução do 1

1.   Qualéomaiorvalor?ou>log(sqrt(pi))[1]0.5723649>sqrt(log(pi))[1]1.069921Resposta:Ovalorassociadoàsegundaexpressãoémaior

21 Introduction to R (Alex Storer, IQSS) LuisBorgesGouveia,[email protected]

Exercícios… resolução do 2 e 3

2.   Oqueéqueafunçãorepfaz??repResposta:repeteoselementosnumvetoroulista3.   Crieumvetorcontendo50vezesovalor1echameaovetorgrupo2grupo2<-rep(1,50)grupo2[1]1111111111111111111111111[26]1111111111111111111111111

22 Introduction to R (Alex Storer, IQSS) LuisBorgesGouveia,[email protected]

Exercícios… resolução do 4

4.UYlizeumcicloforparacalcularosprimeiros50númerosdeFibonacci.Armazeneestesvaloresnovetorgrupo2(obs:Fn=F(n-1)+F(n-2),F1=1,F2=1Resposta:grupo2<-rep(1,50)for(iin3:50){grupo2[i]<-grupo2[i-1]+grupo2[i-2]}

>grupo2[1]1123[5]581321[9]345589144[13]233377610987[17]1597258441816765[21]10946177112865746368[25]75025121393196418317811[29]51422983204013462692178309[33]35245785702887922746514930352[37]241578173908816963245986102334155[41]165580141267914296433494437701408733[45]1134903170183631190329712150734807526976[49]777874204912586269025

Introduction to R (Alex Storer, IQSS) 23 LuisBorgesGouveia,[email protected]

Exercícios… resolução 5, 6 e 7

5.Oquefazafunçãotable?

?table

Resposta:usaosfatoresdeclassificaçãocruzadaparaacriaçãodeumatabeladeconWngênciaquecontacadacombinaçãodosníveisdefatores

6.Quantosdos50númerosdeFibonaccisãodivisíveispor3?(obs:a%%b)

>table(grupo2=grupo2%%3==0)

grupo2

FALSETRUE

3812

Resposta:atéaoquinquagésimonúmerodeFibonacci,existem12valoresdivisíveispor3

7.Qualéamediadosprimeiros15númerosdeFibonacci?

>mean(grupo2[1:15])

[1]106.424 Introduction to R (Alex Storer, IQSS)

LuisBorgesGouveia,[email protected]

Típico de uma linguagem de programação… Tempo e experiência •  usarumcaderno(logbook)paraapoio(Jupyternotebook:hSps://ipython.org/notebook.html)

•  recorreraumacartadereferênciadalinguagemR:hSps://cran.r-project.org/doc/contrib/Short-refcard.pdf

•  consultaríndicedereferênciadoR(R:ALanguageandEnvironmentforSta9s9calCompu9ng),manualcom3518páginas:hSps://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf

•  RecorreraapoiosespecializadoscomoocatálogodecoresemR:hSp://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

LuisBorgesGouveia,[email protected]

Exemplos do uso de R

Uso de gráficos em R

• Umexemplodemapeamentodeumafunçãoem2Dx<-1:400y<-sin(x/10)*exp(x*-0.01)plot(x,y)

LuisBorgesGouveia,[email protected]

Uso de gráficos em R

• UmexemplodeumgráficodepontoscomvisualizaçãodalinhaderegressãoentreasvariáveisXeYn<-500x<-rnorm(n)y<-x+rnorm(n)plot(x,y)abline(lm(y~x),col="blue",lwd=2)

LuisBorgesGouveia,[email protected]

Uso de gráficos em R

•  Umexemplodemapeamentodeumafunçãoem3Dcone<-funcWon(x,y){sqrt(x^2+y^2)}x<-y<-seq(-1,1,length=20)z<-outer(x,y,cone)persp(x,y,z)persp(x,y,z,main="PerspecWva3Ddeumcone",zlab="Altura",theta=30,phi=15,col="deepskyblue1",shade=0.5)

LuisBorgesGouveia,[email protected]

Uso de gráficos em R

•  Umclássico…x<-seq(-10,10,length=50)y<-xf<-funcWon(x,y){r<-sqrt(x^2+y^2)10*sin(r)/r}z<-outer(x,y,f)z[is.na(z)]<-1persp(x,y,z,theta=30,phi=30,expand=0.5,col=“deepskyblue",shade=.5,xlab="X",ylab="Y",zlab="Z")

LuisBorgesGouveia,[email protected]

O uso de cor par(bg="black",col.main="white",col.lab="white")pie(rep(1,24),col=rainbow(24),radius=0.9)

Wtle(main="RodadaCor",cex.main=2.0,font.main=3)Wtle(xlab="(DemonstraçãodousodacornoR)",

cex.lab=1.1,font.lab=3)

EsteexemplofoireWradodedemo(graphics)

OscódigosdecornoR,estãodisponíveisnumcatálogocomosnomesecores,emhSp://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

ParaajudarasaberoscódigosHexadecimaisdecor:hSp://www.color-hex.com/

LuisBorgesGouveia,[email protected]

Package maps

install.packages("maps")library("maps")map("world","Portugal")map("world")map("mworld2")

LuisBorgesGouveia,[email protected]

Package ggmap usa como fonte, o Google Maps library(ggmap)library(mapproj)map <- get_map(location = ‘Europe?', zoom = 4)map2 <- get_map(location = 'Portugal?', zoom = 7) ggmap(map) ggmap(map2)

LuisBorgesGouveia,[email protected]

Gerar dados com duas variáveis correlacionadas (desenvolvimento de funções próprias)

-4 -2 0 2

-20

24

x

y

-4 -2 0 2

-4-2

02

4

x

y

vCorrelacionado = function(x, r) {r2 = r**2 ve = 1-r2 SD = sqrt(ve) e = rnorm(length(x), mean=0, sd=SD) y = r*x + e return(y)}

set.seed(5)x = rnorm(10000)y = vCorrelacionado(x=x, r=.5) plot(x,y,col="blue”)

set.seed(5)x = rnorm(10000)y=vCorrelacionado(x=x,r=-.8)plot(x,y,col="red")

cor(x,y)[1]0.4945964

cor(x,y)[1] -0.8029628

LuisBorgesGouveia,[email protected]

Recursos disponíveis sobre R

Existe sempre o (santo) Google…

•  OusodoGooglepodecomplicarmais,doqueajudar:excessodeinformaçãoqueexigeumesforçoconsiderávelparaoseuentendimento

•  Aplica-sealeidadistânciaaoconhecimento…•  AWebpossuiinformaçãoúFlemfunçãodoquadradodoconhecimentodequemousaedasuacapacidadedefazerasperguntascorretas

LuisBorgesGouveia,[email protected]

LuisBorgesGouveia,[email protected]

Nem sempre o código funciona (Wikipedia) https://pt.wikipedia.org/wiki/R_(linguagem_de_programa%C3%A7%C3%A3o)

library(caTools)jet.colors<-colorRampPale�e(c("#00007f","#0000ff","#007fff","#00ffff","#7fff7f","#ffff00","#ff7f00","#ff0000","#7f0000"))m<-1200C<-complex(real=rep(seq(-1.8,0.6,length.out=m),each=m),imag=rep(seq(-1.2,1.2,length.out=m),m))C<-matrix(C,m,m)Z<-0X<-array(0,c(m,m,50))for(kin1:50){Z<-Z^2+CX[,,k]<-exp(-abs(Z))}write.gif(X,"Mandelbrot.gif",col=jet.colors,delay=100)#cria2matrizescom1,44Milhõesdeelementos(22MBcada)#criaumarraycom72Milhõesdeelementos(549MB)#criaumGifanimadocom11MB

7 motores de pesquisa para recursos em R

• RSeekhIp://www.rseek.org/• RDocumenta9on:hSps://www.rdocumenta9on.org/• RSiteSearch:hSp://finzi.psych.upenn.edu/search.html•  SearchtheRsta9s9callanguage:hSp://www.dangoldstein.com/search_r.html

• R-Bloggers:hIps://www.r-bloggers.com/• NabbleRForumhSp://r.789695.n4.nabble.com/• Rmailinglistsarchive:hSp://tolstoy.newcastle.edu.au/R/

LuisBorgesGouveia,[email protected]

Aprender e usar o R

•  InstalaroR(hSp://www.r-project.org/)eoRStudio(hSps://www.rstudio.com/)•  Experimentar,resolverproblemas,parWlhareexperimentardenovo…•  ExploraroCRAN(TheComprehensiveRArchiveNetwork):hSps://cran.r-project.org/•  ParWciparemgruposdediscussão,aprendercomosoutrosevoltaraexperimentar...OmaiscompletoéoR-Bloggers(hSps://www.r-bloggers.com/)

•  UsaromotordepesquisaRSeekhSp://www.rseek.org/emvezdoGoogle•  Parasabermaisdosobjetos:class(x)•  Parasabermaisdasfunções:?xouhelp(x)•  Paracorrerdemonstraçõesouexemplosdefunções:demo(x)ouexample(x)•  ComooRéinteraWvo,oserrosconsWtuemumaajudaparaocódigoacriar•  QuantomaisexperimentaroR,maisconfortáveléoseuuso.Aexperiênciaadquire-seessencialmentedarealizaçãodeprojetosconcretos

LuisBorgesGouveia,[email protected]

Uma breve introdução ao R exploração prática e exercícios • PequenomanualparaexploraroR,de68páginas,comexercíciosresolvidos(LuísBorgesGouveia,2016)-hSp://hdl.handle.net/10284/5936

LuisBorgesGouveia,[email protected]

A linguagem R: um ambiente para explorar dados e aprender com eles LuísBorgesGouveia•  ProfessorCatedráWcodaFaculdadedeCiênciaeTecnologiadaUniversidadeFernandoPessoa,fervorosoadeptodoFCPortoeNortenhoassumido,amigodanaturezahumanaeamantedodigital.Gostadecomputadores,masmaisaindadeosusarparamelhoraraqualidadedevidadaspessoas.

•  PossuipáginaWeb:hSp://homepage.ufp.pt/lmbg

•  Email:[email protected]