Detecção de mudança de etapa

8

Estou usando um método de mínimos quadrados não linear para ajustar uma função analítica a alguns dados experimentais. Eu tenho que fornecer alguns valores iniciais de adivinhação para o algoritmo, então estou tentando descobrir como fazer isso automaticamente (em vez de a olho nu, que é o que tenho feito).

Estes são alguns dados simulados, criados pela adição de ruído aleatório normalmente distribuído à função analítica

Estes são alguns dados simulados, criados pela adição de ruído aleatório normalmente distribuído à função analítica

Estou tentando detectar com segurança a posição dessa alteração nos dados. Eu tive algum sucesso limitado calculando a variação média nos pontos de dados e procurando pontos nos dados que diferem significativamente desse valor, mas essa abordagem parece muito limitada pela relação sinal / ruído.

Espero alguma orientação sobre o que preciso analisar para resolver meu problema, pois não conheço muita estatística.

Obrigado!

-Editar colar bin bin para dados xy

http://pastebin.com/QTawFex3

jm22b
fonte
Talvez seja útil considerar técnicas de detecção de ponto de mudança. A segmentação binária circular pode ser exatamente o que você precisa.
Mur1lo
Chen e Liu 1993 descrevem um método de detecção de mudança de nível em uma série temporal. Seu algoritmo é implementado no pacote tsoutliers R.
Pionpi_
11
Uma nova e poderosa técnica de detecção de mudanças é a saturação indicador de impulso e saturação passo indicador nas obras de Castelo, Doornik, Hendry & Co. (Google essas palavras-chave para encontrar mais.)
Richard Hardy
A melhor resposta que pude encontrar sobre isso está lá, funciona muito bem no meu caso e, olhando para seus dados, também deve funcionar. stackoverflow.com/questions/48000663/…
francois-xavier sireta 4/04

Respostas:

3

Pode haver alguns métodos mais sofisticados para isso, mas aqui está o meu primeiro pensamento.

Você basicamente quer pegar a derivada da função e descobrir onde ela é a maior. Numericamente, você pode simplesmente pegar a diferença entre pontos de dados e descobrir quais dois pontos têm a maior diferença. Então o ponto médio dos valores x para esses dois pontos é a sua localização de maior alteração.

Este método simples é suscetível ao ruído. Portanto, você pode primeiro filtrar os dados usando um filtro que não os desloque para a direita ou esquerda. Se você usar um filtro FIR simples, filtre de frente para trás e depois filtre o resultado de trás para frente. O resultado é um conjunto de dados duplamente filtrado e NÃO alterado. Siga o procedimento acima para encontrar o ponto com a maior diferença entre os valores.

Você também pode usar cálculos diferenciais numéricos mais sofisticados que usam mais que a diferença de dois pontos.

Jason
fonte
Obrigado pela resposta. Fiquei desconectado do fato de que eram dados discretos e não pensei em diferenciá-los! Eu vou olhar para usar o filtro FIR em alguns dos meus picos menores, para ver se isso funciona
jm22b
11
Eu implementei sua ideia e ela funciona como um encanto, muito obrigado!
precisa saber é
Isso é ótimo de ouvir. Obrigado por me avisar.
jason
4

Seus dados sugerem visualmente uma alteração assintótica (gradual) para o novo nível. Os métodos de séries temporais costumam ser usados ​​para detectar esses tipos de estruturas, mesmo que os dados não sejam séries temporais. Poste seus dados e talvez eu possa demonstrar isso com "brinquedos" à minha disposição. Se os seus dados são séries temporais, como o @jason refletiu, é necessário lidar efetivamente com o modelo de ruído para "ver" corretamente a estrutura.

EDITADO NO RECIBO DE DADOS:

A modelagem geralmente é uma abordagem iterativa, com etapas intermediárias que fornecem pistas valiosas para um modelo útil. Peguei seus dados e os introduzi na AUTOBOX (um dos meus brinquedos que ajudei a desenvolver). Um gráfico inicial insira a descrição da imagem aquisugeria fortemente um conjunto de dados longitudinal (cronológico) onde a série X é reportada em intervalos fixos. A AUTOBOX sugeriu automaticamente um modelo ARIMA padrão (com detecção de intervenção) substituindo o X não estacionário por um operador diferenciado. Aqui está o gráfico real / ajustado / previsto e o modelo sugerido.insira a descrição da imagem aqui insira a descrição da imagem aqui

