Aula 50. Outliers

Detectar não é sempre excluir, três critérios e uma árvore de decisão

Acompanhe o Café com R

  • Que cada gole desperte uma nova ideia.

  • Que cada script abra uma nova conversa.

  • Que o Café com R se torne um ponto de encontro nosso.

SITE OFICIAL > https://jenniferlopes.github.io/meu_site/

Objetivos da aula

  • Definir o que é um outlier, e reconhecer que outlier não é sinônimo de erro
  • Aplicar o critério de Tukey, baseado no IQR
  • Aplicar o critério do z-score modificado, baseado no MAD
  • Aplicar a distância de Mahalanobis para outliers multivariados
  • Decidir corretamente o que fazer com um outlier identificado

Bloco 1

O que é um Outlier

Conceito, definição

  • Um outlier é uma observação que se distancia substancialmente do padrão geral dos demais dados, segundo um critério estatístico formal.

  • Contexto: um lote de 80 frutos de tomate tem peso e diâmetro registrados. Dois valores chamam atenção, um provavelmente originado de um erro de digitação, outro correspondente a um fruto real, de tamanho genuinamente excepcional.

Important

Atenção: outlier não é sinônimo de erro. Um valor discrepante pode refletir um erro de coleta ou de digitação, ou pode refletir um evento real e legítimo, uma planta excepcional, uma condição de solo pontual, uma medição correta de algo raro.

Bloco 2

Critério 1, IQR de Tukey

Fórmula, a regra de 1,5 vezes o IQR

\[\text{Limite inferior} = Q_1 - 1{,}5 \times IQR \qquad \text{Limite superior} = Q_3 + 1{,}5 \times IQR\]

  • \(Q_1\) e \(Q_3\) são o primeiro e o terceiro quartis, \(IQR = Q_3 - Q_1\).

  • Proposto por John Tukey em 1977, é o critério mais utilizado em boxplots, e depende apenas da posição dos dados, sendo pouco sensível a distribuições assimétricas moderadas.

Código: identificação de outliers por IQR

limites_iqr <- dados_tomate |>
  summarise(q1 = quantile(peso_g, 0.25), q3 = quantile(peso_g, 0.75)) |>
  mutate(iqr = q3 - q1,
         limite_inf = q1 - 1.5 * iqr,
         limite_sup = q3 + 1.5 * iqr)

dados_tomate |>
  mutate(outlier_iqr = peso_g < limites_iqr$limite_inf |
                        peso_g > limites_iqr$limite_sup) |>
  filter(outlier_iqr)

Output e interpretação

# A tibble: 1 × 5
     q1    q3   iqr limite_inf limite_sup
  <dbl> <dbl> <dbl>      <dbl>      <dbl>
1  136.  160.    24       100.       196.
# A tibble: 2 × 4
  fruto peso_g diametro_mm outlier_iqr
  <int>  <dbl>       <dbl> <lgl>      
1    15   1500        42   TRUE       
2    42    245        69.6 TRUE       
  • O critério do IQR identifica os dois valores discrepantes, o de 1500 gramas e o de 245 gramas, ambos acima do limite superior. Esse critério, sozinho, não distingue qual dos dois é erro e qual é evento real.

Bloco 3

Critério 2, Z-score Modificado

Fórmula, baseada no MAD

\[M_i = \frac{0{,}6745 \times (x_i - \tilde{x})}{MAD}\]

  • Proposto por Iglewicz e Hoaglin em 1993, substitui a média e o desvio padrão do z-score tradicional pela mediana e pelo MAD, medidas robustas a valores extremos.

  • Observações com \(|M_i| > 3{,}5\) são consideradas outliers. A constante 0,6745 torna o MAD comparável ao desvio padrão sob distribuição normal.

  • Por depender de medidas robustas, é menos influenciado pelo próprio outlier que está sendo avaliado, ao contrário do z-score tradicional.

Código: identificação por z-score modificado

mediana_peso <- median(dados_tomate$peso_g)
mad_peso     <- mad(dados_tomate$peso_g)

dados_tomate |>
  mutate(z_modificado = 0.6745 * (peso_g - mediana_peso) / mad_peso) |>
  filter(abs(z_modificado) > 3.5)

Output e interpretação

# A tibble: 2 × 4
  fruto peso_g diametro_mm z_modificado
  <int>  <dbl>       <dbl>        <dbl>
