Проведение многомерного предсказания временных рядов с известной будущей переменной

Вопрос или проблема

У меня есть набор данных с 71 различной переменной за длительный временной ряд, проводимый ежемесячно с 1960 до 2023 года, и я хочу предсказать значение всех этих переменных, когда одна из них, обозначенная как coa, которая не показана ниже, будет иметь заранее определенное будущее значение. Вот фрагмент данных:

Дата ure potc alu iro cop lea tin nic zin gol pla sil
Янв 1960 42.25 28.50 511.47 11.42 715.40 206.10 2180.40 1631.00 260.80 35.27 83.50 0.91
Фев 1960 42.25 28.50 511.47 11.42 728.19 203.70 2180.40 1631.00 244.90 35.27 83.50 0.91
Мар 1960 42.25 28.50 511.47 11.42 684.94 210.30 2173.80 1631.00 248.70 35.27 83.50 0.91
Апр 1960 42.25 28.50 511.47 11.42 723.11 213.60 2178.20 1631.00 254.60 35.27 83.50 0.91
Май 1960 42.25 28.50 511.47 11.42 684.75 213.40 2162.70 1631.00 253.80 35.27 83.50 0.91
Июн 1960 42.25 28.50 511.47 11.42 691.59 202.40 2184.80 1631.00 249.80 35.27 83.50 0.91
Июл 1960 42.25 28.50 511.47 11.42 702.39 196.20 2248.70 1631.00 248.70 35.27 83.50 0.91
Авг 1960 42.25 28.50 511.47 11.42 675.94 195.30 2204.60 1631.00 241.00 35.27 83.50 0.91
Сен 1960 42.25 28.50 511.47 11.42 647.06 192.70 2226.70 1631.00 240.10 35.27 83.50 0.91
Окт 1960 42.25 28.50 511.47 11.42 612.66 185.20 2226.70 1631.00 242.30 35.27 83.50 0.91
Ноя 1960 42.25 28.50 511.47 11.42 642.13 188.10 2204.60 1631.00 241.40 35.27 83.50 0.91
Дек 1960 42.25 28.50 511.47 11.42 636.91 179.20 2189.20 1631.00 228.20 35.27 83.50 0.91
Янв 1961 42.25 30.00 511.47 11.02 606.71 175.90 2162.70 1711.00 218.00 35.25 83.50 0.91

Я проверял это с помощью множественной линейной регрессии, но уровень доверия и согласованность этих прогнозов недостаточны для моего моделирования, и я хочу использовать векторную авторегрессию, VAR, или другие связанные модели, такие как VARMA и VARMAX, чтобы провести тот же тест. Как лучше всего интегрировать заранее определенное будущее значение coa в модель VAR и провести прогнозирование значений всех других переменных на основе этого нового заранее определенного значения?

Ответ или решение

Для проведения многомерного предсказания временных рядов с использованием векторной авторегрессии (VAR) или её модификаций (VARMA, VARMAX) с заданным известным значением переменной coa, необходимо следовать нескольким шагам. Ниже представлен детализированный план действий.

Шаг 1: Подготовка данных

  1. Проверка качества данных: Убедитесь, что данные не содержат пропущенных значений и выбросов, которые могут негативно повлиять на модели. Необходимо провести предварительный анализ и очистку данных.

  2. Преобразование формата даты: Убедитесь, что временные метки представлены в подходящем формате (например, тип datetime в Python).

  3. Нормализация или стандартизация: Если разные переменные находятся на значительно различных масштабах, стоит провести нормализацию или стандартизацию данных для улучшения качества предсказаний.

Шаг 2: Определение и внедрение coa

  1. Формирование переменной coa: Создайте новый временной ряд с заранее определенным значением coa, которое вам нужно для предсказания. Это может быть отдельный DataFrame или просто столбец в исходном наборе данных.

  2. Интеграция coa в датасет: Добавьте переменную coa к вашему набору данных, убедившись, что значения обеспечивают временную согласованность. Это значит, что значения coa должны соответствовать тем же временным меткам, что и остальные переменные.

Шаг 3: Построение модели VAR

  1. Выбор порядка VAR: Используйте тесты, такие как тесты Акаике (AIC) или Шварца (BIC), для определения оптимального порядка (параметров лагов) модели VAR. Вы можете использовать функцию VAR.select_order() из библиотеки statsmodels в Python.

  2. Обучение модели: Создайте и обучите модель VAR, используя все переменные, включая coa. Одна из библиотек на Python для этой задачи — statsmodels.

    from statsmodels.tsa.api import VAR
    
    model = VAR(data)
    results = model.fit(maxlags=p)  # p — выбранное количество лагов

Шаг 4: Прогнозирование

  1. Формирование прогноза: Используйте results.forecast() для получения прогноза на основе данных и заданного значения coa.

    forecast = results.forecast(data.values[-results.k_ar:], steps=n_steps)

    Здесь n_steps — количество шагов вперёд, на которое вы хотите провести прогноз.

  2. Запись прогноза в новую таблицу: Результаты прогноза можно записать в новую таблицу для дальнейшего анализа.

Шаг 5: Анализ результатов

  1. Оценка качества модели: Проведите оценку качества прогнозов, используя такие метрики, как MSE (среднеквадратичная ошибка) или MAE (средняя абсолютная ошибка).

  2. Визуализация результатов: Рекомендуется визуализировать результаты прогнозов, чтобы понять их корректность и провести последовательный анализ.

Шаг 6: Альтернативные модели

  1. Использование VARMA/VARMAX моделей: Если данные указывают на наличие сезонности и/или авторегрессии с скользящими средними, имеет смысл рассмотреть использование VARMA или VARMAX моделей аналогичным образом, добавляя внешние регрессоры (в данном случае переменную coa).

    from statsmodels.tsa.statespace.varmax import VARMAX
    
    model = VARMAX(data, order=(p, q))
    results = model.fit()
    forecast = results.forecast(steps=n_steps)

Следуя этим шагам, вы сможете эффективно интегрировать переменную coa в ваши модели VAR и проводить надежные прогнозы по всем остальным переменным во временном ряде.

Оцените материал
Добавить комментарий

Капча загружается...