В комментарии к этому вопросу пользователь @whuber процитировал возможность использования периодической версии сплайнов для подгонки периодических данных. Я хотел бы узнать больше об этом методе, в частности об уравнениях, определяющих сплайны, и о том, как реализовать их на практике (я в основном R
пользователь, но я могу обойтись с MATLAB или Python, если возникнет такая необходимость). Кроме того, но это «приятно иметь», было бы здорово узнать о возможных преимуществах / недостатках в отношении подбора тригонометрических полиномов, как я обычно поступаю с данными такого типа (если ответ не очень гладкий, в этом случае я переключаюсь на гауссовский процесс с периодическим ядром).
regression
time-series
seasonality
splines
DeltaIV
источник
источник
Ответы:
Сплайны используются в регрессионном моделировании для моделирования, возможно, сложных нелинейных функциональных форм. Сглаженный сплайн тренд состоит из кусочно-непрерывных многочленов, главный коэффициент которых изменяется в каждой точке разрыва или узле. Сплайн может быть задан с точки зрения степени полинома тренда, а также точек останова. Сплайн-представление ковариаты расширяет один вектор наблюдаемых значений в матрицу, размерность которой равна степени полинома плюс число узлов.
Периодическая версия сплайнов лишь периодическая версия любой регрессии: данные нарежут повторы длины периода. Так, например, моделирование суточного тренда в многодневном эксперименте на крысах потребует перекодирования времени эксперимента с 24-часовыми приращениями, поэтому 154-й час будет по модулю 24 равным 10 (154 = 6 * 24 + 10). Если вы подгоните линейную регрессию к данным обрезки, она оценила бы пилообразную форму волны для тренда. Если вы поместите пошаговую функцию где-то в периоде, это будет прямоугольная форма волны, которая соответствует серии. Сплайн способен выразить гораздо более сложный вейвлет. Для чего это стоит, в
splines
пакете есть функция,periodicSpline
которая делает именно это.Я не считаю реализацию сплайна "bs" по умолчанию в R полезной для интерпретации. Поэтому я написал свой собственный сценарий ниже. Для сплайна степени с узлами это представление дает первым столбцам стандартное полиномиальное представление,п NК п P + I я ≤ нК SP + I= ( X- кя)пя( Х< кя) К
Вы увидите, что они вполне согласны. Кроме того, соглашение об именах допускает интерпретацию. В выводе регрессии вы видите:
Я собираюсь предположить, что вы знаете периодичность данных под рукой. Если в данных отсутствует компонент роста или скользящего среднего, вы можете преобразовать длинные временные ряды в копии коротких рядов продолжительностью 1 период. Теперь у вас есть копии и вы можете использовать анализ данных для оценки повторяющейся тенденции.
Предположим, я сгенерировал следующие несколько шумные, очень длинные временные ряды:
Полученный результат показывает разумную производительность.
источник