滚动OLS趋势预测

问题描述

我正在尝试使用滚动 OLS 在移动的窗口框架上形成趋势。

看起来它正在做一些事情,但它超出了规模,所以我错过了一些东西。

数据是日期时间上浮点值('关闭')的数据框。

知道有什么问题吗?

代码如下:

import datetime
import matplotlib.pyplot as plt  
import pandas as pd  
from statsmodels.regression.rolling import RollingOLS

print("data:")
print(df['Close'])

def myTime(date_time_str):
    date_time_obj = datetime.datetime.strptime(date_time_str,'%Y-%m-%d %H:%M:%s')
    return (time.mktime(date_time_obj.timetuple()))

df['Time'] = [myTime(obs) for obs in df['datetime']]
rols = RollingOLS(df['Time'],df['Close'].astype(float),window=window_size* 7)
rres = rols.fit()
params = rres.params

print("prediction:")
print(params.head())
print(params.tail())

plt.plot(df['Close'])
plt.title = "data"

plt.plot(params['Close'])
plt.title = "rolling prediction"

这是第一个输出

data:

dtm
2020-07-01 09:00:00    181.593
2020-07-01 10:00:00    184.800
2020-07-01 11:00:00    183.478
2020-07-01 12:00:00    182.650
2020-07-01 13:00:00    182.643
                        ...   
2021-02-25 10:00:00    608.150
2021-02-25 11:00:00    587.051
2021-02-25 12:00:00    552.540
2021-02-25 13:00:00    563.070
2021-02-25 14:00:00    570.900
Name: Close,Length: 1119,dtype: float64


prediction:
                     Close
dtm                       
2020-07-01 09:00:00    NaN
2020-07-01 10:00:00    NaN
2020-07-01 11:00:00    NaN
2020-07-01 12:00:00    NaN
2020-07-01 13:00:00    NaN
                            Close
dtm                              
2021-02-25 10:00:00  3.073356e+06
2021-02-25 11:00:00  3.070888e+06
2021-02-25 12:00:00  3.068954e+06
2021-02-25 13:00:00  3.066877e+06
2021-02-25 14:00:00  3.064692e+06

data plot

rolling prediction plot

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)