Boxplot Gráfico Visualização
Usaremos o banco de dados do IBGE com os Municipios do Rio de Janeiro.
# Base curly brackets adapted from https://stackoverflow.com/a/9310002/5213091 and https://gist.github.com/SwampThingPaul/43770cc8678f3b0bb1b11a74f85d9a40
CurlyBraces <- function(x, y, min.val,max.val, pos = 1, direction = 1 ,b=c(0,.2,.28,.7,.8),a=c(1,2,3,48,50)) {
# a set flexion point for spline
# b set depth for spline flexion point
curve = spline(a, b, n = 50, method = "natural")$y / 2
curve = c(curve,rev(curve))
a_sequence = rep(x,100)
b_sequence = seq(min.val,max.val,length=100)
# direction
if(direction==1)
a_sequence = a_sequence+curve
if(direction==2)
a_sequence = a_sequence-curve
# pos
if(pos==1)
lines(a_sequence,b_sequence) # vertical
if(pos==2)
lines(b_sequence,a_sequence) # horizontal
}
set.seed(1)
fake.dat<-rnorm(1000)
x<-boxplot(fake.dat,col="skyblue",pch=21,bg="black",axes=F,boxwex=0.3,xlim=c(0.5,2))
lines(c(1.07,1.3),rep(x$stats[1,],2),lty=2,col="grey75")
text(1.3,x$stats[1,],"Q1 - 1.5 x IQR",xpd=NA,pos=4,cex=0.75)
lines(c(1.07,1.3),rep(x$stats[2,],2),lty=2,col="grey75")
text(1.3,x$stats[2,],"Quantil 25 (Q1)",xpd=NA,pos=4,cex=0.75)
text(1.3,x$stats[3,],"Mediana",xpd=NA,pos=4,cex=0.75)
lines(c(1.07,1.3),rep(x$stats[3,],2),lty=2,col="grey75")
text(1.3,x$stats[4,],"Quantil 75 (Q3)",xpd=NA,pos=4,cex=0.75)
lines(c(1.07,1.3),rep(x$stats[4,],2),lty=2,col="grey75")
text(1.3,x$stats[5,],"Q3 + 1.5 x IQR",xpd=NA,pos=4,cex=0.75)
lines(c(1.07,1.3),rep(x$stats[5,],2),lty=2,col="grey75")
text(0.65,x$stats[2,]+diff(x$stats[c(2,4),])/2,srt=90,"Amplitude interquartil \n (Interquantile Range - IQR)" ,adj=0.5,xpd=NA,cex=0.75)
CurlyBraces(0.9,x$stats[2,]+diff(x$stats[c(2,4),])/2,x$stats[2,],x$stats[4,],b=c(0,0.2,0.28,0.7,0.8)/7,direction=2)
CurlyBraces(1.1,mean(x$out[x$out>0]),min(x$out[x$out>0]),max(x$out[x$out>0]),
b=c(0,0.2,0.28,0.7,0.8)/7,direction=1)
text(1.3,mean(x$out[x$out>0]),"Valores extremos",xpd=NA,cex=0.75,pos=4)
text(1.3,mean(x$out[x$out<0]),"Valores extremos",xpd=NA,cex=0.75,pos=4)
Nessas atividades, vamos usar quatro pacotes do R: ggplot2 e ggpubr para visualização de dados. readr para carregar a base de dados para o
Esses são os dados oficiais coletados do site do IBGE. Eles já estão prontos para análise estatística.
Use este pedaço de código para ler o banco de dados disponível em https://github.com/DATAUNIRIO/Base_de_dados
library(readr)
Municipios <- read_delim("https://raw.githubusercontent.com/DATAUNIRIO/Base_de_dados/master/Municipios.csv", ";", escape_double = FALSE, trim_ws = TRUE,locale=locale(encoding = "latin1"))
O banco de dados se chama Municipios.csv e está armazenado no repositório de bases de dados do curso de estatística. Você pode usar esse código se quiser ler o arquivo local.
library(readr)
Municipios <- read_delim("SEU DIRETÓRIO ATÉ O ARQUIVO/Municipios.csv", ";", escape_double = FALSE, trim_ws = TRUE,locale=locale(encoding = "latin1"))
colunas<-c("Munic","Regiao","Esperancadevida","Renda_per_capita_nula","Populacao","ISS","IDH")
Municipios<-Municipios[,colunas]
Tente responder a todas essas perguntas.
1. Qual município paga mais ISS per capita?
2. Qual região paga mais ISS per capita?
Vamos tentar criar uma nova visualização de dados. Em primeiro lugar, vamos criar um box-plot com a média e a mediana simultaneamente. A média será representada por um ponto vermelho enquanto a mediana continuará a ser representada com a linha tradicional
ggplot(Municipios, aes(x=Regiao, y=IDH, fill=Regiao)) +
geom_boxplot(alpha=0.7) +
stat_summary(fun.y=mean, geom="point", shape=20, size=14, color="red", fill="red") +
theme(legend.position="none") +
scale_fill_brewer(palette="Set1")
Agora vamos criar uma outra visualização de dados. O violin plot é um box-plot tradicional com uma represdentação da estimativa da função de densidade de probabilidade nas duas laterais. Ou seja, podemos ver a distribuição dos dados nos dois lados da distribuição.
COR<-brewer.pal(8,"Set1")
COR[6]<-"#b0a310"
ggviolin(Municipios, "Regiao", "IDH", color = "Regiao",
palette = COR, add = "boxplot")+
coord_flip()