首页 > 解决方案 > 分解趋势、季节性和剩余时间序列元素的问题

问题描述

我是时间序列分析的新手,这可能是一个愚蠢的问题。

我正在尝试生成趋势、季节性和剩余时间序列元素,但是,我的时间戳索引实际上是字符串(比如说“window1”、“window2”、“window3”)。现在,当我尝试应用时seasonal_decompose(data, model='multiplicative'),它返回一个错误,因为 Index' 对象没有属性 'inferred_freq',这是可以理解的。

但是,如何通过将字符串保留为时间序列索引来解决这个问题?

标签: dataframetime-series

解决方案


基本上在这里你需要指定freq参数。

假设您有以下数据集

s = pd.Series([102,200,322,420], index=['window1', 'window2', 'window3','window4'])
s
>>>window1    102
   window2    200
   window3    322
   window4    420
   dtype: int64

现在指定freq参数,在这种情况下我使用 freq=1

plt.style.use('default')
plt.figure(figsize = (16,8))
import statsmodels.api as sm
sm.tsa.seasonal_decompose(s.values,freq=1).plot()
result = sm.tsa.stattools.adfuller(s,maxlag=1)
plt.show()

我不允许发布图片,但我希望这段代码能解决你的问题。另外这里maxlag默认情况下我的数据集会出错,因此我使用了maxlag=1。如果你不确定它的值,请使用默认值maxlag


推荐阅读