我不确定您要实现什么,但这是我的解决方案
所以 acf 通常会告诉您所有滞后与原始趋势之间的自相关
例如,对于数据集 1
a={'2019-07-15': 9831.0,
'2019-08-15': 9818.0,
'2019-09-16': 9818.0,
'2019-10-15': 9818.0,
'2019-11-15': 9818.0,
'2019-12-16': 9818.0,
'2020-01-15': 9818.0,
'2020-02-17': 9818.0,
'2020-03-16': 9818.0}
df = pd.DataFrame([[x,y] for x,y in zip(a.keys(),a.values())])
df[0] = pd.to_datetime(df[0])
new_df=pd.date_range(start=min(df[0]), end=max(df[0])) ## adding blank dates in between so that data become continuous
new_df = pd.DataFrame(new_df)
new_df = new_df.merge(df, how="left", on=0)
new_df[1]=new_df[1].fillna(0)
new_df.head()
>>
0 1
0 2019-07-15 9831.0
1 2019-07-16 0.0
2 2019-07-17 0.0
3 2019-07-18 0.0
4 2019-07-19 0.0
plt.plot(new_df[0], new_df[1])
plt.show()
如果我对这些数据进行 acf(绘制 acf 以更好地了解正在发生的事情)
plot_acf(new_df[1], lags=35)
我看到在 ~31 处,acf 有一个显着值(> 0.2 显着性水平),足以假设下一次交易可能会在 ~30-31 天内发生(27-32 的这个区域有非零值,由于数据的构建方式,日期不完全相隔 30 天,但略有不同)
分数本身并没有多大意义,如果它不包括分数高的时间(即高的滞后期),这实际上是用来识别季节性模式,所以在这种情况下你知道,因为模式重复每隔约 30 天,您可以在此基础上构建 SARIMA 模型,以预测下一笔交易
至于数据集 C:
acf 图是这样的:
这意味着该模式每 7 天左右重复一次,您可以使用该信息来构建 SARIMA 模型
有许多不同的方法来处理季节性趋势,也许构建 SARIMA 模型或线性模型将使用季节性分解(statsmodels)或 Prophet(http://facebook.github.io/prophet/)