Um atípico é uma observação que se encontra anormalmente afastada de outros valores num conjunto de dados. Os valores anómalos podem ser problemáticos porque podem afetar os resultados de uma análise.
Este tutorial explica como identificar e remover outliers no R.
Como identificar outliers no R
Antes de remover os valores atípicos, é necessário decidir o que se considera ser um valor atípico. Existem duas formas comuns de o fazer:
1) Utilizar o intervalo interquartil.
A amplitude interquartil (IQR) é a diferença entre o percentil 75 (Q3) e o percentil 25 (Q1) num conjunto de dados e mede a dispersão dos 50% intermédios dos valores.
Pode definir-se uma observação como sendo um outlier se for 1,5 vezes o intervalo interquartil superior ao terceiro quartil (Q3) ou 1,5 vezes o intervalo interquartil inferior ao primeiro quartil (Q1).
Outliers = Observações> Q3 + 1,5*IQR ou <Q1 - 1,5*IQR
2) Utilizar os z-scores.
Um z-score indica quantos desvios-padrão um determinado valor está da média. Utilizamos a seguinte fórmula para calcular um z-score:
z = (X - μ) / σ
onde:
- X é um valor único de dados brutos
- μ é a média da população
- σ é o desvio-padrão da população
Poder-se-ia definir uma observação como sendo anómala se tivesse um valor de z-score inferior a -3 ou superior a 3.
Anómalos = Observações com valores z-scores> 3 ou <-3
Como remover outliers no R
Depois de decidir o que considera ser um outlier, pode identificá-lo e removê-lo de um conjunto de dados. Para ilustrar como o fazer, vamos utilizar o seguinte quadro de dados:
#tornar este exemplo reprodutível set.seed(0) #criar quadro de dados com três colunas A', 'B', 'C' df <- data.frame(A=rnorm(1000, mean=10, sd=3), B=rnorm(1000, mean=20, sd=3), C=rnorm(1000, mean=30, sd=3)) #ver as primeiras seis linhas do quadro de dados head(df) A B C 1 13.78886 19.13945 31.33304 2 9.02130 25.52332 30.03579 3 13.98940 19.52971 29.97216 4 13.81729 15.83059 29.09287 5 11.24392 15.58069 31.477076 5.38015 19.79144 28.19184
Podemos então definir e remover os valores atípicos utilizando o método da pontuação z ou o método do intervalo interquartil:
Método de pontuação Z:
O código a seguir mostra como calcular o escore z de cada valor em cada coluna no quadro de dados e, em seguida, remover as linhas que têm pelo menos um escore z com um valor absoluto maior que 3:
#encontrar o valor absoluto de z-score para cada valor em cada coluna z_scores <- as.data.frame (sapply(df, function(df) (abs(df-mean(df))/sd(df)))) #ver as primeiras seis linhas de z_scores data frame head(z_scores) A B C 1 1.2813403 0.25350805 0.39419878 2 0.3110243 1.80496734 0.05890232 3 1.3483190 0.12766847 0.08112630 4 1.2908343 1.32044506 0.38824414 5 0.4313316 1.40102642 0.44450451 6 1.52716740.04327186 0.70295309 #mantém apenas as linhas no quadro de dados com todas as pontuações z inferiores ao valor absoluto de 3 no_outliers 3), ] #visualiza a contagem de linhas e colunas do novo quadro de dados dim(no_outliers) 994 3
O quadro de dados original tinha 1000 linhas e 3 colunas. O novo quadro de dados tem 994 linhas e 3 colunas, o que nos diz que 6 linhas foram removidas porque tinham pelo menos um z-score com um valor absoluto superior a 3 numa das suas colunas.
Método do intervalo interquartil:
Por exemplo, suponha que só queremos remover as linhas que têm um outlier na coluna "A" do nosso quadro de dados.
O código seguinte mostra como remover linhas da estrutura de dados que têm um valor na coluna "A" que é 1,5 vezes o intervalo interquartil superior ao terceiro quartil (Q3) ou 1,5 vezes o intervalo interquartil inferior ao primeiro quartil (Q1).
#encontrar Q1, Q3, e intervalo interquartil para valores na coluna A Q1 <- quantile(df$A, .25) Q3 <- quantile(df$A, .75) IQR <- IQR(df$A) #só manter linhas no dataframe que têm valores dentro de 1.5*IQR de Q1 e Q3 no_outliers (Q1 - 1.5*IQR) & df$A<(Q3 + 1.5*IQR)) #ver contagem de linhas e colunas do novo data frame dim(no_outliers) 994 3
O quadro de dados original tinha 1.000 linhas e 3 colunas. O novo quadro de dados tem 994 linhas e 3 colunas, o que nos diz que 6 linhas foram removidas porque tinham pelo menos um outlier na coluna A.
Quando remover valores atípicos
Se um ou mais valores atípicos estiverem presentes, deve primeiro verificar se não resultam de um erro de introdução de dados. Por vezes, um indivíduo introduz simplesmente o valor errado ao registar os dados.
Se o valor atípico for resultado de um erro de introdução de dados, pode decidir atribuir-lhe um novo valor, como a média ou a mediana do conjunto de dados.
Se o valor for um verdadeiro valor atípico, pode optar por removê-lo se tiver um impacto significativo na sua análise global. Certifique-se apenas de que menciona no seu relatório ou análise final que removeu um valor atípico.