Подгонка модели ARIMAX с регуляризацией или штрафом (например, с помощью лассо, эластичной сетки или регрессии гребня)

29

Я использую функцию auto.arima () в пакете прогноза для подбора моделей ARMAX с различными ковариатами. Тем не менее, у меня часто есть большое количество переменных для выбора, и обычно получается окончательная модель, которая работает с их подмножеством. Мне не нравятся специальные методы для выбора переменных, потому что я человек и подвержен предвзятости, но перекрестная проверка временных рядов трудна , поэтому я не нашел хорошего способа автоматически пробовать разные подмножества моих доступных переменных, и я застрял, настраивая мои модели, используя мое собственное лучшее суждение.

Когда я подгоняю модели glm, я могу использовать эластичную сеть или лассо для регуляризации и выбора переменных через пакет glmnet . Есть ли в R существующий инструментарий для использования эластичной сетки на моделях ARMAX, или мне придется катиться самостоятельно? Это даже хорошая идея?

редактировать: имеет ли смысл вручную вычислять термины AR и MA (скажем, до AR5 и MA5) и использовать glmnet для соответствия модели?

редактировать 2: Кажется, что пакет FitAR дает мне часть, но не все, путь туда.

Zach
источник
2
Мне было бы любопытно узнать, удалось ли вам когда-нибудь что-то сделать с этой проблемой. У меня это было помечено для любого обновления - так что просто касаясь базы здесь.
Вишал Белсаре
Никогда не удавалось решить это. Я думал о написании своей собственной реализации, но не смог обойти это. Может быть, вы могли бы вручную рассчитать термины AR и MA, а затем применить glmnet к этим данным?
Зак
1
Привет, Зак, мне было интересно, пошли ли ты дальше или же он все еще припаркован. Мне нужен такой алгоритм для прогнозирования большого количества серий.
Мэтт Веллер,
3
@MattWeller Я немного поговорил с Робом Хиндманом, автором превосходного forecastпакета для R. Он сказал, что будет сложно с полной ARIMA, потому что вам придется обернуть лассо вокруг нелинейного оптимизатора ARIMA. Одно частичное решение будет соответствовать модели AR glmnetс использованием лаговых переменных. Насколько я знаю, никто не делал этого с полной моделью ARIMA.
Зак

Ответы:

7

Это не решение, а некоторые размышления о возможностях и трудностях, о которых я знаю.

Всякий раз, когда можно указать модель временного ряда как с x t, вычисляемым по ковариатам и наблюдениям с задержкой по времени, также можно вычислять упругую сеть наименьших квадратов, оштрафованную оценка β с использованием glmnet в R. Требуется, чтобы вы написали код для вычисления x t, чтобы сформировать матрицу модели, которая должна быть указана в glmnet. Это работает для AR-моделей, но не напрямую для ARMA-моделей, скажем. Более того, процедуры перекрестной проверки glmnet сами по себе не имеют смысла для данных временных рядов.

YT+1знак равноИксTβ+εT+1
ИксTβИксT

Для более общих моделей требуется реализация алгоритма для вычисления нелинейной оценки методом наименьших квадратов по упругой сети, оштрафованной оценкой β . Насколько мне известно, в R. нет такой реализации. Сейчас я пишу реализацию для решения случая, когда Y t + 1 = x t g ( β ) + ϵ t + 1

YT+1знак равное(ИксT,β)+εT+1
β
YT+1знак равноИксTг(β)+εT+1
Дело в том, что для выбора модели крайне важно, чтобы штраф Лассо был на а не на g ( β ) . Если я правильно помню ARIMA-параметризацию, она также принимает эту форму - но я не могу предложить никакого кода на данный момент. Он основан на методе координатного градиентного спуска для негладкой сепарабельной минимизации .βг(β)-

Еще одна проблема - выбор размера штрафа (параметры настройки). Как правило, для временных рядов потребуется форма перекрестной проверки, но я надеюсь, что мне удастся разработать некоторые менее требовательные в вычислительном отношении методы для конкретных моделей.

NRH
источник
Пакет каретки для R имеет хорошую реализацию перекрестной проверки временных рядов, которую можно использовать для выбора параметров glmnet. Спасибо за ответ.
Зак
2

Клиент попросил меня решить эту проблему автоматически, то есть под ключ. Я реализовал подход, который для каждой пары (то есть y и кандидата x), предварительно отбеленный, вычисляет взаимные корреляции предварительно отбеленного ряда, идентифицирует PDL (ИЛИ АВТОРЕГРЕССИВНАЯ РАСПРЕДЕЛЕННАЯ МОДЕЛЬ РАСПРЕДЕЛЕННОГО ОТКЛОНЕНИЯ, включая любое ВРЕМЯ МЕРТВЫ), включая Обнаружение вмешательства для дать надежные оценки, разработать «меру» для этой структуры. После выполнения этого для ВСЕХ кандидатов-регрессоров, оцените их по «мере», а затем выберите лучшие K-регрессоры по «мере». Это иногда называют линейной фильтрацией. Мы успешно включили эту эвристику в наш коммерчески доступный пакет временных рядов. Вы должны быть в состоянии "СВОЙ СВОЙ СОБСТВЕННЫЙ"

IrishStat
источник
Я специально хочу включить лассо или эластичную сетку в модель ARIMA.
Зак
3
Я на самом деле не ищу линейный фильтр (хотя это полезно). Я специально хочу, чтобы в модель ARIMAX была включена лассо, ребристая регрессия или эластичная сетка.
Зак
2
На данный момент меня не интересуют сдвиги уровней, тренды местного времени, сдвиги коэффициентов или непостоянная ошибка. Я очень заинтересован в применении регуляризации лассо, риджа или эластичной сетки к моделям ARIMAX.
Зак
2
Если вы сможете включить регуляризацию лассо, риджа или эластичной сети в вышеописанную методологию и опубликовать пример кода на языке программирования с открытым исходным кодом, я был бы рад предоставить вам награду.
Зак
1
@frank вы пытаетесь сделать идентификацию с помощью оценки (понижение), и это не работает, потому что есть слишком много комбинаций возможных импульсов, сдвигов уровня, сезонных импульсов и временных трендов.,. Если эти структуры необходимы, но игнорируются, оценка параметров смещается, и параметрические тесты значимости выходят за пределы окна.
IrishStat