class: center, middle, inverse, title-slide # BOXPLOT ## explicando o boxplot ### Steven Ross ### UNIRIO ### 2019/12/12 (updated: 2020-05-04) --- class: center, middle <style type="text/css"> body, td { font-size: 14px; } code.r{ font-size: 10px; } pre { font-size: 20px } </style> <!-- --> --- ```r # Base curly brackets adapted from https://stackoverflow.com/a/9310002/5213091 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="grey",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]),"Valor extremo",xpd=NA,cex=0.75,pos=4) text(1.3,mean(x$out[x$out<0]),"Valor extremo",xpd=NA,cex=0.75,pos=4) text(0.5,3.9,"Legenda",font=2,xpd=NA,cex=1.25) ```