Как измерить гладкость временного ряда в R?


25

Есть ли хороший способ измерения гладкости временного ряда в R? Например,

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

намного плавнее чем

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

хотя они имеют одинаковое среднее значение и стандартное отклонение. Было бы здорово, если бы была функция, которая позволяла бы мне сгладить счет во временном ряду.


4
Гладкость имеет четко определенный смысл в теории случайных процессов. («Вариограмма - это статистическое количественное описание шероховатости поверхности»: goldensoftware.com/variogramTutorial.pdf , стр. 16.) Гладкость связана с экстраполяцией вариограммы на нулевое расстояние. (SD последовательных различий и автокорреляция lag-one являются быстрой и грязной версией этого). Основная информация содержится в коэффициентах ряда Тейлора при 0. Например, ненулевая константа действительно грубая; ноль высокого порядка в 0 указывает на очень гладкий ряд.
whuber

Я тоже слышал о показателях Херста .
Тейлор

Как забавно, я сам удивлялся этой же вещи. Спасибо за публикацию!
Крис Били,

@whuber: это ответ, а не комментарий.
naught101

@ naught101 Я смиренно умоляю об отличии: мой комментарий касается связанной ситуации и касается только теоретического процесса, используемого для моделирования пространственных данных, а не того, как можно было бы на самом деле оценить эту гладкость. В этой оценке есть искусство, с которым я знаком в нескольких измерениях, но не в одном, что является особым (из-за направления стрелки времени), поэтому я не решаюсь утверждать, что применение многомерных процедур к временным рядам вообще обычный или даже хороший подход.
whuber

Ответы:


22

Стандартное отклонение различий даст приблизительную оценку гладкости:

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))

Обновление: как указывает Cyan, это дает вам масштабно-зависимую меру. Аналогичная независимая от масштаба мера будет использовать коэффициент вариации, а не стандартное отклонение:

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

В обоих случаях небольшие значения соответствуют более гладким рядам.


1
Эта оценка не зависит от масштаба, что может иметь или не иметь смысла в зависимости от приложения. (И мое собственное предложение не зависит от масштаба, поэтому к нему относится то же самое.) Кроме того, стоит отметить, что для приведенной выше оценки меньшие значения указывают на более гладкие временные ряды.
голубой

1
Спасибо @Cyan. Теперь я также добавил независимую от масштаба версию.
Роб Хиндман

2
Вы действительно намерены включить diffв знаменатели? Значения алгебраически сводятся к тому, (x[n]-x[1])/(n-1)что является (грубой) мерой тренда, и во многих случаях должны быть чрезвычайно близки к нулю, что приводит к нестабильной и не очень значимой статистике. Я озадачен этим, но, может быть, я
упускаю из

1
Я привык diffизбегать предположения о стационарности. Если бы это было определено знаменателем, abs(mean(x))то масштабирование работало бы только тогда, когда оно xбыло стационарным. Использование diff означает, что это будет работать и для разностных стационарных процессов. Конечно, различия могут не делать xпостоянных, и тогда есть еще проблемы. По этой причине масштабирование временных рядов довольно сложно. Но я понимаю вашу точку зрения о стабильности. Я думаю, что для того, чтобы сделать что-то лучше, потребовалось бы что-то более сложное - например, с использованием непараметрического сглаживателя.
Роб Хиндман

1
Я бы подумал, что постоянный тренд должен быть совершенно плавным, поэтому ответ должен быть 0.
Роб Хиндман

13

Автокорреляция lag-one будет служить оценкой и также имеет достаточно простую статистическую интерпретацию.

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

Интерпретация баллов:

  • баллы около 1 подразумевают плавно изменяющийся ряд
  • баллы, близкие к 0, означают, что между точкой данных и следующей точкой нет общей линейной зависимости (то есть график (x [-length (x)], x [-1]) не даст диаграмму рассеяния с какой-либо очевидной линейностью)
  • баллы около -1 предполагают, что ряды имеют определенные неровности: если одна точка выше среднего, следующая, вероятно, будет ниже среднего примерно на ту же величину, и наоборот.

0

Вы можете просто проверить корреляцию с номером временного шага. Это было бы эквивалентно взятию R2 простой линейной регрессии на временных рядах. Обратите внимание, что это две очень разные временные серии, поэтому я не знаю, насколько хорошо это работает в качестве сравнения.


4
Это было бы мерой линейности во времени, но не гладкости.
Роб Хиндман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.