• Nenhum resultado encontrado

Após a contaminação dos dados, será executada a função para a detecção dos outliers, linha 24 do Algoritmo 1. O detalhamento da função pode ser vista no Algoritmo 2 que recebe como entrada o conjunto de dados pseudo-reais contaminados (V′), retornando como saída o conjunto de dados (V′′) após a aplicação dos métodos para identificação das anomalias (Ψ).

Algoritmo 2: Detecção de outliers

Entrada: V′ – Dados pseudo-reais com outliers

Saída: V′′– Dados pseudo-reais após remoção de outliers

1 início

2 V′′mve← remove(Ψmve(V′, 0, 975));

3 V′′mcd_aq← remove(Ψmcd_aq(V, 0, 975));

4 V′′mdc_dd← remove(Ψmcd_dd(V, 0, 975));

5 V′′med← remove(Ψmed(V));

6 fim

Como é possível observar, no algoritmo 2, todos os métodos para detecção de outliers (Ψ) serão executados para cada conjunto de dados pseudo-reais contaminados (V′

). Este processo foi adotado para facilitar a comparação entre os métodos. Nas simulações, foram utilizadas matrizes multidimensionais para armazenar o resultado da aplicação de cada método empregado, V′′

mve, V

′′

mcd_aq, V′′mcd_dd e V′′med. Os

métodos mve, mcd_aq e mcd_dd utilizam, respectivamente, as funções cov.mve(), aq.plot()e dd.plot(). A primeira função é pertencente ao pacote MASS, já as duas últimas são pertencentes ao pacote mvoutlier [Filzmoser & Gschwandtner, 2012]. Essas funções recebem como entrada o conjunto de dados a ser analisado (V′) e o intervalo de confiança desejado, em nosso caso, 0, 975, e geram como saída um vetor onde são

4.3. Detecção dos outliers 29

marcadas as amostras contaminadas. Não existe uma função específica para o cálculo do MED, então, esta simulação foi realizada por intermédio de manipulações algébricas, conforme descrito no trabalho de Santana Giroldo & Barroso [2008].

As manipulações algébricas utilizadas no cálculo do MED estão descritas no algo- ritmo 3. O algoritmo recebe como entrada o conjunto de dados com outliers (V′) e tem como saída um conjunto de dados que representa o valor do MED para cada amostra. Antes de iniciar o laço da linha 2, serão calculados a média, a matriz de covariância, os autovalores e os autovetores do conjunto V′

, representados, respectivamente por mean, vardata, autoval, e autovet. Para calcular a média aritmética, utilizamos a função colMean, pertencente ao pacote base [R Development Core Team, 2012]. Esta função recebe uma matriz de dados como entrada, e retorna a média aritmética das colunas.

A covariância foi obtida por intermédio da função var, do pacote stats, e recebe como entrada um conjunto de dados, representando por uma matriz, e retorna sua matriz de covariância. A função eigen do pacote base foi utilizada para a extração dos autovalores e autovetores da matriz de covariância. O primeiro autovalor de autoval será copiado para a última posição do vetor AUT OV AL, que tem tamanho n + 1, onde n representa o tamanho da amostra. Na última posição da matriz AUT OV ET , de tamanho p × n + 1, onde p indica o número de variáveis, serão salvos os primeiros autovetores da matriz de covariância dos dados com outliers.

• Linhas 2 – 11: Representa o cálculo da média aritmética, matriz de covariância, dos autovalores e autovetores, do conjunto de dados pseudo-real com outliers (V′

), extraída a amostra atualmente analisada.

• Linha 12: Representa o produto dos autovalores por autovetores do conjunto de dados V′

.

• Linhas 13 – 15: Representa o cálculo do produto dos autovalores por autovetores do conjunto de dados V′, porém, desconsiderando-se cada amostra analisada. • Linhas 16 – 18: Representa o cálculo da diferença do produto dos autovalores e

autovetores de cada amostra em relação aos autovetores e autovalores do conjunto completo.

• Linhas 19 – 25: Representa o cálculo da norma euclidiana para cada amostra de V′.

• Linhas 26 – 40: Representa o cálculo de uma função indicadora, conforme descrito no trabalho de Santana Giroldo & Barroso [2008].

30 Capítulo 4. Processo de simulação

Algoritmo 3: Max-eigen difference (MED)

Entrada: V′ – Dados pseudo-reais com outliers

Saída: outliermed – Vetor indicando o valor de MED para cada amostra

1 início

2 parai ← 1; i ≤ n; i ← i + 1 faça

3 M D ← V′

−i;

4 mean1 ← colM eans(M D);

5 vardata1 ← var(M D);

6 avv.dados1 ← eigen(vardata1);

7 autoval1 ← eigen(vardata, only.values = T RU E$values);

8 autovet1 ← eigen(vardata, only.values = F ALSE$vectors);

9 AU T OV AL[i] ← autoval[1];

10 AU T OV ET [, i] ← autovet[, 1];

11 fim

