我已经回答了这个问题here,但是下面是关于如何用rpy2做到这一点的快速功能。这使您可以使用R的稳健统计分解与黄土,但在Python!
from rpy2.robjects import r
def decompose(series, frequency, s_window, **kwargs):
df = pd.DataFrame()
df['date'] = series.index
s = [x for x in series.values]
length = len(series)
s = r.ts(s, frequency=frequency)
decomposed = [x for x in r.stl(s, s_window, **kwargs).rx2('time.series')]
df['observed'] = series.values
df['trend'] = decomposed[length:2*length]
df['seasonal'] = decomposed[0:length]
df['residual'] = decomposed[2*length:3*length]
return df
上述函数假定您的系列具有日期时间索引。它返回一个数据框,其中包含您可以使用您最喜欢的图形库进行图形化的单个组件。
你可以通过参数stl看到here,但改变任何周期为下划线,例如上述函数中的位置参数是s_window,但在上面的链接中是s.window。另外,我在this repository上发现了一些上述代码。