擅长:python、mysql、java
<p>也可以使用rpy2从python调用R</p>
<pre><code>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
</code></pre>
<p>上面的函数假设序列具有日期时间索引。它返回一个包含各个组件的数据帧,然后您可以使用自己喜爱的图形库绘制这些组件的图形。</p>
<p>您可以传递stl seen<a href="https://stat.ethz.ch/R-manual/R-devel/library/stats/html/stl.html" rel="nofollow noreferrer">here</a>的参数,但可以将任何句点改为下划线,例如,上面函数中的位置参数是súu window,但在上面的链接中是s.window。另外,我在<a href="https://github.com/chriso/timeseries" rel="nofollow noreferrer">this</a>存储库中找到了上面的一些代码。</p>