Como caracterizar uma mudança abrupta?

13

Esta pergunta pode ser muito básica. Para uma tendência temporal de dados, eu gostaria de descobrir o ponto em que mudanças "abruptas" acontecem. Por exemplo, na primeira figura mostrada abaixo, eu gostaria de descobrir o ponto de mudança usando algum método estatístico. E eu gostaria de aplicar esse método em alguns outros dados cujos pontos de mudança não são óbvios (como na segunda figura). Então, existe um método comum para esse fim?

insira a descrição da imagem aqui

insira a descrição da imagem aqui

user2230101
fonte
2
o termo "ponto de virada" tem um significado particular que acho que não se aplica a uma mudança repentina de nível (para cima ou para baixo). Você também usa a frase 'ponto de mudança', e acho que essa é provavelmente uma escolha melhor. Por favor, não pense que isso é "muito básico"; até perguntas básicas são bem-vindas, sem necessidade de desculpas, e essa pergunta não é remotamente básica.
Glen_b -Reinstate Monica
Obrigado. Mudei o 'ponto de virada' para 'ponto de mudança' na pergunta.
user2230101

Respostas:

11

Se as observações de seus dados de séries temporais estiverem correlacionadas com as observações imediatamente anteriores, o artigo de Chen e Liu (1993) pode lhe interessar. Ele descreve um método para detectar mudanças de nível e mudanças temporárias na estrutura de modelos de séries temporais de média móvel autorregressivas.[1]

[1]: Chen, C. e Liu, LM. (1993),
"Estimativa conjunta de parâmetros de modelo e efeitos extremos em séries temporais",
Journal of the American Statistical Association , 88 : 421, 284-297.

javlacalle
fonte
+1 Eu estava tentando (mas falhando) lembrar o suficiente sobre este documento para localizá-lo. É uma boa referência.
Glen_b -Reinstala Monica
6

Esse problema no Stats é chamado de detecção de eventos temporais (univariada). A idéia mais simples é usar uma média móvel e desvio padrão. Qualquer leitura que esteja "fora de" três desvios padrão (regra geral) é considerada um "evento". Obviamente, existem modelos mais avançados que usam HMMs, ou Regression. Aqui está uma visão geral introdutória do campo .

user1669710
fonte
5
Esta é a única publicação acessível ao público em toda a Web a incluir a frase "Detecção Temporal de Eventos Univariada"! Qual é a sua fonte para este termo?
whuber
Desculpe se foi confuso. Detecção de eventos é um termo mais comum e Temporal às vezes é usado separadamente. Univariado não é comumente usado, pois as abordagens geralmente são multivariadas, mas é seu caso especial.
user1669710
1
editou a resposta para incorporar o seu comentário @whuber
user1669710 22/09
@ ser1669710 Obrigado. É isso que estou procurando. Parece que a média móvel não pode resolver o meu problema. Eu preciso olhar para o modelo mais complicado.
User2230101
Gostaria de saber mais sobre essa detecção de eventos temporais. Os slides que você postou são legais, mas eu queria saber se você tem o link para um artigo de revisão que descreva o campo um pouco mais formalmente?
aaragon
1

Aqui está uma maneira rápida e fácil de fazer isso. Crie funções de salto como esta: para pontos de corte de candidatos . Agora use a regressão passo a passo para selecionar o melhor modelo com o como possíveis preditores. No seu primeiro exemplo, supondo que você selecione dois preditores, você receberá um para com um coeficiente positivo igual ao tamanho do salto para cima e outro para com um coeficiente negativo igual ao tamanho de o salto para baixo. Você precisa decidir com que precisão deseja dividir os tempos de salto do candidato, x 1 < x 2 < < x m J i J a p r i l J d e c e m b e r x i

