Я использую функцию auto.arima () в пакете прогноза для подбора моделей ARMAX с различными ковариатами. Тем не менее, у меня часто есть большое количество переменных для выбора, и обычно получается окончательная модель, которая работает с их подмножеством. Мне не нравятся специальные методы для выбора переменных, потому что я человек и подвержен предвзятости, но перекрестная проверка временных рядов трудна , поэтому я не нашел хорошего способа автоматически пробовать разные подмножества моих доступных переменных, и я застрял, настраивая мои модели, используя мое собственное лучшее суждение.
Когда я подгоняю модели glm, я могу использовать эластичную сеть или лассо для регуляризации и выбора переменных через пакет glmnet . Есть ли в R существующий инструментарий для использования эластичной сетки на моделях ARMAX, или мне придется катиться самостоятельно? Это даже хорошая идея?
редактировать: имеет ли смысл вручную вычислять термины AR и MA (скажем, до AR5 и MA5) и использовать glmnet для соответствия модели?
редактировать 2: Кажется, что пакет FitAR дает мне часть, но не все, путь туда.
forecast
пакета для R. Он сказал, что будет сложно с полной ARIMA, потому что вам придется обернуть лассо вокруг нелинейного оптимизатора ARIMA. Одно частичное решение будет соответствовать модели ARglmnet
с использованием лаговых переменных. Насколько я знаю, никто не делал этого с полной моделью ARIMA.Ответы:
Это не решение, а некоторые размышления о возможностях и трудностях, о которых я знаю.
Всякий раз, когда можно указать модель временного ряда как с x t, вычисляемым по ковариатам и наблюдениям с задержкой по времени, также можно вычислять упругую сеть наименьших квадратов, оштрафованную оценка β с использованием glmnet в R. Требуется, чтобы вы написали код для вычисления x t, чтобы сформировать матрицу модели, которая должна быть указана в glmnet. Это работает для AR-моделей, но не напрямую для ARMA-моделей, скажем. Более того, процедуры перекрестной проверки glmnet сами по себе не имеют смысла для данных временных рядов.
Для более общих моделей требуется реализация алгоритма для вычисления нелинейной оценки методом наименьших квадратов по упругой сети, оштрафованной оценкой β . Насколько мне известно, в R. нет такой реализации. Сейчас я пишу реализацию для решения случая, когда Y t + 1 = x t g ( β ) + ϵ t + 1
Еще одна проблема - выбор размера штрафа (параметры настройки). Как правило, для временных рядов потребуется форма перекрестной проверки, но я надеюсь, что мне удастся разработать некоторые менее требовательные в вычислительном отношении методы для конкретных моделей.
источник
Клиент попросил меня решить эту проблему автоматически, то есть под ключ. Я реализовал подход, который для каждой пары (то есть y и кандидата x), предварительно отбеленный, вычисляет взаимные корреляции предварительно отбеленного ряда, идентифицирует PDL (ИЛИ АВТОРЕГРЕССИВНАЯ РАСПРЕДЕЛЕННАЯ МОДЕЛЬ РАСПРЕДЕЛЕННОГО ОТКЛОНЕНИЯ, включая любое ВРЕМЯ МЕРТВЫ), включая Обнаружение вмешательства для дать надежные оценки, разработать «меру» для этой структуры. После выполнения этого для ВСЕХ кандидатов-регрессоров, оцените их по «мере», а затем выберите лучшие K-регрессоры по «мере». Это иногда называют линейной фильтрацией. Мы успешно включили эту эвристику в наш коммерчески доступный пакет временных рядов. Вы должны быть в состоянии "СВОЙ СВОЙ СОБСТВЕННЫЙ"
источник