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.
r
time-series
agmao
fonte
fonte
Respostas:
O desvio padrão das diferenças fornecerá uma estimativa aproximada da suavidade:
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:
Nos dois casos, valores pequenos correspondem a séries mais suaves.
fonte
diff
nos 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 ...diff
evitar uma suposição de estacionariedade. Se fosse definido com o denominadorabs(mean(x))
, a escala funcionaria apenas quandox
estivesse estacionária. Tomar diffs significa que também funcionará para processos estacionários diferentes. Obviamente, as diferenças podem não tornarx
estacioná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.A autocorrelação lag-one servirá como uma pontuação e também terá uma interpretação estatística razoavelmente direta.
Interpretação da pontuação:
fonte
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.
fonte