Eu tenho muitos dados de séries temporais - níveis e velocidades da água versus tempo. É a saída de uma simulação de modelo hidráulico. Como parte do processo de revisão para confirmar que o modelo está executando como esperado, tenho que plotar cada série temporal para garantir que não haja "oscilações" nos dados (veja o exemplo de oscilação menor abaixo). Usar a interface do usuário do software de modelagem é uma maneira bastante lenta e trabalhosa de verificar esses dados. Portanto, escrevi uma macro VBA curta para importar vários bits de dados do modelo, incluindo resultados para o Excel e plotar todos de uma vez. Espero escrever outra macro VBA curta para analisar os dados da série temporal e destacar as seções suspeitas.
Meu único pensamento até agora é que eu poderia fazer algumas análises na inclinação dos dados. Qualquer local em que a inclinação mude rapidamente de positiva para negativa várias vezes em uma determinada janela de pesquisa pode ser classificado como instável. Estou perdendo alguns truques mais simples? Essencialmente, uma simulação "estável" deve fornecer uma curva muito suave. Qualquer mudança repentina provavelmente resultará de uma instabilidade nos cálculos.
fonte
Respostas:
Para simplificar, sugiro analisar os tamanhos (valores absolutos) dos resíduos em relação a uma suavização robusta dos dados. Para detecção automatizada, considere substituir esses tamanhos por um indicador: 1 quando excederem algum quantil alto, digamos no nível e 0 caso contrário. Suavize esse indicador e realce quaisquer valores suavizados que excedam .1 - α α
O gráfico à esquerda representa pontos de dados em azul, juntamente com um robusto local suave em preto. O gráfico à direita mostra os tamanhos dos resíduos desse liso. A linha pontilhada preta é o percentil 80 (correspondendo a ). A curva vermelha é construída como descrito acima, mas foi escalada (dos valores de e ) para a faixa média dos resíduos absolutos para plotagem.1201 α = 0,2 0 0 1 1
Variação permite controle sobre a precisão. Nesse caso, a configuração menor que identifica uma pequena lacuna no ruído em torno de 22 horas, enquanto a configuração maior que também capta a mudança rápida perto de 0 horas.α α 0,20 α 0,20
Os detalhes do liso não importam muito. Neste exemplo, um loess suavizar (implementado em
R
comoloess
comspan=0.05
a localizá-lo) foi usado, mas até mesmo uma janela médio teria feito bem. Para suavizar os resíduos absolutos, corri uma média com janelas da largura 17 (cerca de 24 minutos), seguida por uma mediana com janelas. Esses suaves janelas são relativamente fáceis de implementar no Excel. Uma implementação eficiente do VBA (para versões mais antigas do Excel, mas o código-fonte deve funcionar mesmo em novas versões) está disponível em http://www.quantdec.com/Excel/smoothing.htm .R
Códigofonte