Як виміряти плавність часового ряду в 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 послідовних відмінностей та автокореляція відставання-один - це швидка та брудна версія цього). Основна інформація міститься в коефіцієнтах серії Тейлора при 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))

Оновлення: як зазначає Циан, це дає змогу залежно від масштабу. Подібний незалежний від масштабу міра використовує коефіцієнт варіації, а не стандартне відхилення:

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було нерухомим. Прийняття різниці означає, що воно буде працювати і для відмінностей стаціонарних процесів. Звичайно, розміна може не робити xнерухомою, і тоді виникають проблеми. Часові серії масштабування є складними з цієї причини. Але я сприймаю вашу думку про стабільність. Я думаю, що для чого-небудь кращого знадобиться щось значно більш складне --- використовуючи, наприклад, непараметричні плавніші.
Роб Хайндман

1
Я б подумав, що постійний тренд повинен бути ідеально рівним, тому відповідь має бути 0.
Роб Хайндман

13

Автокореляція відставання один слугуватиме оцінкою і має також досить чітку статистичну інтерпретацію.

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

Оцінка:

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

0

Ви можете просто перевірити співвідношення щодо кількості часових кроків. Це було б рівнозначно застосуванню R² простої лінійної регресії на часових серіях. Зауважте, що це два дуже різних часописи, тому я не знаю, наскільки добре це працює як порівняння.


4
Це було б мірою лінійності з часом, але не плавності.
Роб Хайндман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.