R para estatísticos: uma introdução. › ~ra109078 › Research ›...
Transcript of R para estatísticos: uma introdução. › ~ra109078 › Research ›...
R para estatísticos: uma introdução.
Carlos Trucios Maza
Universidade Estadual de CampinasSemana da Estatística - IMECC
13 de outubro de 2015
Carlos Trucios Maza R para estatísticos: uma introdução.
Falemos mais desse tal de “R”
Porquê devo utilizar R?
free,intuitivo,grande quantidade de colaboradores,é amplamente utilizado no meio acadêmico e na industria.Is there any good reason to use SAS or SPSS these days? Youhave a whole bunch of money you want to get rid of?. (HadleyWickham)
Carlos Trucios Maza R para estatísticos: uma introdução.
Falemos mais desse tal de “R”
Qual o melhor caminho para aprender R? Sem dúvida, omelhor caminho de aprender R é usando-o.Porquê R é devagar em algumas coisas? R is not a fastlanguage. This is not an accident. R was purposely designed tomake data analysis and statistics easier for you to do. It wasnot designed to make life easier for your computer. (HadleyWickham)R ou Python? Ambos.
Carlos Trucios Maza R para estatísticos: uma introdução.
Cálculo do dia a dia.Probabilidade
−4 −2 0 2 4
0.0
0.1
0.2
0.3
0.4
Distribuição Normal(0,1)
x
Den
sida
de
Carlos Trucios Maza R para estatísticos: uma introdução.
Cálculo do dia a dia: Probabilidade
R tem implementado várias distribuições, entre elas: beta,binomial, Cauchy, chi-squared, exponential, F, gamma,geometric, log-normal, multinomial, normal, Student’s, Weibull,etc. Ver ?Distributions para mais distribuições.Em R podemos gerar número aleatorios, calcular quantis,probabilidades e densidades: rdistribution, qdistribution,qdistribution, ddistribution.
rnorm(5)
## [1] -0.168094 -0.063025 -1.404442 0.736903 0.005817
dnorm(0)
## [1] 0.3989
Carlos Trucios Maza R para estatísticos: uma introdução.
Cálculo do dia a dia: Probabilidade
Z0.95 Z ∼ N(0, 1)
qnorm(0.95)
## [1] 1.645
P(X < 20) X ∼ N(18, 22)
pnorm(20,18,2)
## [1] 0.8413
Carlos Trucios Maza R para estatísticos: uma introdução.
Cálculo do dia a dia: Probabilidade
P(X > 1) X ∼ t6
pt(1,6,lower.tail=FALSE)
## [1] 0.178
P(X < 3) X ∼ Bin(6, 0.3)
sum(dbinom(0:2, 6, 0.3))
## [1] 0.7443
Carlos Trucios Maza R para estatísticos: uma introdução.
Calculo do dia a dia: Calculos básicos
x = c(2,3,4,5)sqrt(x)
## [1] 1.414 1.732 2.000 2.236
x^4
## [1] 16 81 256 625
x*x
## [1] 4 9 16 25
x/x
## [1] 1 1 1 1
Carlos Trucios Maza R para estatísticos: uma introdução.
Calculo do dia a dia: Calculos básicos
Carlos Trucios Maza R para estatísticos: uma introdução.
Objetos
vetoresmatrizesarrayslistasdata frame
Carlos Trucios Maza R para estatísticos: uma introdução.
Objetos
matrix(c(1,2,3,4,5,6,7,8,9),ncol=3,nrow=3)
## [,1] [,2] [,3]## [1,] 1 4 7## [2,] 2 5 8## [3,] 3 6 9
Carlos Trucios Maza R para estatísticos: uma introdução.
Objetos
array(1:8,c(2,2,2))
## , , 1#### [,1] [,2]## [1,] 1 3## [2,] 2 4#### , , 2#### [,1] [,2]## [1,] 5 7## [2,] 6 8
Carlos Trucios Maza R para estatísticos: uma introdução.
Objetos
library(microbenchmark)library(MASS)head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Carlos Trucios Maza R para estatísticos: uma introdução.
Objetos
microbenchmark("[30,11]" = mtcars[30,11],"$carb[30]" = mtcars$carb[30],"[[c(11,30)]]" = mtcars[[c(11,30)]],"[[11]][30]" = mtcars[[11]][30],".subset2" = .subset2(mtcars,11)[30])
## Unit: nanoseconds## expr min lq mean median uq max neval## [30,11] 16418 16974 18633.9 17336 17725.5 90501 100## $carb[30] 8768 9370 10699.1 9783 10649.5 59249 100## [[c(11,30)]] 7030 7642 8383.2 8003 8710.0 18328 100## [[11]][30] 6500 7266 8064.0 7668 8460.0 18234 100## .subset2 207 368 505.8 418 480.5 7852 100
Carlos Trucios Maza R para estatísticos: uma introdução.
Exercicios 1
Calcule:
P (−1.3 ≤ X ≤ 2) X ∼ N(1, 22)P (X ≤ 9) X ∼ Binom(10, 0.3)P (X ≤ 2) X ∼ t8Z0.975 Z ∼ N(0, 1)
Crie um vetor de tamanho 5 onde os elementos do vetor seguemuma distribuiçao N(0, 1). Após criar o vetor aplique a raiz quadradado módulo a cada elemento, finalmente calcule P (X < elemento)X ∼ N(0, 1) para cada elemento do vetor.
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados
hist(mtcars$wt)
Histogram of mtcars$wt
mtcars$wt
Fre
quen
cy
2 3 4 5
02
46
8
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados
plot(mtcars$mpg,mtcars$qsec)
10 15 20 25 30
1618
2022
mtcars$mpg
mtc
ars$
qsec
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados
pie(table(mtcars$cyl))
4
6
8Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados
barplot(table(mtcars$carb))
1 2 3 4 6 8
02
46
810
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados
lattice,ggplot2,ggvis,rggobi,googleVis,plot3D,etc.
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice
Adaptado da presentação do Omar Abbara e do David H. Mattarealizada no 16/09/2015 no R Campinas Users Group
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - Carregando Dados
library("lattice")
## Warning: package 'lattice' was built under R version 3.1.3
data(Chem97,package ="mlmRev")
head(Chem97)
## lea school student score gender age gcsescore gcsecnt## 1 1 1 1 4 F 3 6.625 0.3393## 2 1 1 2 10 F -3 7.625 1.3393## 3 1 1 3 10 F -4 7.250 0.9643## 4 1 1 4 10 F -2 7.500 1.2143## 5 1 1 5 8 F -1 6.444 0.1583## 6 1 1 6 10 F 4 7.750 1.4643
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - histogram
histogram(~gcsescore|factor(score),data=Chem97,aspect =0.7)
gcsescore
Per
cent
of T
otal
0
10
20
30
0 2 4 6 8
0 2
4
0
10
20
30
60
10
20
30
8
0 2 4 6 8
10
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - densityplot
densityplot(~gcsescore|factor(score),data=Chem97,plot.points=FALSE,layout=c(3,2),aspect =0.7)
gcsescore
Den
sity
0.0
0.2
0.4
0.6
0 2 4 6 8
0 2
0 2 4 6 8
4
6
0 2 4 6 8
8
0.0
0.2
0.4
0.6
10
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - densityplot
densityplot(~gcsescore,data=Chem97,groups=score,aspect=0.3,plot.points=FALSE,auto.key=list(columns=3))
gcsescore
Den
sity
0.0
0.2
0.4
0.6
0 2 4 6 8
02
46
810
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - bwplot
bwplot(~gcsescore|factor(score),data=Chem97)
gcsescore
0 2 4 6 8
0 2
0 2 4 6 8
4
6
0 2 4 6 8
8 10
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - bwplot
bwplot(~gcsescore|factor(score,c("10","8","6","4","2","0")),data=Chem97)
gcsescore
0 2 4 6 8
10 8
0 2 4 6 8
6
4
0 2 4 6 8
2 0
#Visualização de dados: lattice - bwplot
bwplot(gcsescore~factor(score)|factor(gender),data=Chem97,aspect=0.7)
gcse
scor
e
0
2
4
6
8
0 2 4 6 8 10
M
0 2 4 6 8 10
F
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - bwplot
bwplot(gcsescore~factor(score)|factor(gender),data=Chem97,aspect=0.4)
gcse
scor
e
0
2
4
6
8
0 2 4 6 8 10
M0
2
4
6
8
F
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - bwplot
bwplot(gcsescore~factor(gender)|factor(score),data=Chem97)gc
sesc
ore
0
2
4
6
8
M F
0
M F
2
M F
4
6 8
0
2
4
6
8
10
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - dotplot
dotplot(variety~yield|site,barley,layout=c(3,2),aspect=0.7,groups=year,type=c("p","h"),auto.key=list(space="right"))
yield
SvansotaNo. 462
ManchuriaNo. 475
VelvetPeatlandGlabronNo. 457
Wisconsin No. 38Trebi
20 30 40 50 60
Grand Rapids Duluth
20 30 40 50 60
University FarmSvansota
No. 462Manchuria
No. 475Velvet
PeatlandGlabronNo. 457
Wisconsin No. 38Trebi
Morris
20 30 40 50 60
Crookston Waseca
19321931
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - dotplot
VADeaths
## Rural Male Rural Female Urban Male Urban Female## 50-54 11.7 8.7 15.4 8.4## 55-59 18.1 11.7 24.3 13.6## 60-64 26.9 20.3 37.0 19.3## 65-69 41.0 30.9 54.6 35.1## 70-74 66.0 54.3 71.1 50.0
class(VADeaths)
## [1] "matrix"
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - dotplot
dotplot(VADeaths, groups = FALSE)
Freq
50−54
55−59
60−64
65−69
70−74
20 40 60
Rural Male Rural Female
50−54
55−59
60−64
65−69
70−74
Urban Male
20 40 60
Urban Female
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - dotplot
dotplot(VADeaths,groups=FALSE,layout=c(4,1),aspect=0.7,origin=0,type=c("h","h"),main="Death Rates",xlab="Rate")
Death Rates
Rate
50−5455−5960−6465−6970−74
0 20 40 60
Rural Male
0 20 40 60
Rural Female
0 20 40 60
Urban Male
0 20 40 60
Urban Female
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - dotplot
dotplot(VADeaths,type ="o",auto.key=list(lines=TRUE,aspect=0.5,space="right"),main ="Death Rates",xlab="Rate")
Death Rates
Rate
50−54
55−59
60−64
65−69
70−74
20 40 60
Rural MaleRural FemaleUrban MaleUrban Female
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - stripplot
stripplot(depth~factor(mag),quakes,jitter.data=TRUE, aspect=0.5,alpha=0.9,xlab="Magnitude(Richter)",ylab="Depth (km)")
Magnitude(Richter)
Dep
th (
km)
200
400
600
4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.9 6 6.1 6.4
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - stripplot
Stripplot<-stripplot(sqrt(abs(residuals(lm(yield~variety+year+site))))~site,data=barley,groups=year,jitter.data=TRUE,auto.key=list(points=TRUE,lines=TRUE,columns=2),type=c("p", "a"), fun=mean,ylab = expression(abs("Residual Barley Yield")^{1 / 2}))
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - tripplot
StripplotR
esid
ual B
arle
y Y
ield
12
1
2
3
Grand Rapids Duluth University Farm Morris Crookston Waseca
1932 1931
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - qqmath
Qqplot<-qqmath(~ gcsescore | gender, Chem97, groups = score, aspect = "xy",distribution = qnorm, f.value = ppoints(100),auto.key = list(space = "right"),
xlab = "Standard Normal Quantiles",ylab = "Average GCSE Score")
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - qqmath
Qqplot
Standard Normal Quantiles
Ave
rage
GC
SE
Sco
re
3
4
5
6
7
8
−2 −1 0 1 2
M
−2 −1 0 1 2
F
0246810
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - barchart
barchart(Class ~ Freq | Sex + Age,data = as.data.frame(Titanic),groups = Survived, stack = TRUE,layout = c(4, 1),auto.key = list(title = "Survived",columns = 2),scales = list(x = "free"))
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - barchart
Freq
1st
2nd
3rd
Crew
0 10 20 30 40 50
MaleChild
0 10 20 30
FemaleChild
0 200 400 600 800
MaleAdult
0 50 100 150
FemaleAdult
SurvivedNo Yes
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - parallel
parallel(~mtcars[c(1, 3, 4, 5, 6, 7)] | factor(cyl),mtcars, groups = carb, layout = c(3, 1),auto.key = list(space = "top", columns = 3))
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - parallel
mpg
disp
hp
drat
wt
qsec
Min Max
4
Min Max
6
Min Max
8
12
34
68
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - Gráficos em 3D
O lattice também possui funções que permitem plotar gráficos em3D:
cloud: plota scatterplot em 3Dwireflame: plota superficies em 3Dlevelplot: plota gr?fico falsa-corcontourplot: plota curvas de n?vel
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - scatterplot em 3D
quakes$Magnitude <- equal.count(quakes$mag, 4)cloud(depth ~ lat * long | Magnitude, data = quakes,
zlim = rev(range(quakes$depth)),screen = list(z = 105, x = -70), panel.aspect = 0.75,xlab = "Longitude", ylab = "Latitude", zlab = "Depth")
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - scatterplot em 3D
Longitude
Latitude
Depth
Magnitude
Longitude
Latitude
Depth
Magnitude
Longitude
Latitude
Depth
Magnitude
Longitude
Latitude
Depth
Magnitude
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - levelplot
levelplot(volcano)
row
colu
mn
10
20
30
40
50
60
20 40 60 80
100
120
140
160
180
200
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - contourplot
contourplot(volcano, cuts = 10, label = TRUE)
row
colu
mn
10
20
30
40
50
60
20 40 60 80
100
100
100
110
110
110
110
120130140
150150
160
160
170
170
180
180
190
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: lattice - wireframe
wireframe(volcano, panel.aspect = 0.5,zoom = 1,scales=list(arrows = FALSE),drape = TRUE, colorkey = TRUE)
2040
6080
1020
3040
5060
100
120
140
160
180
rowcolumn
volcano
100
120
140
160
180
200
Carlos Trucios Maza R para estatísticos: uma introdução.
Exericios 2
Faça um boxplot da variavel gcsescore dividos por sexo.Gere 1500 dados de uma distribuição uniforme e faça umgráfico qq para verificar se os dados são: (a) normais, (b)uniformes.Faça um histograma da variavel gcsescore dividos por sexo.No gráfico
histogram(~gcsescore|factor(score),data=Chem97,aspect =0.7)
organizar a saida para ser na ordem c(“10”,“8”,“6”,“4”,“2”,“0”).
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
Existem 2 funções básicas no pacote ggplot2
qplot()ggplot()
A funçao qplot() (Quick Plot) faz com que gráficos mais complexose elaborados sejam mais fáceis. Foi desenvolvida para ser mais fácile intuitiva que a função padrão plot().
plot( ) qplot( )
col colourpch shapecex size
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - Datasets
library(ggplot2)library(gridExtra)
## Loading required package: grid
head(diamonds)
## carat cut color clarity depth table price x y z## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31## 4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(x, y = NULL, ..., data, facets = NULL,margins = FALSE, geom = "auto", stat = list(NULL),position = list(NULL), xlim = c(NA, NA),ylim = c(NA, NA), log = "", main = NULL,xlab = deparse(substitute(x)),ylab = deparse(substitute(y)), asp = NA)
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(x = carat, y = price, data = dsmall)
0
5000
10000
15000
0.5 1.0 1.5 2.0 2.5carat
pric
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, log(price), data = dsmall, xlab = "CARAT")
6
7
8
9
10
0.5 1.0 1.5 2.0 2.5CARAT
log(
pric
e)
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, log(price), data = dsmall, log = "x")
6
7
8
9
10
1carat
log(
pric
e)
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, price, data = dsmall, colour = color)
0
5000
10000
15000
0.5 1.0 1.5 2.0 2.5carat
pric
e
color
D
E
F
G
H
I
J
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, price, data = dsmall,shape = cut, main = "Titulo")
0
5000
10000
15000
0.5 1.0 1.5 2.0 2.5carat
pric
e
cut
Fair
Good
Very Good
Premium
Ideal
Titulo
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, price, data = dsmall,shape = cut, facets = .~color)
D E F G H I J
0
5000
10000
15000
0.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.5carat
pric
e
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, price, data = dsmall, facets =cut~color)
D E F G H I J
05000
1000015000
05000
1000015000
05000
1000015000
05000
1000015000
05000
1000015000
FairG
oodVery G
oodPremium
Ideal
0.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.5carat
pric
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
qplot(carat, price, data = dsmall, facets =.~color,shape=cut,margins = TRUE)
D E F G H I J (all)
0
5000
10000
15000
0.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.50.51.01.52.02.5carat
pric
e
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - qplot()
p1 = qplot(carat, price, data = diamonds)p2 = qplot(carat, price, data = diamonds, alpha = I(1/10))p3 = qplot(carat, price, data = diamonds, alpha = I(1/100))grid.arrange(p1, p2, p3, ncol=3)
0
5000
10000
15000
0 1 2 3 4 5carat
pric
e
0
5000
10000
15000
0 1 2 3 4 5carat
pric
e
0
5000
10000
15000
0 1 2 3 4 5carat
pric
eCarlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
geom define o tipo de gráfico que desejamos, por defaultgeom=“point” mas temos muitas outras opçoes:
geom = “smooth”geom = “boxplot”geom = “path”geom = “line”geom = “histogram”geom = “freqpoly”etc
Uma lista completa das opçoões que geom oferece pode ser obtidano seguinte linkhttp://sape.inf.usi.ch/quick-reference/ggplot2/geom
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(carat,price,data = dsmall,geom=c("point","smooth"),span = 0.2)
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.
0
5000
10000
15000
0.5 1.0 1.5 2.0 2.5carat
pric
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(carat,price,data = dsmall,geom="boxplot")
0
5000
10000
15000
0.5 1.0 1.5 2.0carat
pric
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(color,price ,data = dsmall,geom="boxplot",colour = color, fill = color)
0
5000
10000
15000
D E F G H I Jcolor
pric
e
color
D
E
F
G
H
I
J
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(carat,data = diamonds,geom="histogram",binwidth = 0.3, facets=.~color)
D E F G H I J
0
1000
2000
3000
4000
5000
0 2 4 0 2 4 0 2 4 0 2 4 0 2 4 0 2 4 0 2 4carat
coun
t
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(carat, data = diamonds,geom="density", colour = color)
0.0
0.5
1.0
1.5
2.0
0 1 2 3 4 5carat
dens
ity
color
D
E
F
G
H
I
J
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(color, data = diamonds,geom="bar", weight = carat)
0
2500
5000
7500
D E F G H I Jcolor
coun
t
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
head(economics)
## date pce pop psavert uempmed unemploy## 1 1967-06-30 507.8 198712 9.8 4.5 2944## 2 1967-07-31 510.9 198911 9.8 4.7 2945## 3 1967-08-31 516.7 199113 9.0 4.6 2958## 4 1967-09-30 513.3 199311 9.8 4.9 3143## 5 1967-10-31 518.5 199498 9.7 4.7 3066## 6 1967-11-30 526.2 199657 9.4 4.8 3018
dim(economics)
## [1] 478 6
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(date,unemploy, data = economics, geom="line")
2500
5000
7500
10000
12500
1970 1980 1990 2000date
unem
ploy
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
qplot(date,unemploy, data = economics, geom="path")
2500
5000
7500
10000
12500
1970 1980 1990 2000date
unem
ploy
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
IND = sample(seq(1,478),478)qplot(date[IND],unemploy[IND], data = economics,
geom="path")
2500
5000
7500
10000
12500
1970 1980 1990 2000date[IND]
unem
ploy
[IND
]
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - geom
IND = sample(seq(1,478),478)qplot(date[IND],unemploy[IND], data = economics,
geom="line")
2500
5000
7500
10000
12500
1970 1980 1990 2000date[IND]
unem
ploy
[IND
]
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
Nós podemos utilizar a funçao qplot() sem nos preocupar commaiores entendimentos, porém estariamos desperdiçando o potencialdo pacote ggplot2. ggplot2: The layered grammar os graphics ébaseado no trabalho de Wilkinson no livro The Grammar ofGraphics que pode ser descarregado no seguinte link http://link.springer.com/book/10.1007/978-1-4757-3100-2
Outra função fornecida pelo ggplot2 que permite fazer os gráficospor camadas (layered) é ggplot().
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
Layering é o mecanismo de agregar elementos ao gráfico.
Qual a diferença com qplop()? Quando usamos a funçãoggplop() cada camada pode vir de diferentes conjuntos de dados ediferentes variáveis podem ser utilizadas. Já o qplot() permite sóum unico conjunto de dados e um único conjunto de variáveis.
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
Os dados,Um conjunto de aesthetic mapping: variaveis a serem plotadas,The geom: Tipo de gráfico,The stat: Pega os dados e transforma eles (Ex: Smooth),The position adjustment: quais elementos ajustar para evitaroverplotting.
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
p = ggplot(diamonds, aes(carat, price, colour = color))
como não definimos nenhuma camada a função não mostrará nada.As camadas são addicionadas colocando um + e alguns (ou todos)or argumentos podem ser utilizados.
layer(geom, geom_params, stat, stat_params,data, mapping, position)
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
p + layer(geom="point")
0
5000
10000
15000
0 1 2 3 4 5carat
pric
e
color
D
E
F
G
H
I
J
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
ggplot(diamonds, aes(x = carat)) +layer(geom="bar", geom_params = list(fill = "steelblue"),
stat = "bin", stat_params = list(binwidth = 0.3))
0
5000
10000
15000
20000
0 2 4carat
coun
t
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
ggplot(diamonds, aes(x = carat)) +geom_histogram(binwidth = 0.3, fill = "steelblue")
0
5000
10000
15000
20000
0 2 4carat
coun
t
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
Todas as camadas tem a mesma estrutura:
geom_XYZ(mapping, data, . . . , geom, position)stat_XYZ(mapping, data, . . . , geom, position)
Argumentos:
mapping: usar aes(x,y)data: Usar sómente se formos utilizar um novo conjunto dedados, caso omitir esta informação será utilizado o conjunto dedados definido no ggplot(). . . : Parâmetros para geom ou stat (fill, colour, etc)geom ou stat:position: Escolher o método para ajustar a sobreposiçao dosobjetos.
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
ggplot(msleep, aes(sleep_rem/sleep_total, awake)) +geom_point()
## Warning: Removed 22 rows containing missing values (geom_point).
5
10
15
20
0.1 0.2 0.3sleep_rem/sleep_total
awak
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
qplot(sleep_rem/sleep_total, awake, data = msleep)
## Warning: Removed 22 rows containing missing values (geom_point).
5
10
15
20
0.1 0.2 0.3sleep_rem/sleep_total
awak
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
ggplot(msleep, aes(sleep_rem/sleep_total, awake)) +geom_point() + geom_smooth()
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.
## Warning: Removed 22 rows containing missing values (stat_smooth).## Warning: Removed 22 rows containing missing values (geom_point).
10
20
0.1 0.2 0.3sleep_rem/sleep_total
awak
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 - ggplot()
qplot(sleep_rem/sleep_total, awake, data = msleep,geom = c("point", "smooth"))
## geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to change the smoothing method.
## Warning: Removed 22 rows containing missing values (stat_smooth).## Warning: Removed 22 rows containing missing values (geom_point).
10
20
0.1 0.2 0.3sleep_rem/sleep_total
awak
e
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
Existe uma restrição nos dados quando trabalhamos com ggplot2, osdados devem ser um data frame. Esta restrição não é aplicada emoutros pacotes para fazer gráficos (no pacote Laticce por exemplo).
Quais são as razões para esta restrição?
É melhor ter o conjunto de dados que seja explicito enquantoque esta sendo feito com ele.Um data frame é mais facil de salvar do que um conjunto devetores, o que significa, ser mais fácil de enviar nossos dados ede reproduzir os resultaos.Esta restrição faz com que seja mais simple fazer o mesmográfico com diferentes dados (somente mudando o data frame)
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
p = ggplot(mtcars, aes(mpg, wt, colour = cyl)) +geom_point()
p
2
3
4
5
10 15 20 25 30 35mpg
wt
4
5
6
7
8cyl
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
mtcars <- transform(mtcars, mpg = mpg ^ 2)p %+% mtcars
2
3
4
5
300 600 900 1200mpg
wt
4
5
6
7
8cyl
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
head(Oxboys)
## Grouped Data: height ~ age | Subject## Subject age height Occasion## 1 1 -1.0000 140.5 1## 2 1 -0.7479 143.4 2## 3 1 -0.4630 144.8 3## 4 1 -0.1643 147.1 4## 5 1 -0.0027 147.7 5## 6 1 0.2466 150.2 6
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(Oxboys, aes(age, height, group = Subject,colour = Subject)) + geom_line()
130
140
150
160
170
−1.0 −0.5 0.0 0.5 1.0age
heig
ht
16
15
8
20
1
18
5
23
11
21
3Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(Oxboys, aes(Occasion, height)) + geom_boxplot()
130
140
150
160
170
1 2 3 4 5 6 7 8 9Occasion
heig
ht
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(Oxboys, aes(Occasion, height)) + geom_boxplot() +geom_line(aes(group = Subject), colour = "blue")
130
140
150
160
170
1 2 3 4 5 6 7 8 9Occasion
heig
ht
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(diamonds, aes(clarity)) + geom_bar()
0
5000
10000
I1 SI2 SI1 VS2 VS1 VVS2VVS1 IFclarity
coun
t
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar()
0
5000
10000
I1 SI2SI1VS2VS1VVS2VVS1IFclarity
coun
t
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(Oxboys, aes(sample = height)) + stat_qq()
130
140
150
160
170
−3 −2 −1 0 1 2 3theoretical
sam
ple
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(diamonds, aes(clarity, fill = cut)) +geom_bar(position="stack")
0
5000
10000
I1 SI2 SI1 VS2VS1VVS2VVS1 IFclarity
coun
t
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(diamonds, aes(clarity, fill = cut)) +geom_bar(position="dodge")
0
1000
2000
3000
4000
5000
I1 SI2 SI1 VS2VS1VVS2VVS1 IFclarity
coun
t
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2
ggplot(diamonds, aes(clarity, fill = cut)) +geom_bar(position="fill")
0.00
0.25
0.50
0.75
1.00
I1 SI2 SI1 VS2VS1VVS2VVS1 IFclarity
coun
t
cut
Fair
Good
Very Good
Premium
Ideal
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 in NY Times
http://www.nytimes.com/interactive/sports/football/2013-fantasy-football-tier-charts-QB.html?ref=football&_r=1&
Carlos Trucios Maza R para estatísticos: uma introdução.
Visualização de dados: ggplot2 in Nature
http://www.nature.com/ng/journal/v44/n3/full/ng.1050.html
Carlos Trucios Maza R para estatísticos: uma introdução.
Exercicios 3
Utilizar o conjunto de dados diamonds e fazer: - graficar a curva dadensidade para a variavel price - adicionar o histograma (no mesmográfico) - mudar de cor o histograma - Renomear os eixos comoPreço e Densidade - tirar o fundo cinza do gráfico
Carlos Trucios Maza R para estatísticos: uma introdução.
Exercicios 3: Solução
E3 = ggplot(diamonds,aes(price)) +geom_histogram(aes(y = ..density..),fill=I("green4"),
colour=I("green")) +geom_density(size=0.8,colour=I("red4")) +xlab("Preço") + ylab("Densidade") + theme_bw()
Carlos Trucios Maza R para estatísticos: uma introdução.
Exercicios 3: Solução
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
0e+00
1e−04
2e−04
3e−04
4e−04
0 5000 10000 15000 20000Preço
Den
sida
de
Carlos Trucios Maza R para estatísticos: uma introdução.
apply, sapply, lapply, . . .
apply: Aplicar a função às linhas ou colunas de uma matriz.
M = matrix(rnorm(25),ncol=5,nrow=5)apply(M, 1, min)
## [1] -1.7196 -1.9187 -1.4467 -0.6963 -1.6391
apply(M, 2, mean)
## [1] -0.1202 -0.1131 -0.2079 -0.7211 0.1495
Carlos Trucios Maza R para estatísticos: uma introdução.
apply, sapply, lapply e mapply
lapply - Quando você quer aplicar uma função para cadaelemento de uma lista e receber uma lista de volta.sapply - Quando você quer aplicar a funcão para cada elementode uma lista, porém quer retornar um vetor ao invés de umalista.vapply - Para quando você quer utilizar o sapply mas talvezprecise de um código mais rápido.rapply - Para quando você quer aplicar a função para cadaelemento de uma lista aninhada de forma recursiva.tapply - Para quando você quiser aplicar a função à subsetoresde um vetor e estes são definidos por outro vetor.
Fonte: http://pt.stackoverflow.com/questions/8056/apply-sapply-mapply-lapply-vapply-rapply-tapply-replicate-aggregate-by-e
Carlos Trucios Maza R para estatísticos: uma introdução.
Referencias
Curso sobre o programa computacional R. Paulo JustinianoRibeiro Juniorggplot2: Elegant Graphics for Data Analysis. Hadley WickhamLattice: Multivariate Data Visualization with R. Sarkar,Deepayanhttp://stackoverflow.com/tags/rhttp://pt.stackoverflow.com/questions/tagged/r
Carlos Trucios Maza R para estatísticos: uma introdução.
R Campinas Users Group
Carlos Trucios Maza R para estatísticos: uma introdução.
R Campinas Users Group
Carlos Trucios Maza R para estatísticos: uma introdução.
R Campinas Users Group
Carlos Trucios Maza R para estatísticos: uma introdução.
R Campinas Users Group
http://www.ime.unicamp.br/~ctrucios/RCampinasUsersGroup/
Próxima reunião: 21/10/2015 19:30-20:30. Laboratório EPIFISMA
Carlos Trucios Maza R para estatísticos: uma introdução.
Contato
Carlos Trucíos Maza
http://www.ime.unicamp.br/ ctrucios/
Carlos Trucios Maza R para estatísticos: uma introdução.