SARIMAX预测_平均输出

时间:2018-12-23 04:39:55

标签: python pandas statsmodels

我正在使用SARIMAX进行预测模型,我想在输出中添加列标题,但遇到了麻烦。我可以通过执行.to_csv来解决此问题,然后在添加标签之前将其作为新的数据帧读回,但我希望能够一步完成,而不是编写另一个文件。

    mod = sm.tsa.statespace.SARIMAX(y,
                                order=(0, 1, 1),
                                seasonal_order=(0, 1, 1, 12),
                                enforce_stationarity=False,
                                enforce_invertibility=False)
    results = mod.fit()
    pred_uc = results.get_forecast(steps = 48)
    pred_ci = pred_uc.conf_int()

    forecast = pd.DataFrame(pred_uc.predicted_mean, columns = ['TIME', 'column_2'])

ValueError:传递的项目数错误1,展示位置意味着2

ValueError:传递的值的形状为(1,48),索引表示(2,48)

2 个答案:

答案 0 :(得分:0)

pred_uc.predicted_mean是与索引(例如日期索引)相关联的熊猫系列对象。

您可以将其转换为DataFrame,例如pred_uc.predicted_mean.to_frame(),但仍然只有一列和一个索引。

如果出于某种原因您必须以您显示的形式保存它,则可以执行例如以下:

pred_uc.predicted_mean.to_frame('column_2').rename_axis('time').reset_index()

这将给出类似的内容:

    time  column_2
0 2009Q4  3.791093
1 2010Q1  1.864600
2 2010Q2  0.680030
3 2010Q3  2.299168

答案 1 :(得分:0)

经过一番阅读后,我最终找到了最适合的解决方案,因为这是每次迭代并为结果创建一个新列。

compiled_df[column_2] = forecast[0]
compiled_df.index.name = 'TIME'

谢谢您的帮助