我的代码有问题:我有一些时间序列数据,我想用它来预测外生变量的值,我正在使用OLS:
# Get OLS
OLS = sm.OLS.from_formula('A ~ B + C + D + E', df1['2013/11/08':'2014/03/25']).fit()
OLS.summary()
然后我会使用OLS的结果来预测
# Get a 5 days forecast
param = OLS.params
regr = OLS.rsquared
pred = param[0] + param[1] * df1['B'] + param[2] * df1['C'] + param[3] * df1['D'] + param[4] * df1['E']
df2 = pd.DataFrame(pred, columns=['Z'])
df3 = pd.concat([df2, df0], axis=1)
diff = df3['Z'] - df3['X']
df4 = pd.DataFrame(diff, columns=['Difference'])
df_diff_5days = df4['26/03/2014':'30/03/2014']
df_diff_5days
这对我有用,因为它给我的输出看起来像这样:
Difference
2014-03-26 5
2014-03-27 6
2014-03-28 -3
2014-03-29 9
2014-03-30 -7
我想要的是有一个循环,它循环通过OLS和新的差异作为输出,总是将时间范围增加一天(这意味着下一次迭代使用df1 ['2013/11/08': '2014/03/26']并获得2014-03-27 - 2014-03-31的差异,并将结果存储在一个表格中,如下所示:
2014-03-26 2014-03-27 2014-03-28 2014-03-29 2014-03-30 2014-03-31 2014-04-01 ...
5 6 -3 9 -7
2 -1 10 -5 2
...
我已经使用此命令创建了第一行: columns = pd.date_range('26 / 03/2014',句点= 1000,freq ='H')
df_err = pd.DataFrame(columns=columns)
df_error = df_err.append(df_diff_5days['Difference'])
df_error
但现在我被卡住了。是否有可能将OLS的视野自动增加一天,将df4的范围移动一天并将每个结果存储在表df_error的新行中?
如果我只是手动更改日期,我只会使用另一行获得相同的表格,但第一行会被删除。