Ana*_*t17 6 time-series python-3.x pandas time-frequency statsmodels
我试图将季节性、趋势和残差与时间序列“XYZ.csv”(收集了 2 年以上的销售数据)分开。
[XYZ.csv 包含 2 列 - 日期和销售额。日期已被设置为代码中的索引。]
import pandas as pd
import statsmodels.api as sm
df = pd.read_csv('XYZ.csv')
df.date=pd.to_datetime(df.date)
df.set_index('date',inplace=True)
res = sm.tsa.seasonal_decompose
(df.colA.interpolate(),freq=?, model='additive')
resplot= res.plot()
observed = res.observed
seasonality = res.seasonal
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常。唯一的麻烦是理解如何计算这个时间序列的频率?如果有任何预定义的方式可以做到这一点。感谢您提前提供任何帮助/建议!
一种非常强力的方法包括通过探索所有潜在周期来搜索最小化残差的周期:
res_vs_lag = {}
for p in range(1, 250):
res = sm.tsa.seasonal_decompose(df.colA, period=p, model='additive')
res_vs_lag[p] = res.resid.abs().sum()
Run Code Online (Sandbox Code Playgroud)
然后您可以绘制结果序列:
pd.Series(res_vs_lag).plot()
Run Code Online (Sandbox Code Playgroud)
一种优雅的方法依赖于自相关或谱分析(https://www.statsmodels.org/dev/ generated/ statsmodels.tsa.stattools.pacf.html)。
| 归档时间: |
|
| 查看次数: |
2963 次 |
| 最近记录: |