Após a análise, outro modelo possível incorporando uma estrutura de defasagem para uma variável indicadora se sugeriu. Introduzi um Pulse no período de tempo 76 (um Dynamic Predictor permitindo expressamente até um possível efeito de atraso de 50 períodos) (o início da transição) para lidar com o relacionamento entre o Y original e o X sugerido pelo usuário para obter mais investigar completamente o efeito de X do que aceitar a retirada total de X.

A seguir, é apresentado o insira a descrição da imagem aquigráfico de previsão de ajuste real para essa abordagem e o modelo robusto de função de transferência identificado. insira a descrição da imagem aquicom plotagem insira a descrição da imagem aquiresidual e ACF residual aquiinsira a descrição da imagem aqui

O modelo final captura a dinâmica em certos atrasos do Dynamic Predictor e alguns pulsos e uma estrutura de memória razoável.

Mesmo os pacotes de análise mais poderosos geralmente precisam de alguma orientação ao lidar com conjuntos de dados complexos do mundo real como este, pois nada se compara à mente humana criativa.

IrishStat
fonte
Estou curioso ... 1) Qual foi a sua função analítica e 2) qual foi a variação da série de erros (seu ruído aleatório normalmente distribuído): Entrega da AUTOBOX: Variação = SOS / (n) .402675E-04 Variação ajustada = SOS / (nm) .443625E-04 Desvio padrão RMSE = SQRT (Adj Var) .666052E-02
IrishStat
Minha função analítica é Onde, são parâmetros a serem ajustados A imagem do gráfico no meu post original era simplesmente essa função + normalmente distribuída ruído aleatório com um stdev de 0,1 (eu acho). Os dados que eu compartilhei com você eram dados reais e não tenho a menor idéia de quais são as propriedades! T(λ)=C1+C2[erfc(λ0λ2σ)Exp(λ0λτ+σ22τ2)erfc(λ0λ2σ+σ2τ)]C1,C2,λ0,σ,τ
Jm22b
3

Uma técnica é testar todos os valores da variável x para o desvio padrão dos dados antes e depois deles. Para uma verdadeira função de passo, a soma desses dois será mínima no local do passo e o mínimo deve ser um bom parâmetro inicial para sua função não linear.

Aqui está um gráfico dos seus dados originais (preto), o desvio padrão antes de x (azul), depois de x (vermelho) e a soma dos dois últimos (verde).

insira a descrição da imagem aqui

xan
fonte
2

Reconheço que esta questão é antiga. Mas eu queria lançar outro método lá fora. Canny escreveu um artigo (Uma abordagem computacional para detecção de bordas), onde ele resolveu esse problema no caso bidimensional de detecção de bordas em imagens. Você pode ler o jornal, se quiser, mas, para ir direto ao ponto, pode obter uma aproximação muito boa ao ponto de mudança, fazendo o seguinte:

  1. Realize a convolução do seu sinal com a derivada do gaussiano.

f(x)=xχ2ex2σ2

onde é um fator de escala.χ

  1. O pico da resposta é onde o ponto de mudança ocorre.

insira a descrição da imagem aqui

Na minha experiência com esse método, descobri que é difícil escolher os parâmetros de dimensionamento corretos. Mas pode haver mais trabalho sobre isso que eu não estou ciente.

Resumi o artigo de Canny e forneci um exemplo aqui .

dt688
fonte
Olá, agradeço a resposta e o método interessante apresentado. Postagem interessante no blog também! O projeto que gerou essa pergunta envolveu algum processamento de imagem, então eu tinha lido um pouco sobre a detecção inteligente de bordas.
Jm22b
0

Você pode investigar séries temporais transformadas da Wavelet usando tipos de período curto haar / db4 . Não tenho ponteiros, mas apenas alguns termos de pesquisa, tente 'detecção de ponto de alteração wavelet'.

Existem vários pacotes R no Wavelets, consulte a exibição de tarefas de séries temporais: https://cran.r-project.org/web/views/TimeSeries.html

Veja aqui um exemplo: http://it.mathworks.com/help/wavelet/examples/detecting-discontinuities-and-breakdown-points.html?requestedDomain=www.mathworks.com

Para a teoria, procure o artigo de Mallat et Hwang: "Detecção e processamento de singularidade com wavelets"

Veja a resposta relacionada: Aplicação de wavelets a algoritmos de detecção de anomalias baseados em séries temporais

hute37
fonte