Esse documento tem dois objetivos:

1 - Analisar os critérios do R para a construção dos limites inferior e superior do boxplot

2 - Mostrar como construir um gráfico (boxplot do pacote básico de gráficos) incluindo valores

Introdução

Para quem não conhece a função de um boxplot, sua ideia é mostrar a distribuição e concentração dos dados em percentuais de 25%, isto é, entre 25 e 50, 50 (mediana) e 75%. Além de 75% e aquem de 25% são calculados limites, onde dados posicionados além desses limites são analisados, podendo ser considerados, aberrações, exceções, expurgos, pois poderão afetar modelos preditivos, média e outras medidas estatísticas.

O analista de dados deve entender, preferencialmente com o ‘dono da informação’, qual o significado deles, e se esses números devem ser mantidos ou expurgados da amostra analisada.

Ele funiona como complemento de um histograma para auma análise descritiva.

Obs: usaremos o dataset mtcars, que faz parte da biblioteca interna do R

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Análise exploratória dos dados

# Nome das colunas
names(mtcars)
##  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
## [11] "carb"
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000
# Usaremos uma das colunas do dataset (hp) para o ensaio proposto

# Cálculo dos limites
LIC = quantile(mtcars$hp, probs = 0.25) - 1.5*(IQR(mtcars$hp))
LSC = quantile(mtcars$hp, probs = 0.75) + 1.5*(IQR(mtcars$hp))

1 - Analisando os limites do Boxplot

# Limites do R
LIR <- boxplot.stats(mtcars$hp)$stats[1]
LSR <- boxplot.stats(mtcars$hp)$stats[5]

outliers <- boxplot.stats(mtcars$hp)$out
select(mtcars, hp) %>% filter(hp >260) %>% arrange(hp)
##    hp
## 1 264
## 2 335
outliers
## [1] 335
limites <- data.frame(Limite_Inferior = c(LIC, LIR), Limite_Superior = c(LSC, LSR), row.names = c("Calculado", "R"))

Tabela de Limites

limites
##           Limite_Inferior Limite_Superior
## Calculado          -28.75          305.25
## R                   52.00          264.00

2 - Boxplot com valores

## 2 - Boxplot incluindo valores
valores <- as.integer(c(boxplot.stats(mtcars$hp)$out, boxplot.stats(mtcars$hp)$stats, LSC, LIC))

carros <- boxplot(mtcars$hp, main = "Boxplox (mtcars)", ylab = "hp")
text(y = valores, labels = valores, x = 1.25)

Conclusões

1 - Como podemos observar na Tabela de Limites, os valores usados no

Boxplot não correepondem aos calculados. R usa como limites do boxpot:

  • O próximo valor existente da variável a partir do limite inferior calculado
  • O valor anterior existente da variável a partir do limite superior calculado ### Logo, Os outliers são definidos fora desses limites.

2 - A mecânica de construção de gráficos no R funciona por layers ou camadas.

Faz-se interssante muitas vezes, incluir na camada estética, os valores.

——————————————————————————-