A linguagem R: um ambiente para explorar dados e aprender...
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]
Being smart
!
inteligência adaptação
flexibilidade evolução mudança resposta
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]
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]
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]
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]
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]