在Statsmodels SARIMAX get_prediction上没有适当形状的Exog变量

时间:2017-07-07 18:12:12

标签: python pandas statsmodels

我有一个使用statsmodels的非常简单的Sarimax模型:

ts_monthly

其中ts_exogdf date vl_1 vl_2 2016-01-01 10 12 2016-02-01 14 1 2016-03-01 98 33 ts_monthly = df.vl_1 ts_exog = df.vl_2 是按日期编制索引的pandas系列:

get_prediction

模型拟合有效,但当我尝试运行ts = pd.Series([12,3,2], index=pd.date_range('2016-04-01', '2016-07-01', freq='M')) mdl.get_prediction('2016-03-01', '2016-07-01', exog=ts, dynamic=False) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-135-c89e9e005a31> in <module>() 6 print(mdl.summary()) 7 _ = mdl.plot_diagnostics() ----> 8 pred = mdl.get_prediction(start=start_date, end=end_date, exog=ts_exog, dynamic=False) 9 pred_ci = pred.conf_int() 10 C:\Users\myuer\bin\anaconda3\lib\site-packages\statsmodels\tsa\statespace\sarimax.py in get_prediction(self, start, end, dynamic, exog, **kwargs) 1901 ' appropriate shape. Required %s, got %s.' 1902 % (str(required_exog_shape), -> 1903 str(exog.shape))) 1904 exog = np.c_[self.model.data.orig_exog.T, exog.T].T 1905 ValueError: Provided exogenous values are not of the appropriate shape. Required (3, 1), got (3,). 时,我收到以下错误:

{{1}}

关于预测外生系列必须具有何种形状的任何想法?

1 个答案:

答案 0 :(得分:1)

This answer may be helpful

虽然您的预测系列是在熊猫系列中(因此是一个numpy ndarray),但形状(3,)表示它只有一个索引(即您使用单个索引访问其值,如{{1 }})。如果您使用ts[0]重新整形数据,则会创建第二个索引(始终为ts.reshape(3, 1)),以便可以0的方式访问值。

我还没有充分了解这种行为,理解它的基本原理,但我也在处理依赖/相关模块(如scipy和scikit-learn)时也看到过这种行为。