首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python实现黄土对时间序列的季节分解

用Python实现黄土对时间序列的季节分解
EN

Stack Overflow用户
提问于 2014-10-21 00:35:13
回答 3查看 10.9K关注 0票数 12

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

R命令包括

代码语言:javascript
复制
fit <- stl(elecequip, s.window=5)
plot(fit)

我如何在Python中做到这一点?我调查过statmodels.tsa具有一些时间序列分析功能,但我可以在文档中特别找到“按黄土对时间序列进行季节分解”。类似的,在Python.org上也有一个叫做TimeSeries0.5.0的库,但是这个库没有文档,而且它的主页也是不可用的。我知道rpy2有一个使用包装器的选项,但我不知道如何使用包装器。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-03 08:10:42

我也遇到了类似的问题,我正在努力寻找最好的前进道路。

Here is a github repo for an STL decomposition based on the Loess procedure。它基于this paper提供的原始fortran代码。它实际上只是一个围绕原始Fortran代码的python包装器,所以您知道它可能工作得很好,并且不会有buggy。

如果您想要更多以Python为中心的东西,并且愿意使用稍微简单一点的分解例程,StatsModels有一个:

尝试将数据移动到Pandas DataFrame中,然后调用StatsModels tsa.seasonal_decompose。请参阅following example

代码语言:javascript
复制
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()

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

代码语言:javascript
复制
res.resid
res.seasonal
res.trend

我希望这能帮到你!

票数 17
EN

Stack Overflow用户

发布于 2017-11-20 12:52:24

您还可以使用rpy2从python中调用R

代码语言:javascript
复制
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 seen here的参数,但可以将任何句号更改为下划线,例如,上面函数中的位置参数是s_window,但在上面的链接中它是s.window。此外,我在this存储库中找到了上面的一些代码。

票数 1
EN

Stack Overflow用户

发布于 2016-03-03 04:34:28

另一个python选项是seasonal包(PyPIgithub)。它类似于StatsModels seasonal_decompose,还可以估计数据的周期性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26470570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档