12 P ROD ← AU T OV AL[n + 1] ∗ AU T OV ET [, n + 1];

13 parai ← 1; i ≤ n; i ← i + 1 faça

14 P ROD ← AU T OV AL[i] ∗ AU T OV ET [, i];

15 fim

16 parai ← 1; i ≤ n; i ← i + 1 faça

17 DIF ← P ROD[, i] − P ROD[, n + 1];

18 fim

19 parai ← 1; i ≤ n; i ← i + 1 faça

20 somadif ← 0;

21 paraj ← 1; i ≤ p; j ← j + 1 faça

22 somadif ← somadif + (DIF [i, j])2;

23 fim

24 norma[i] ← sqrt(somadif );

25 fim

26 parai ← 1; i ≤ n; i ← i + 1 faça

27 paraj ← 1; i ≤ p; j ← j + 1 faça

28 y[i, j] ← (t(V′i− mean) ∗ autovet[, j])2;

29 fim

30 fim

31 parai ← 1; i ≤ n; i ← i + 1 faça

32 paraj ← 1; i ≤ p; j ← j + 1 faça

33 sey[i, j] < autoval[j] então

34 indicador[i, j] ← 1;

35 fim

36 senão sey[i, j] ≥ autoval[j] então

37 indicador[i, j] ← 0; 38 fim 39 fim 40 fim 41 parai ← 1; i ≤ n; i ← i + 1 faça 42 produtorio[i] ← 1; 43 paraj ← 1; i ≤ p; j ← j + 1 faça

44 produtorio ← produtorio ∗ indicador[i, j];

45 fim

46 d[i] ← norma[i] ∗ (1 − produtorio[i]);

47 fim

48 parai ← 1; i ≤ n; i ← i + 1 faça

49 somad← somad+ d[i];

50 fim

51 parai ← 1; i ≤ n; i ← i + 1 faça

52 outlier_med ← d[i]/somad;

53 fim

4.3. Detecção dos outliers 31

• Linhas 41 – 47: Representa o cálculo do MED para cada amostra.

• Linhas 48 – 54: Representa o cálculo do MED padronizado para cada amostra. Esse valor é obtido dividindo-se a distância de cada amostra pelo somatório de todas as distâncias do conjunto.

Assim, as amostras serão definidas como outlier sempre que, seu valor de MED exceder a média ± desvio padrão do conjunto de valores do MED (outlier_med).

Os métodos empregados estavam reportando um elevado número de falsos po- sitivos, i.e., quando os dados normais são erroneamente classificados como outliers. Para reduzir esse número, convencionou-se que, os dados marcados como outliers pelos métodos utilizados, MVE, MCD e MED, só serão definitivamente classificados como outliers, após a passagem por um filtro. Esse, compara a amostra considerada com a mediana ± desvio padrão e, sempre que este valor for excedido, dos dados pré clas- sificados serão definitivamente marcados como outliers. A mediana foi escolhida por sofrer menor interferência das anomalias.

Algoritmo 4: Filtro baseado na mediana

Entrada: Ψ – Candidatos a outliers

Saída: V′′– Dados pseudo-reais após a remoção de outleirs

1 início

2 m ← median(V);

3 σ ← sd(V);

4 para i ← 1; i ≤ n; i ← i + 1 faça

5 seΨnfor candidato a outlier então

6 f lag ← 0;

7 paraj ← 1; j ≤ p; j ← j + 1 faça

8 se Vi,j≥ mj+ σj então

9 f lag ← f lag + 1;

10 fim

11 senão se Vi,j≤ mj− σj então

12 f lag ← f lag + 1; 13 fim 14 fim 15 sef lag > 0 então 16 remover(V′i,j); 17 fim 18 fim 19 fim 20 fim

O algoritmo 4, traz o pseudo-código do filtro aplicado. Esse algoritmo recebe como entrada os dados pré-classificados como outliers, utilizando os métodos MVE, MCD e MED, e retorna o conjunto de dados final, após a remoção dos outliers.

32 Capítulo 4. Processo de simulação

• Linhas 2 e 3: Representa, respectivamente, o cálculo da mediana e do desvio padrão dos dados com outliers. Para isso são utilizadas as funções madian() e sd(), ambas pertencentes ao stats do software R.

• Linha 4: Representa o laço utilizado para percorrer o número de amostras consi- deradas, ou seja, o número de linhas da matriz de entrada (n).

• Linha 5: Representa o processo de verificação para comprovar se a amostra atual foi marcada como candidata a outlier.

• Linha 7: Representa o laço utilizado para percorrer o número de variáveis consi- deradas (p), ou seja, o número de colunas da matriz de entrada.

• Linhas 8 – 13: Realiza a comparação da amostra atualmente analisada com o limite definido pelo filtro (mediana ± desvio padrão).

• Linha 15: Representa o processo de exclusão de uma amostra do conjunto ana- lisado. Esta exclusão é realizada sempre que uma ou mais variáveis de uma amostra estiver fora do padrão definido pelo filtro (mediana ± desvio padrão).

Documentos relacionados