Como ajustar um modelo para uma série temporal que contém valores discrepantes

9

Eu ajustei o modelo ARIMA (5,1,2) usando a auto.arima()função em R e, observando a ordem, podemos dizer que este não é o melhor modelo para prever. Se existirem outliers na série de dados, qual é o método para ajustar um modelo a esses dados?

Anthony
fonte
Você tem algum dado / teoria sobre quais pontos são discrepantes? Você não pode simplesmente assumir que pontos "distantes" são discrepantes, mas se você sabe que algo especial aconteceu em uma data específica e que esse evento afetaria seus dados, você pode adicionar uma variável de indicador ao seu modelo para essa data. Veja o comentário de IrishStat, abaixo.
Wayne
Se algo especial aconteceu em 1 ou 2 semanas nesse período e isso afeta o modelo, o modelo pode estar incorreto. Como não há outro motivo como a variação sazonal, presumi que os outliers sejam a causa que afeta o modelo.
18712 Anthony

Respostas:

7

Michael Chernick aponta você na direção certa. Eu também consideraria o trabalho de Ruey Tsay como aquele adicionado a esse conjunto de conhecimentos. Veja mais aqui .

Você não pode competir contra os algoritmos automatizados de computador de hoje. Eles examinam várias maneiras de abordar as séries cronológicas que você não considerou e nem sempre documentou em nenhum artigo ou livro. Quando alguém pergunta como fazer uma ANOVA, pode-se esperar uma resposta precisa ao comparar com diferentes algoritmos. Quando alguém faz a pergunta: como faço para reconhecer padrões, muitas respostas são possíveis à medida que a heurística está envolvida. Sua pergunta envolve o uso de heurísticas.

A melhor maneira de ajustar um modelo ARIMA, se existirem discrepâncias nos dados, é avaliar possíveis estados da natureza e selecionar a abordagem que é considerada ideal para um conjunto de dados específico. Um possível estado da natureza é que o processo ARIMA é a principal fonte de variação explicada. Nesse caso, seria possível "identificar provisoriamente" o processo ARIMA por meio da função acf / pacf e, em seguida, examinar os resíduos quanto a possíveis discrepâncias. Os valores discrepantes podem ser pulsos, ou seja, eventos únicos OU pulsos sazonais que são evidenciados por valores discrepantes sistemáticos com alguma frequência (por exemplo, 12 para dados mensais). Um terceiro tipo de outlier é o local onde se tem um conjunto contíguo de pulsos, cada um com o mesmo sinal e magnitude, a que se chama mudança de nível ou passo. Depois de examinar os resíduos do processo experimental ARIMA, pode-se adicionar, provisoriamente, a estrutura determinística empiricamente identificada para criar um modelo combinado experimental. Nem se a fonte primária de variação for um dos 4 tipos ou "outliers", seria melhor identificá-los ab initio (primeiro) e depois usar os resíduos desse "modelo de regressão" para identificar a estrutura estocástica (ARIMA) . Agora, essas duas estratégias alternativas ficam um pouco mais complicadas quando se tem um "problema" em que os parâmetros do ARIMA mudam ao longo do tempo ou a variação do erro muda ao longo do tempo devido a várias causas possíveis, possivelmente a necessidade de mínimos quadrados ponderados ou uma transformação de energia como registros / recíprocos, etc. Outra complicação / oportunidade é como e quando formar a contribuição das séries de preditores sugeridas pelo usuário para formar um modelo perfeitamente integrado que incorpore memória, causais e séries fictícias identificadas empiricamente. Esse problema é agravado ainda mais quando se tem uma série de tendências melhor modelada com séries de indicadores do formulário, Ou 1 , 2 , 3 , 4 , 5 , . . . ne combinações de séries de deslocamento de nível como 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 10 0,0 0,0 0,0 0,1 1,2,3,4,...1 1,2,3,4,5,...n0 0,0 0,0 0,0 0,0 0,0 0,1 1,1 1,1 1,1 1,1 1. Você pode tentar escrever esses procedimentos em R, mas a vida é curta. Ficaria feliz em resolver o seu problema e demonstrar neste caso como o procedimento funciona, publique os dados ou envie para [email protected]


