2024-05-15 21:31:18 发布
网友
我在用Python做R上的STL函数
R命令是
fit <- stl(elecequip, s.window=5) plot(fit)
在Python中如何实现这一点?我调查了statmodels.tsa具有一些时间序列分析功能,但我可以在文档中特别找到“黄土对时间序列的季节分解”。类似地,在Python.org上也有一个名为timeseries 0.5.0的库,但是它没有文档,它的主页向下看。我知道rpy2有一个使用包装器的选项,但是我不知道如何使用包装器。
谢谢。
我也遇到过类似的问题,我正在努力寻找最好的出路。
Here is a github repo for an STL decomposition based on the Loess procedure。它基于this paper提供的原始fortran代码。它实际上只是原始Fortran代码的一个python包装器,所以您知道它很可能工作得很好,而且不会出错。
如果您希望以Python为中心,并且愿意使用稍微简单一点的分解例程,StatsModels有一个:
尝试将数据移动到Pandas数据帧中,然后调用StatsModelstsa.seasonal_decompose。请参见following example:
tsa.seasonal_decompose
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()
然后,可以从以下位置恢复分解的各个组件:
res.resid res.seasonal res.trend
我希望这有帮助!
也可以使用rpy2从python调用R
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 seenhere的参数,但可以将任何句点改为下划线,例如,上面函数中的位置参数是súu window,但在上面的链接中是s.window。另外,我在this存储库中找到了上面的一些代码。
另一个python选项是seasonal包(PyPI,github)。它类似于StatsModels的季节分解,也会估计数据的周期性。
seasonal
我也遇到过类似的问题,我正在努力寻找最好的出路。
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:然后,可以从以下位置恢复分解的各个组件:
我希望这有帮助!
也可以使用rpy2从python调用R
上面的函数假设序列具有日期时间索引。它返回一个包含各个组件的数据帧,然后您可以使用自己喜爱的图形库绘制这些组件的图形。
您可以传递stl seenhere的参数,但可以将任何句点改为下划线,例如,上面函数中的位置参数是súu window,但在上面的链接中是s.window。另外,我在this存储库中找到了上面的一些代码。
另一个python选项是
seasonal
包(PyPI,github)。它类似于StatsModels的季节分解,也会估计数据的周期性。相关问题 更多 >
编程相关推荐