Como medir a suavidade de uma série temporal em R?

25

Existe uma boa maneira de medir a suavidade de uma série temporal em R? Por exemplo,

-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0

é muito mais suave do que

-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0

embora tenham o mesmo desvio médio e padrão. Seria legal se existe uma função para me dar uma pontuação suave ao longo de uma série temporal.

agmao
fonte
4
A suavidade tem um significado bem definido na teoria dos processos estocásticos. ("Um variograma é uma descrição quantitativa e estatística da rugosidade de uma superfície": goldensoftware.com/variogramTutorial.pdf , p. 16.) A suavidade está relacionada à extrapolação do variograma à distância zero. (O SD das sucessivas diferenças e a autocorrelação lag-one são versões rápidas e sujas disso). A informação essencial está contida nos coeficientes da série Taylor em 0. Por exemplo, uma constante diferente de zero é realmente grosseira; um zero de alta ordem em 0 indica uma série muito suave.
whuber
Também ouvi falar de expoentes de maior impacto .
Taylor
Que engraçado, eu mesmo me perguntei exatamente essa mesma coisa. Obrigado por publicar!
22412 Chris Beeley
@ Whuber: isso é uma resposta, não um comentário.
precisa saber é o seguinte
Humildemente, imploro para diferir: meu comentário é sobre uma situação relacionada e refere-se apenas ao processo teórico usado para modelar dados espaciais, não a como alguém realmente estimaria essa suavidade. Existe uma arte nessa estimativa com a qual eu estou familiarizado em várias dimensões, mas não em uma, que é especial (devido à direção da seta do tempo), então hesito em afirmar que a aplicação dos procedimentos multidimensionais às séries temporais é de todo convencional ou mesmo uma boa abordagem.
whuber

Respostas:

22

O desvio padrão das diferenças fornecerá uma estimativa aproximada da suavidade:

x <- c(-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0)
y <- c(-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0)
sd(diff(x))
sd(diff(y))

Atualização: como Cyan aponta, isso fornece uma medida dependente da escala. Uma medida independente de escala semelhante usaria o coeficiente de variação em vez do desvio padrão:

sd(diff(x))/abs(mean(diff(x)))
sd(diff(y))/abs(mean(diff(y)))

Nos dois casos, valores pequenos correspondem a séries mais suaves.

Rob Hyndman
fonte
11
Essa pontuação não é invariável à escala, o que pode ou não fazer sentido, dependendo do aplicativo. (E minha própria sugestão é invariável em escala, portanto a mesma preocupação se aplica a ela.) Além disso, vale ressaltar que, para a pontuação acima, valores menores indicam séries temporais mais suaves.
Cyan
11
Obrigado @Cyan. Agora também adicionei uma versão independente de escala.
21812 Rob Robndndman
2
Você realmente pretende incluir diffnos denominadores? Os valores reduziriam algebricamente a (x[n]-x[1])/(n-1)qual é uma medida (bruta) de tendência e, em muitos casos, deve ser extremamente próximo de zero, resultando em uma estatística instável e não muito significativa. Estou intrigado com isso, mas talvez eu estou com vista algo óbvio ...
whuber
11
Eu costumava diffevitar uma suposição de estacionariedade. Se fosse definido com o denominador abs(mean(x)), a escala funcionaria apenas quando xestivesse estacionária. Tomar diffs significa que também funcionará para processos estacionários diferentes. Obviamente, as diferenças podem não tornar xestacionárias e ainda existem problemas. Escalar séries temporais é complicado por esse motivo. Mas entendo seu ponto de vista sobre estabilidade. Acho que fazer algo melhor exigiria algo substancialmente mais sofisticado - usando um exemplo não-paramétrico mais suave.
22612 Rob Robndndman
11
Eu teria pensado que uma tendência constante deveria ser perfeitamente suave, então a resposta deveria ser 0.
Rob Hyndman 28/03
13

A autocorrelação lag-one servirá como uma pontuação e também terá uma interpretação estatística razoavelmente direta.

cor(x[-length(x)],x[-1])

Interpretação da pontuação:

  • pontuações próximas a 1 implicam uma série de variações suaves
  • pontuações próximas de 0 significam que não há relação linear geral entre um ponto de dados e o seguinte (ou seja, plot (x [-length (x)], x [-1]) não fornecerá um gráfico de dispersão com nenhuma linearidade aparente)
  • pontuações próximas a -1 sugerem que a série é irregular de uma maneira específica: se um ponto estiver acima da média, o próximo provavelmente ficará abaixo da média na mesma quantidade e vice-versa.
Ciano
fonte
0

Você pode apenas verificar a correlação com o número do timestep. Isso seria equivalente a tomar o R² de uma regressão linear simples nas séries temporais. Note, no entanto, que essas são duas séries temporais muito diferentes, então não sei como isso funciona como comparação.

naught101
fonte
4
Isso seria uma medida da linearidade com o tempo, mas não da suavidade.
21812 Rob Hyndman