Estou tentando automatizar a detecção de outlier em séries temporais e usei uma modificação da solução proposta por Rob Hyndman aqui .
Digamos, eu avalio as visitas diárias a um site de vários países. Para alguns países onde as visitas diárias são de algumas centenas ou milhares, meu método parece estar funcionando razoavelmente.
No entanto, nos casos em que um país leva a apenas 1 ou 2 visitas por dia, os limites do algoritmo são muito estreitos (por exemplo, 1 ± 0,001) e, portanto, as 2 visitas são consideradas um desvio. Como eu pude detectar automaticamente tais casos e como eu os tratei para identificar discrepâncias? Eu não gostaria de definir um limite manual de, digamos, 100 visitas por dia.
Obrigado!
time-series
outliers
computational-statistics
Stergios
fonte
fonte
Respostas:
Não espere muito por contagens pequenas e discretas. Passar de 1 para 2 visitas é um aumento de 100%, e passar de 0 para 1 visitas é um aumento infinito. Em níveis baixos, você pode estar lidando com modelos inflados a zero , e também pode ser muito barulhento lá em baixo.
Na minha experiência, contar dados com uma mistura de contagens grandes e pequenas como esta resulta em dois problemas com suas contagens pequenas: 1) eles são muito grosseiros para fazer muito com, 2) são gerados por processos diferentes. (Pense nos pequenos correios rurais versus os correios das grandes cidades). Portanto, você precisa pelo menos dividir sua modelagem em duas: faça o que está fazendo com sucesso para contagens maiores e faça algo diferente - mais grosseiro e aproximado - com contagens pequenas. Mas não espere muito das pequenas contagens.
A boa notícia é que as grandes contagens, por definição, incluem mais transações, portanto seu modelo melhor cobre mais dados, mesmo que não abranja a maioria dos sites.
(Eu digo que "modelagem" é geral, mas é claro que a detecção mais externa está assumindo um modelo específico e encontrando pontos altamente improváveis com as suposições desse modelo.)
fonte
Cada valor de sua série temporal é uma amostra de uma distribuição de probabilidade. Você precisa primeiro descobrir qual é a distribuição de probabilidade e depois definir o que a palavra raro significa nessa distribuição.
Portanto, calcule o cdf empírico e o intervalo de confiança de 95%. Sempre que algo fora dessa região ocorreu, por definição, você sabe que deve ser um evento raro.
fonte
Uma coisa é detectar um Outlier em um nível específico de confiança e outra é colocar uma segunda especificação que restringiria ainda mais a aceitação do outlier. Uma vez me fizeram a seguinte pergunta "O AUTOBOX pode detectar uma mudança média de unidades xx em um nível de confiança pré-especificado". Essencialmente, o que era necessário era um teste duplo. O AUTOBOX é um software que eu ajudei a desenvolver e que pode ser econômico, pois nenhum software livre implementou esse teste duplo.
Obrigado Nick: Eu estava usando uma mudança de nível como um exemplo particular de um "outlier" ou, em geral, o impacto determinístico empiricamente identificado. Outras formas de "outliers" são Pulsos, Pulsos Sazonais e Tendências da Hora Local E combinações específicas, como uma mudança transitória para um novo nível. O ponto principal foi que podem existir duas hipóteses que refletem a significância estatística e a significância do mundo real. O cliente que originalmente trouxe esse problema à minha atenção estava interessado em ambos.
fonte
Você está tendo esse problema porque seus dados estão longe de uma distribuição normal. Se a distribuição for altamente assimétrica, com solavancos, corcéis ou caudas muito longas / curtas, você encontrará problemas. Uma boa idéia é aplicar uma transformação como Box Cox ou Yeo-Johnson antes de usar seu método. No seu exemplo, se você usar F (x) = log (1 + x), evita o problema de magnitude diferente e pode converter novamente usando: exp (z) -1
Existem vários procedimentos que você pode usar para encontrar automaticamente um bom lambda para a transformação Box-Cox. Pessoalmente, uso a mediana de todos os métodos da função boxcoxnc do pacote AID em R. Se seus dados não são estritamente positivos, você precisará adicionar 1 ou outro número positivo antes de usá-los.
fonte