Comentário adicional após o recebimento / análise dos dados / dados diários para uma taxa de câmbio / 18 = 765 valores a partir de 1/1/2007

insira a descrição da imagem aqui

Os dados tiveram um resultado de:

insira a descrição da imagem aqui

Ao identificar um modelo de arma da forma e vários valores discrepantes, o ACF dos resíduos indica aleatoriedade, pois os valores de ACF são muito pequenos. A AUTOBOX identificou vários outliers:(1 1,1 1,0 0)(0 0,0 0,0 0)

insira a descrição da imagem aqui

O modelo final:

insira a descrição da imagem aqui

incluiu a necessidade de um aumento da estabilização da variância à la TSAY, onde mudanças de variação nos resíduos foram identificadas e incorporadas. O problema que você teve com sua execução automática foi que o procedimento que você estava usando, como um contador, acredita nos dados em vez de desafiá-los por meio da Detecção de intervenção (também conhecida como Detecção de outlier). Publiquei uma análise completa aqui .

insira a descrição da imagem aqui

IrishStat
fonte
@IrishStat: No futuro, você pode usar as opções de formatação? (a tecla correta para inserir links é ctrl-l, não ctrl-c).
user603
@ user603 Simplesmente utilizei a opção Adicionar um gráfico. Não sei o que você quer dizer com ctrl-l ou cntrl-c. Talvez você possa me ajudar, por favor entre em contato em dave / @ / autobox.com e talvez você possa caminhar / conversar comigo sobre isso.
IrishStat
@IrishStat: dê uma olhada aqui .
user603
@ user603 OK, mas ainda não sei o que você quer dizer com ctrl-l e cntrl-c. Eu estava usando a transferência de imagens onde sou capaz de inserir uma imagem. Se eu digitar cntrl-g, recebo uma tela pop-up em branco.
IrishStat
@IrishStat: está tudo bem - o método do link é ainda melhor que ctrl-l :). PS: meu objetivo era ajudá-lo a tornar suas respostas / comentários mais atraentes, cosmeticamente, ocultando esses longos links que cortam o fluxo do texto. O link explica como conseguir isso.
user603
6

Não existe uma contraparte robusta pronta para usar a função arima em R (ainda) ; Se aparecer, ele será listado aqui . Talvez uma alternativa seja diminuir o peso dessas observações que são distantes em relação a uma regra simples de detecção de outlier univariada, mas também não estou pronto para usar pacotes para executar a regressão ARMA ponderada. Outra alternativa possível seria Winsorize os pontos mais afastados:

#parameters
para     <- list(ar=c(0.6,-0.48), ma=c(-0.22,0.24))
#original series
y1 <- y0 <- arima.sim(n=100, para, sd=sqrt(0.1796)) 
#outliers
out      <- sample(1:100, 20)               
#contaminated series
y1[out]  <- rnorm(20, 10, 1)                
plot( y1, type="l")
lines(y0, col="red")

exemplo de contaminação aleatória

#winsorized series
y2      <- rep(NA, length(y1))
a1      <- (y1-median(y1)) / mad(y1)
a2      <- which(abs(a1)>3)
y2[-a2] <- y1[-a2]
for(i in 2:length(y2)){
   if(is.na(y2[i])){ y2[i] <- y2[i-1] }
}       

série limpa

