Similaridade estatística de séries temporais


15

Supondo que se tenha uma série temporal a partir da qual se possa tomar várias medidas, como período, máximo, mínimo, média etc. e depois usá-las para criar uma onda senoidal modelo com os mesmos atributos, existem abordagens estatísticas que se possa usar para quantificar quão perto os dados reais se encaixam no modelo assumido? O número de pontos de dados na série varia entre 10 e 50 pontos.

Um primeiro pensamento muito simplista meu foi atribuir um valor ao movimento direcional da onda senoidal, ou seja, +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1 -1 +1 +1 +1 +1, faça o mesmo com os dados reais e, de alguma forma, quantifique o grau de similaridade do movimento direcional.

Edit: Tendo pensado mais no que realmente quero fazer com meus dados e à luz das respostas à minha pergunta original, o que preciso é de um algoritmo de tomada de decisão para escolher entre suposições concorrentes: a saber, que meus dados são basicamente lineares (ou tendências) com ruído que poderia ter elementos cíclicos; meus dados são basicamente cíclicos, sem tendência direcional; os dados são essencialmente apenas ruído; ou está em transição entre qualquer um desses estados.

Meu pensamento agora é talvez combinar alguma forma de análise bayesiana e métrica euclidiana / LMS. Os passos nesta abordagem seriam

Crie a onda senoidal assumida a partir de medições de dados

Ajustar uma linha reta LMS aos dados

Derivar uma métrica euclidiana ou LMS para partidas dos dados originais de cada uma das opções acima

Crie um Bayesiano anterior para cada um com base nessa métrica, ou seja, 60% das partidas combinadas se vinculam a uma, 40% à outra, favorecendo os 40%

deslize uma janela um ponto de dados ao longo dos dados e repita o procedimento acima para obter novas% de métricas para este conjunto de dados ligeiramente alterado - esta é a nova evidência - faça a análise bayesiana para criar uma posterior e alterar as probabilidades que favorecem cada suposição

repita ao longo de todo o conjunto de dados (mais de 3000 pontos de dados) com esta janela deslizante (comprimento da janela 10-50 pontos de dados). A esperança / intenção é identificar a suposição predominante / favorecida em qualquer ponto do conjunto de dados e como isso muda com o tempo

Quaisquer comentários sobre essa metodologia potencial seriam bem-vindos, particularmente sobre como eu poderia realmente implementar a parte da análise bayesiana.

Respostas:


7

A distância euclidiana é uma métrica comum no aprendizado de máquina. Os slides a seguir fornecem uma boa visão geral dessa área, além de referências:

Veja também as referências na página de benchmarks de Keogh para classificação de séries temporais:


5

Se você possui um modelo específico com o qual deseja comparar: Eu recomendaria os mínimos quadrados como uma métrica para minimizar e pontuar possíveis valores de parâmetros em um conjunto de dados específico. Tudo o que você basicamente precisa fazer é conectar suas estimativas de parâmetros, usá-las para gerar valores previstos e calcular o desvio ao quadrado médio dos valores reais.

No entanto, você pode considerar um pouco a sua pergunta: "Qual modelo melhor se ajustaria aos meus dados?" Nesse caso, eu sugeriria assumir um termo de erro normalmente distribuído - algo que alguém poderia argumentar é semelhante à suposição de mínimos quadrados. Então, dependendo da sua escolha de modelo, você pode supor como os outros parâmetros do modelo são distribuídos (atribuindo um Bayesiano anterior) e usar algo como o pacote MCMC de R para amostrar a distribuição dos parâmetros. Em seguida, você pode olhar para as médias e variações posteriores para ter uma idéia de qual modelo tem o melhor ajuste.


Se eu tiver dois modelos possíveis para ajustar aos meus dados, a onda senoidal conforme descrito na minha pergunta original e um ajuste de linha reta LMS, eu poderia simplesmente comparar o desvio ao quadrado médio dos valores reais de dados da onda senoidal com os resíduos da LMS fit line e, em seguida, escolha o modelo com o valor geral mais baixo, alegando que esse modelo exibe um ajuste mais preciso aos dados? Nesse caso, também seria válido dividir os dados em duas metades e fazer o mesmo com cada metade separadamente, usando a mesma onda senoidal / LMS para ver como cada modelo pode estar melhorando / piorando com o tempo?
Babelproofreader 5/10/10

Não tenho certeza. Minha sugestão foi usar uma métrica de mínimos quadrados, mas não estava dizendo para executar a regressão linear. Você pode verificar a regressão periódica .
M. Tibbits

Quanto à sua outra pergunta, você poderia cortar os dados pela metade, eu seria muito cauteloso ao fazê-lo - porque isso duplicaria a frequência mínima que você poderia considerar. Eu acho que você pode acabar precisando analisar os coeficientes de Fourier (faça uma FFT ou uma DCT e regride com eles?!? - Não tenho certeza ). Ou talvez regressão periódica, como mencionado acima.
M. Tibbits

3

Seu "primeiro pensamento simplista" de representar qualitativamente apenas o movimento direcional é semelhante em espírito ao algoritmo SAX de Keogh para comparar séries temporais. Eu recomendo que você dê uma olhada: Eamonn Keogh e Jessica Lin: SAX .

Na sua edição, parece que agora você está pensando em resolver o problema de maneira diferente, mas você pode achar que o SAX fornece uma peça do quebra-cabeça.


0

Embora eu esteja um pouco atrasado para a festa, se você estiver pensando em algo sinusoidal, as transformações de wavelets também são uma boa ferramenta para ter no bolso. Em teoria, você pode usar transformadas wavelet para decompor uma sequência em várias "partes" (por exemplo, ondas de diferentes formas / frequências, componentes que não são de onda, como tendências, etc.). Uma forma específica de transformação de onda que é usada uma tonelada é a transformação de Fourier, mas há muito trabalho nessa área. Eu adoraria poder recomendar um pacote atual, mas não faço o trabalho de análise de sinal há um bom tempo. Lembro-me de alguns pacotes Matlab que suportam funcionalidades nesse sentido, no entanto.

Outra direção a seguir se você estiver apenas tentando encontrar tendências nos dados cíclicos é algo como o teste de tendência de Mann-Kendall. É muito usado para detectar mudanças no clima ou na qualidade da água, que tem fortes influências sazonais. Ele não possui os recursos de algumas abordagens mais avançadas, mas como é um teste estatístico veterano, é bastante fácil de interpretar e relatar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.