Removendo dados discrepantes (outliers) com a linguagem Python.

Python é a linguagem de scripts utilizada pelo EPM. Para maiores informações, clique aqui.

Muitas vezes, uma análise estatística não pode ser validada devido à existência de outliers, ou seja, valores inconsistentes com os demais do conjunto. Neste estudo de caso, vamos considerar que houve problemas em um sensor de temperatura ambiente, o que causou leituras erradas. Observe o conjunto de dados:

Temperaturas = [ 25, 26, 225, 24, 23, 24, 25, 325, 28, 27]

Fica claro que existem valores incompatíveis. Veja o que acontece se calcularmos a média entre estes valores:

Média = (25+26+225+24+23+24+25+325+28+27) / 10, ou seja = 75.2

Obviamente a média está fora da normalidade, e isso causaria erros na interpretação dos dados. Observe agora a média sem os outliers.

Média = (25+26+24+23+24+25+28+27)/8, ou seja = 25.25

A função removeoutlier  utiliza o método de John Tukey  (John Tukey, Exploratory Data Analysis, Addison-Wesley, 1977, pp. 43-44 ).

Considere:

q1 como primeiro quartil do conjunto de valores.

q3 como terceiro quartil do conjunto de valores.

Os outliers serão os valores do conjunto que estão abaixo de q1 – 1.5(q3-q1) e acima de q3 + 1.5(q3-q1).

import numpy as np

def removeoutlier(values):

    fator = 1.5

    q3, q1 = np.percentile(values, [75, 25])

    iqr = q3 q1

    lowpass = q1 (iqr * fator)

    highpass = q3 + (iqr * fator)

    return [v for v in values if v > lowpass and v < highpass]

Anexo a este artigo está uma versão comentada desse script.

NOTA: Nem sempre outliers representam erros de leitura. Por exemplo, uma temperatura extrema poderia ser causada por condições climáticas adversas. É necessário avaliar o conjunto de dados, o contexto em que foram gerados e quais informações se deseja extrair deles, para saber qual a melhor técnica para remoção de outliers.

Anexos:

removeoutliers.zip

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 5 / 5. Count: 2

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *