SARIMAX predicted_mean 输出

SARIMAX predicted_mean output

我正在使用 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)

pred_uc.predicted_mean 是一个 pandas 系列对象,与索引相关联(例如日期索引)。

您可以将其转换为 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

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

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

感谢您的帮助