1    15   1500        42          49.4 
2    42    245        69.6         3.54
  • Os mesmos dois valores são sinalizados, mas o z-score modificado do valor de 1500 gramas é ordens de magnitude maior que o do valor de 245 gramas, uma primeira pista de que se trata de naturezas diferentes de desvio.

Bloco 4

Critério 3, Distância de Mahalanobis

Conceito multivariado, quando usar

  • A distância de Mahalanobis mede o quão distante uma observação está do centro de um conjunto de variáveis, considerando também a correlação entre elas, e não apenas cada variável isoladamente.

\[D_i^2 = (\mathbf{x}_i - \bar{\mathbf{x}})^T \, S^{-1} \, (\mathbf{x}_i - \bar{\mathbf{x}})\]

  • \(S\) é a matriz de covariância das variáveis, \(\bar{\mathbf{x}}\) o vetor de médias.

  • É o critério indicado quando duas ou mais variáveis são naturalmente correlacionadas, como peso e diâmetro do fruto, e o objetivo é detectar combinações inconsistentes, não apenas valores extremos isolados.

Código: cálculo da distância de Mahalanobis

matriz_dados <- dados_tomate |> select(peso_g, diametro_mm)
centro       <- colMeans(matriz_dados)
covariancia  <- cov(matriz_dados)

dados_tomate |>
  mutate(distancia_mahalanobis = mahalanobis(matriz_dados, centro, covariancia)) |>
  arrange(desc(distancia_mahalanobis)) |>
  head(5)

Output e interpretação

# A tibble: 5 × 4
  fruto peso_g diametro_mm distancia_mahalanobis
  <int>  <dbl>       <dbl>                 <dbl>
1    15  1500         42                   77.6 
2    42   245         69.6                 24.3 
3    26   184.        58.8                  3.17
4    39   160.        58.6                  2.84
5    45   135         46.8                  2.81
  • O fruto 15, com peso de 1500 gramas e diâmetro compatível com um fruto normal, apresenta a distância de Mahalanobis mais alta, pois a combinação entre as duas variáveis é inconsistente. O fruto 42, apesar de também ter peso elevado, tem diâmetro proporcionalmente compatível, e sua distância de Mahalanobis é bem menor, coerente com um fruto real, grande, mas fisicamente plausível.

Bloco 5

Tomada de Decisão

Árvore de decisão, o que fazer com o outlier

Situação Ação recomendada
Valor impossível para a variável, erro de digitação identificável Corrigir, quando a fonte original permite confirmação, ou remover
Valor extremo, mas fisicamente plausível e consistente entre variáveis correlacionadas Manter, investigar sua causa, considerar reportar separadamente
Valor extremo, causa desconhecida, sem possibilidade de verificação Analisar os dados com e sem o valor, reportar ambos os resultados
Múltiplos valores extremos concentrados em uma condição específica Investigar se representam um subgrupo real, não outliers individuais

Erro comum 1, excluir todo outlier automaticamente

  • Remover qualquer observação sinalizada por um critério estatístico, sem investigar sua origem, pode eliminar informação real e relevante, como o fruto excepcionalmente grande deste conjunto de dados.

  • A exclusão deve ser justificada pela origem do valor, não apenas pelo resultado do critério estatístico isoladamente.

Erro comum 2, usar um único critério sem considerar o contexto do dado

  • Critérios univariados, como IQR e z-score modificado, não distinguem entre um erro de digitação e um evento real quando ambos produzem valores extremos na mesma variável.

  • Combinar critérios, incluindo a distância de Mahalanobis quando há variáveis correlacionadas disponíveis, fornece uma base mais sólida para a decisão do que um único número isolado.

Resumo: detecção de outliers

Critério Tipo Baseado em Função no R
IQR de Tukey Univariado Quartis quantile()
Z-score modificado Univariado Mediana e MAD median(), mad()
Distância de Mahalanobis Multivariado Média e covariância mahalanobis()

Obrigada!

Continue praticando e explorando.

Esta aula é parte do projeto Café com R. É open source. Use, compartilhe e adapte.

Siga o Café com R

  • Que cada gole desperte uma nova ideia.

  • Que cada script abra uma nova conversa.

  • Que o Café com R se torne um ponto de encontro nosso.

SITE OFICIAL > https://jenniferlopes.github.io/meu_site/