user603
fonte
Um procedimento baseado em regras funciona para esta série, mas a análise de dados de séries temporais por quase 42 anos pode não funcionar em geral. Considere uma série simples que possua um processo de projeção automática, por exemplo1,9,1,9,1,9,5,9 1,9,1,9 onde o sétimo valor é excepcional OU, em geral, uma série que possui uma forte estrutura autoprojetiva de alguma forma desconhecida OU uma série que possui 1,2,1,1,1,2,1,1,1, 2,1,20,1,2,1,2,1,1,1,2,1,2,2,19,2,1,1,2,1,2,1,1,2,2, 2,21 uma série mensal que não possui pulsos, mas possui um manequim sazonal não especificado. Detectar 12,24 e 36 como MAU jogaria fora o bebê com a água do banho.
IrishStat
Tudo o que você diz é verdade, ou seja, você estava fornecendo um curativo que ajudaria na ferida se 1) a série fosse estacionária, assumindo, entre outras coisas, nenhuma mudança de nível, tendências e outros, estrutura ARIMA; e 2) a série deve ser não sazonal ou ter sido descentralizada anteriormente; . É minha experiência que essas suposições dificilmente se sustentam e os usuários ignoram suas advertências enquanto tentam lutar com séries temporais que apresentam "imperfeições". Meus comentários aqui não são destinadas a ser argumentativo, mas sim esclarecedora (para alguns!)
IrishStat
@IrishStat, o OP atualizou sua pergunta e afirmou que não há sazonalidade.
user603
Você é Christophe?
IrishStat
2

Existe uma literatura considerável sobre modelos robustos de séries temporais. Martin e Yohai estão entre os principais colaboradores. Seu trabalho remonta à década de 1980. Eu próprio trabalhei na detecção de outliers em séries temporais, mas Martin foi realmente um dos muitos contribuidores para a detecção de outliers e estimativa de parâmetros na presença de outliers ou resíduos de cauda pesada em séries temporais.

  • Aqui está um link para um artigo de pesquisa sobre o tópico com uma lista de mais de 100 referências. Inclusive inclui meu artigo de 1982 da JASA.
  • Aqui está uma tese de doutorado de 2000 (pdf) que aborda a teoria, métodos e aplicações de análise robusta de séries temporais e inclui uma boa bibliografia.
  • Aqui está um link sobre o software que inclui algumas ferramentas robustas de séries temporais.
Michael R. Chernick
fonte
Qual é o software usado para a previsão robusta? É adequado para séries univariadas?
22712 Anthony
@ Anthony Essa é uma pergunta muito boa. Não fiz nenhuma modelagem robusta de séries temporais. Martin fundou a empresa chamada Insightful (que na verdade tinham vários nomes) que comercializava a SPlus. Tenho certeza de que ele incluiu metídicos robustos no software SPlus. Provavelmente agora existe uma versão em R., vou verificar. Aqui está um artigo da Wikipedia, incluindo a história do SPlus. en.wikipedia.org/wiki/S-PLUS
Michael R. Chernick
@ Anthony Aqui está uma fonte fornecida por Rob Hyndman sobre o que está disponível no R na análise de séries temporais. Inclui o conteúdo do CRAN e abrange uma ampla variedade de métodos, incluindo filtragem robusta. cran.r-project.org/web/views/TimeSeries.html
Michael R. Chernick
2

Qual é o objetivo do seu modelo para prever ou analisar o histórico? se isso não é para previsão, e você sabe que esses são os valores discrepantes, basta adicionar a variável dummy, que é 1 nessas datas e 0 nas outras datas. dessa maneira, os coeficientes fictícios cuidarão dos valores extremos e você poderá interpretar os outros coeficientes no modelo.

se isso é para previsão, é preciso fazer duas perguntas a si mesmo: esses valores extremos acontecerão novamente? se eles precisassem, eu tenho que dar conta deles?

Por exemplo, digamos que sua série de dados tenha discrepâncias quando os irmãos Lehman caíram. é um evento que você não tem como prever, obviamente, mas não pode simplesmente ignorá-lo, porque algo assim está prestes a acontecer no futuro. se você lançar o manequim para outliers, removerá efetivamente a incerteza desse evento da variação de erro. sua previsão subestima o risco final - talvez não seja uma boa coisa para o gerenciamento de riscos. no entanto, se você deseja produzir a previsão de linha de base das vendas, o manequim funcionará, porque você não está interessado na cauda, ​​está interessado nos cenários mais prováveis ​​- para que não precise prestar contas do evento imprevisível de este propósito.

Portanto, o objetivo do seu modelo afeta a maneira como você lida com discrepantes.

Aksakal
fonte