Ji={0x<xi1xxi
x1<x2<<xmJiJaprilJdecemberxipor exemplo, um por mês, um por quinzena, um por semana, um por dia.

Existem soluções mais elegantes e exatas que envolvem regressão não linear, em que você usa um modelo com e e estima e como parâmetros. É um pouco confuso de configurar.J 2 x 1 x 2J1J2x1x2

Russ Lenth
fonte
1
PS - @ user1669710 e eu postei respostas simultaneamente. Votei nesse porque é obviamente melhor pesquisado. Mas estou deixando isso aqui, pois é uma alternativa que funciona e é fácil de implementar.
Russ Lenth
1
Como ele usa regressão gradual e emprega muitas variáveis ​​candidatas, esse procedimento parece suspeito. Onde foi estudado e que propriedades possui? Como ele se compara a outros métodos de ponto de mudança ?
whuber
@ Whuber, meu ponto exatamente. Por isso votei na outra resposta. Não será muito favorável se você tiver um conjunto muito granular de valores de ponto de mudança. E pode até não comparar isso favoravelmente. Estou apenas colocando isso como um método ad hoc e acho que o apresentei como tal. Mas acho que um método como esse promete ser uma boa maneira de obter valores iniciais para o método não linear.
Russ Lenth
A ideia é subjacente a alguns dos métodos mais eficazes de ponto de mudança que encontrei, mas o uso de regressão por etapas em particular me faz suspeitar (embora não tenha certeza) que esse método pode falhar até em produzir pontos de partida razoáveis ​​para outros métodos melhorarem. Por isso, estou curioso para saber se foi estudado.
whuber
Acho que haveria poucos problemas com a seleção de todos os subconjuntos, desde que realmente houvesse um número especificado de saltos (digamos dois), pois encontraríamos os dois saltos que melhor explicariam os dados. Outros métodos de seleção podem ser problemáticos, assim como em outras situações. Eu acho que depende de quão importante é obter a melhor resposta, versus uma boa resposta, versus uma resposta rápida. Nem todos os problemas são iguais, nem todos os clientes. A melhor resposta do mundo é um fracasso total, se você não conseguir explicar.
Russ Lenth
1

Há um problema relacionado de dividir uma série ou sequência em feitiços com valores idealmente constantes. Consulte Como agrupar dados numéricos em "colchetes" naturais? (por exemplo, renda)

Não é exatamente o mesmo problema, pois a pergunta não exclui feitiços com desvio lento em uma ou todas as direções, mas sem mudanças bruscas.

Uma resposta mais direta é dizer que estamos procurando grandes saltos; portanto, a única questão real é definir o salto. A primeira idéia é apenas observar as primeiras diferenças entre os valores vizinhos. Não está nem claro que você precisa refinar que, removendo o ruído primeiro, como se os saltos não pudessem ser distinguidos das diferenças de ruído, eles certamente não poderiam ser abruptos. Por outro lado, o interlocutor evidentemente deseja que mudanças bruscas incluam mudanças rampas e escalonadas, de modo que alguns critérios como variação ou alcance dentro de janelas de comprimento fixo parecem necessários.

Nick Cox
fonte
1

A área de estatística que você está procurando é a análise de ponto de mudança. Existe um site aqui que lhe dará uma visão geral da área e também uma página para o software.

Se você é um Rusuário, eu recomendaria o changepointpacote para alterações na média e o strucchangepacote para alterações na regressão. Se você quer ser bayesiano, o bcppacote também é bom.

Em geral, você deve escolher um limite que indique a força das alterações que está procurando. Obviamente, existem opções de limiares que as pessoas defendem em determinadas situações e você pode usar níveis de confiança assintóticos ou inicialização para obter confiança também.

adunaico
fonte
1
O OP identificou dois exemplos, um dos quais eu chamaria de passo e o outro de rampa, embora sempre exista espaço para discussões sobre palavras. Veja também minha resposta aqui. Como esses métodos lidam com rampas? Eles têm um modelo tácito ou explícito de mudança gradual?
Nick Cox
Obrigado pela pergunta Nick. Geralmente depende de quanto tempo a rampa é. Se for uma rampa curta, será tratada como 1 mudança; se a rampa for mais longa, geralmente os métodos do ponto de mudança identificarão 2 mudanças, 1 no início da rampa e 1 no final. Obviamente, isso depende do modelo subjacente que você assume.
adunaico
1

Esse problema de inferência possui muitos nomes, incluindo pontos de mudança, pontos de comutação, pontos de interrupção, regressão de linha quebrada, regressão de stick quebrado, regressão bilinear, regressão linear por partes, regressão linear local, regressão linear local, regressão segmentada e modelos de descontinuidade.

Aqui está uma visão geral dos pacotes de pontos de mudança com prós / contras e exemplos trabalhados. Se você souber o número de pontos de mudança a priori, confira o mcppacote. Primeiro, vamos simular os dados:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

Para o seu primeiro problema, são três segmentos somente de interceptação:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

Podemos traçar o ajuste resultante:

plot(fit)

insira a descrição da imagem aqui

Aqui, os pontos de mudança são muito bem definidos (estreitos). Vamos resumir o ajuste para ver seus locais inferidos ( cp_1e cp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

Você pode criar modelos muito mais complicados mcp, incluindo a modelagem de regressão automática de n-ordem (útil para séries temporais), etc. Isenção de responsabilidade: Eu sou o desenvolvedor do mcp.

Jonas Lindeløv
fonte