Suponha que eu tenha um grande conjunto de dados multivariados com pelo menos três variáveis. Como posso encontrar os outliers? Os gráficos de dispersão em pares não funcionarão, pois é possível que um outlier exista em três dimensões que não seja um outlier em nenhum dos subespaços bidimensionais.
Não estou pensando em um problema de regressão, mas em dados multivariados verdadeiros. Portanto, respostas que envolvam regressão robusta ou alavancagem computacional não são úteis.
Uma possibilidade seria calcular as pontuações dos componentes principais e procurar um valor externo no gráfico de dispersão bivariado das duas primeiras pontuações. Isso seria garantido para o trabalho? Existem abordagens melhores?
multivariate-analysis
outliers
Rob Hyndman
fonte
fonte
Respostas:
Dê uma olhada no pacote mvoutlier , que depende de distâncias robustas ordenadas dos mahalanobis, conforme sugerido por @drknexus.
fonte
Acho que a resposta de Robin Girard funcionaria muito bem para 3 e possivelmente 4 dimensões, mas a maldição da dimensionalidade impediria que funcionasse além disso. No entanto, sua sugestão me levou a uma abordagem relacionada, que é aplicar a estimativa de densidade de kernel validada cruzadamente às três primeiras pontuações de componentes principais. Em seguida, um conjunto de dados de alta dimensão ainda pode ser tratado ok.
Em resumo, para i = 1 en
fim para
Classifique o Li (para i = 1, .., n) e os valores extremos são aqueles com probabilidade abaixo de algum limite. Não sei o que seria um bom limite - deixarei para quem escreve o artigo sobre isso! Uma possibilidade é fazer um boxplot dos valores do log (Li) e ver quais outliers são detectados no final negativo.
fonte
Você pode encontrar um resumo pedagógico dos vários métodos disponíveis em (1)
Para algumas comparações numéricas - recentes - dos vários métodos listados lá, você pode verificar (2) e (3) .
existem muitas comparações numéricas mais antigas (e menos exaustivas), geralmente encontradas em livros. Você encontrará um nas páginas 142-143 de (4), por exemplo.
Observe que todos os métodos discutidos aqui têm uma implementação R de código aberto, principalmente por meio do pacote rrcov .
fonte
Eu faria algum tipo de "deixar de fora um algoritmo de teste" (n é o número de dados):
para i = 1 en
fim para
classifique (para i = 1, .., n) e use um procedimento de teste de hipóteses múltiplas para dizer quais não são bons ...Li
Isso funcionará se n for suficientemente grande ... você também pode usar a estratégia "deixar k de fora", que pode ser mais relevante quando você tiver "grupos" de outliers ...
fonte
Você pode encontrar candidatos a "outliers" entre os pontos de suporte do elipsóide de volume mínimo delimitador. ( Algoritmos eficientes para encontrar esses pontos em dimensões razoavelmente altas, exatamente e aproximadamente, foram inventados em vários artigos na década de 1970 porque esse problema está intimamente relacionado a uma questão no projeto experimental.)
fonte
A nova abordagem que vi foi pela análise de componentes principais da IT Jolliffe . Você executa um PCA com seus dados (Nota: o PCA pode ser uma ferramenta de exploração de dados bastante útil), mas, em vez de examinar os primeiros Componentes Principais (PCs), você plota os últimos PCs. Esses PCs são os relacionamentos lineares entre suas variáveis com a menor variação possível. Assim, eles detectam relacionamentos multivariados "precisos" ou quase precisos em seus dados.
Um gráfico das pontuações do PC para o último PC mostrará valores discrepantes que não são facilmente detectáveis, analisando individualmente cada variável. Um exemplo é para altura e peso - alguns que têm altura "acima da média" e peso "abaixo da média" seriam detectados pelo último PC de altura e peso (supondo que eles estejam correlacionados positivamente), mesmo que sua altura e peso não fossem " extremo "individualmente (por exemplo, alguém com 180 cm e 60 kg).
fonte
Não vi ninguém mencionar funções de influência . Vi essa ideia pela primeira vez no livro multivariado de Gnanadesikan .
Em uma dimensão, um discrepante é um valor extremamente grande ou extremamente pequeno. Na análise multivariada, é uma observação removida da maior parte dos dados. Mas que métrica devemos usar para definir extremo para o discrepante? Existem muitas opções. A distância de Mahalanobis é apenas uma. Penso que procurar todos os tipos de discrepâncias é inútil e contraproducente. Gostaria de perguntar por que você se importa com o outlier? Ao estimar uma média, eles podem ter uma grande influência nessa estimativa. Estimadores robustos apresentam baixo peso e acomodam valores discrepantes, mas não os testam formalmente. Agora em regressão, os valores discrepantes - como pontos de alavancagem - podem ter grandes efeitos nos parâmetros de inclinação do modelo. Com dados bivariados, eles podem influenciar indevidamente o coeficiente de correlação estimado e em três ou mais dimensões o coeficiente de correlação múltipla.
As funções de influência foram introduzidas por Hampel como uma ferramenta na estimativa robusta e Mallows escreveu um belo artigo não publicado defendendo seu uso. A função de influência é uma função do ponto em que você está no espaço n-dimensional e do parâmetro. Mede essencialmente a diferença entre a estimativa de parâmetro com o ponto no cálculo e com o ponto deixado de fora. Em vez de se dar ao trabalho de fazer o cálculo das duas estimativas e fazer a diferença, muitas vezes você pode derivar uma fórmula para isso. Em seguida, os contornos da influência constante informam a direção que é extrema em relação à estimativa desse parâmetro e, portanto, informam onde, no espaço n-dimensional, procurar o outlier.
Para mais, você pode ver meu artigo de 1983 no American Journal of Mathematics and Management Sciences intitulado "A função de influência e sua aplicação à validação de dados". Na validação de dados, queríamos procurar discrepâncias que afetassem o uso pretendido dos dados. Meu sentimento é que você deve direcionar sua atenção para valores discrepantes que afetam muito os parâmetros que você está interessado em estimar e não se importa tanto com os outros que não o fazem.
fonte
Pode ser um overshoot, mas você pode treinar uma Floresta Aleatória não supervisionada nos dados e usar a medida de proximidade do objeto para detectar discrepâncias. Mais detalhes aqui .
fonte
Para dimensões moderadas, como 3, então algum tipo de técnica de validação cruzada do kernel, como sugerido em outros lugares, parece razoável e é o melhor que posso apresentar.
Para dimensões mais altas, não tenho certeza de que o problema seja solucionável; aterra bastante diretamente no território da 'maldição da dimensionalidade'. O problema é que as funções de distância tendem a convergir para valores muito grandes muito rapidamente à medida que você aumenta a dimensionalidade, incluindo distâncias derivadas de distribuições. Se você está definindo um outlier como "um ponto com uma função de distância comparativamente grande em relação aos outros", e todas as suas funções de distância estão começando a convergir porque você está em um espaço de alta dimensão, bem, você está com problemas .
Sem algum tipo de suposição distributiva que permita transformá-lo em um problema de classificação probabilística, ou pelo menos alguma rotação que permita separar seu espaço em "dimensões de ruído" e "dimensões informativas", acho que a geometria dos espaços de alta dimensão proibirá qualquer identificação fácil - ou pelo menos robusta - de discrepantes.
fonte
Não sei o que você quer dizer quando diz que não está pensando em um problema de regressão, mas em "dados verdadeiros multivariados". Minha resposta inicial seria calcular a distância de Mahalanobis, uma vez que não requer que você especifique um IV ou DV específico, mas, em sua essência (pelo que entendi), está relacionado a uma estatística de alavancagem.
fonte
Não sei que alguém está fazendo isso, mas geralmente gosto de tentar reduzir a dimensionalidade quando tenho um problema como esse. Você pode procurar um método de aprendizado múltiplo ou redução de dimensionalidade não linear .
Um exemplo seria um mapa de Kohonen . Uma boa referência para R é "Mapas auto e superorganizados em R: o pacote kohonen" .
fonte
Minha primeira resposta seria que, se você puder fazer uma regressão multivariada nos dados, use os resíduos dessa regressão para identificar valores extremos. (Eu sei que você disse que não é um problema de regressão, então isso pode não ajudá-lo, desculpe!)
Estou copiando parte disso de uma pergunta do Stackoverflow que respondi anteriormente, que tem algum código R de exemplo
Primeiro, criaremos alguns dados e depois os mancharemos com um valor externo;
Muitas vezes, é mais útil examinar os dados graficamente (seu cérebro é muito melhor em detectar valores extremos do que a matemática)
Em seguida, você pode usar estatísticas para calcular valores críticos de corte, aqui usando o Teste de Lund (consulte Lund, RE 1975, "Tabelas para um teste aproximado de outliers em modelos lineares", Technometrics, vol. 17, no. 4, pp. 473 -476. E Prescott, P. 1975, "Um teste aproximado para outliers em modelos lineares", Technometrics, vol. 17, no. 1, pp. 129-132.)
Obviamente, existem outros testes extremos que não o teste de Lund (Grubbs vem à mente), mas não tenho certeza de quais são mais adequados para dados multivariados.
fonte
vw-top-errors
@ goo.gl/l7SLlB (observe que os exemplos ali têm um Y, mas eu usei a mesma técnica, com muito sucesso também em problemas não supervisionados, corrigindo Y.)Uma das respostas acima mencionadas nas distâncias de mahalanobis ... talvez mais um passo adiante e calcular intervalos de confiança simultâneos ajudaria a detectar valores extremos!
fonte