Melhor algoritmo para classificação de dados de motores de séries temporais

9

Estou trabalhando em um projeto de controle de máquina. Podemos medir a corrente do motor durante a operação. Os dados de amostra de dois motores que executam uma operação com sucesso estão abaixo. O traço vermelho mostra a corrente de um motor, o azul traça a corrente de outro. Eu gostaria de tentar criar um algoritmo para identificar problemas com o comportamento da máquina. Os problemas podem ser uma corrente do motor excessivamente alta, quase zero, aumento da corrente no final da operação, uma série temporal mais curta que o normal, qualquer coisa em geral que não pareça uma operação típica abaixo. Alguém pode sugerir um bom algoritmo para conseguir isso? A única com quem estou familiarizada é uma rede neural. Coloquei um arquivo do Excel com dados reais nas correntes do motor

Correntes do motor - bom funcionamento Correntes do motor - congestionamento no final da operação

bassê fred
fonte
Provavelmente mais apropriado para o site de estatísticas SE, pois isso envolve detecção de anomalias e modelagem estatística de uma série temporal. A análise de sobrevivência pode desempenhar um papel, embora não esteja claro a partir da pergunta.
Iterator
Você poderia postar uma imagem de um "problema"? Uma idéia seria calcular a distância entre uma "operação ideal" (como a linha vermelha) e a "operação real" (a linha azul). Se algum ponto estiver muito longe da "operação ideal", sinalize-o como um problema.
Zach
11
+1 Essa é uma ideia-chave: use o conhecimento específico do aplicativo para caracterizar o comportamento. Será muito mais pertinente e poderoso do que qualquer técnica puramente estatística possa ser. As estatísticas podem oferecer maneiras de comparar os dados com a "linha de base" ou a série ideal.
whuber
Essa ideia de usar um ideal teórico ou pode ser facilmente incorporada como uma série de suporte preditivo / causa / lado direito em um modelo de Função de Transferência, que produzirá as informações de detecção de ponto de mudança que descrevi na minha resposta.
precisa saber é o seguinte
@Irish Acho que não é assim tão simples. Há um formato característico no consumo atual: um pico rápido inicial, um declínio mais lento (exponencial?), Uma região longa (esperançosamente) de corrente estável, seguida pela queda final (que assume um formato característico) no final . Os detalhes variam, mas é fundamental distinguir variação normal de variação "ruim". Preocupam-se coisas como a altura relativa do pico inicial e o tempo necessário para estabilizar. Lembre-se, o objetivo é identificar problemas e alguns deles podem ser mais sutis do que as análises padrão mostrarão.
whuber

Respostas:

4

Minha abordagem é formar um modelo ARIMA para os dados e, em seguida, empregar vários "esquemas de detecção de ponto de mudança" para fornecer um aviso antecipado sobre "coisas" inesperadas. Esses esquemas incluiriam

  1. detectar a presença / início de pulsos / mudanças de nível / tendências de hora local, ou seja, alterações na média dos erros ao longo do tempo
  2. detectar a presença / início de alterações nos parâmetros ao longo do tempo
  3. detectar a presença / início de alterações na variação dos resíduos ao longo do tempo

Se você deseja realmente publicar uma de suas séries, poderíamos mostrar esse tipo de análise que pode "empurrar" a ideia de que as coisas estão mudando ou mudaram significativamente.

IrishStat
fonte
3

Hidden Markov Model

Uma das melhores abordagens para a modelagem de dados de séries temporais é o Hidden Markov Model (HMM). Você pode criar um único modelo do seu estado não problemático conhecido, separar modelos de cada um dos seus problemas conhecidos ou, se você tiver dados suficientes, um único modelo composto de todos os seus problemas conhecidos. Uma boa biblioteca de código-fonte aberto é a Hidden Markov Model Toolbox for Matlab.

http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html

Kalman Filter

Outra abordagem um pouco mais envolvida é o Kalman Filter. Essa abordagem é especialmente útil se seus dados apresentarem muito ruído. Uma boa biblioteca de código aberto é a Kalman Filter Toolbox for Matlab.

http://www.cs.ubc.ca/~murphyk/Software/Kalman/kalman.html

Modelos Bayesianos

Ambas as abordagens são consideradas modelos bayesianos. Uma boa biblioteca de código aberto é a Bayes Net Toolbox for Matlab.

http://code.google.com/p/bnt

Espero que isso funcione pra você.


fonte