基于Python的黄土时间序列季节性分解

时间:2014-10-20 16:35:13

标签: python r time-series

我正在尝试用Python做我在ST上的STL函数。

R命令是

fit <- stl(elecequip, s.window=5)
plot(fit)

我如何在Python中执行此操作?我调查过statmodels.tsa有一些时间序列分析函数,但我可以在文档中专门找到“黄土时间序列的季节性分解”。类似地,在Python.org上有一个名为timeseries 0.5.0的库,但是它没有文档,它的主站点向下看。我知道rpy2有一个使用包装器的选项,但我不知道如何使用包装器。

感谢。

3 个答案:

答案 0 :(得分:12)

我一直有类似的问题,并且正在努力找到最好的前进道路。

Here is a github repo for an STL decomposition based on the Loess procedure。它基于this paper提供的原始fortran代码。它实际上只是一个围绕原始Fortran代码的python包装器,因此您知道它可能运行良好并且没有错误。

如果你想要更多以Python为中心的东西并且愿意采用稍微简单的分解程序,那么StatsModels就有一个:

尝试将您的数据移至Pandas数据框,然后致电StatsModels tsa.seasonal_decompose。请参阅following example

import statsmodels.api as sm

dta = sm.datasets.co2.load_pandas().data
# deal with missing values. see issue
dta.co2.interpolate(inplace=True)

res = sm.tsa.seasonal_decompose(dta.co2)
resplot = res.plot()

Three plots produced from above input

然后,您可以从以下位置恢复分解的各个组成部分:

res.resid
res.seasonal
res.trend

我希望这有帮助!

答案 1 :(得分:0)

另一个python选项是seasonal包(PyPIgithub)。它类似于StatsModels seasonal_decompose,也会估算数据的周期性。

答案 2 :(得分:0)

您也可以使用rpy2

从python中调用R.
csrftoken_cookies = [cookie for cookie in cookie_jar if cookie.name == 'csrf_token']

上述函数假定您的系列具有日期时间索引。它返回一个包含各个组件的数据框,然后您可以使用您喜欢的图形库进行图形化。

您可以传递stl see here的参数,但是将任何句点更改为下划线,例如上面函数中的位置参数是s_window,但在上面的链接中它是s.window。另外,我在this存储库中找到了上面的一些代码。