Прогнозирование проблем в статистических моделях Vector_ar с экзогенной переменнойPython

Программы на Python
Ответить
Anonymous
 Прогнозирование проблем в статистических моделях Vector_ar с экзогенной переменной

Сообщение Anonymous »

Я пытаюсь включить экзогенную переменную в векторную авторегрессию. Вот минимальный рабочий пример, показывающий проблему (на самом деле это не те данные, с которыми я работаю):

Код: Выделить всё

import pandas as pd
from statsmodels.tsa.api import VAR
import yfinance as yf

df = yf.Ticker("MSFT").history(
start='2025-11-03', end='2025-12-24'
)['Close'].rename('MSFT').to_frame().join(
yf.Ticker("AAPL").history(start='2025-11-03', end='2025-12-24'
)['Close'].rename('AAPL')).diff().dropna()

cdown = pd.Series(index=df.index,
data=[(df.index[-1]-d).days+5 for d in df.index],
name='Countdown')

model = VAR(df, exog=cdown)
results = model.fit(maxlags=5)
new = results.forecast(df.tail(results.k_ar), 1,
exog_future=pd.Series([cdown.iloc[-1]-1]))
Сообщение об ошибке гласит:

Код: Выделить всё

KeyError                                  Traceback (most recent call last)
File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(self, key)
3811 try:
-> 3812     return self._engine.get_loc(casted_key)
3813 except KeyError as err:

File pandas/_libs/index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File pandas/_libs/index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas/_libs/hashtable_class_helper.pxi:7088, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas/_libs/hashtable_class_helper.pxi:7096, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: -1

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[143], line 1
----> 1 new = results.forecast(df.tail(results.k_ar), 1,
2                        exog_future=pd.Series([cdown.iloc[-1]-1]))

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\statsmodels\tsa\vector_ar\var_model.py:1176, in VARProcess.forecast(self, y, steps, exog_future)
1174 else:
1175     exog_future = np.column_stack(exogs)
-> 1176 return forecast(y, self.coefs, trend_coefs, steps, exog_future)

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\statsmodels\tsa\vector_ar\var_model.py:255, in forecast(y, coefs, trend_coefs, steps, exog)
251 for i in range(1, p + 1):
252     # slightly hackish
253     if h - i  255         prior_y = y[h - i - 1]
256     else:
257         # e.g. when h=2, h-1=1, which is forcs[0]
258         prior_y = forcs[h - i - 1]

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\frame.py:4113, in DataFrame.__getitem__(self, key)
4111 if self.columns.nlevels > 1:
4112     return self._getitem_multilevel(key)
-> 4113 indexer = self.columns.get_loc(key)
4114 if is_integer(indexer):
4115     indexer = [indexer]

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\indexes\base.py:3819, in Index.get_loc(self, key)
3814     if isinstance(casted_key, slice) or (
3815         isinstance(casted_key, abc.Iterable)
3816         and any(isinstance(x, slice) for x in casted_key)
3817     ):
3818         raise InvalidIndexError(key)
-> 3819     raise KeyError(key) from err
3820 except TypeError:
3821     # If we have a listlike key, _check_indexing_error will raise
3822     #  InvalidIndexError. Otherwise we fall through and re-raise
3823     #  the TypeError.
3824     self._check_indexing_error(key)

KeyError: -1
Я думаю, что ошибка связана с тем, как VARProcess.forecast вводится в прогноз , и, возможно, форма Trend_coefs не соответствует ожиданиям, но мне не ясно, как мне следует вводить соответствующие данные, чтобы прогноз работал.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»