statsmodels 笔记:seasonal_decompose 时间序列分解

本文介绍了如何利用statsmodels库中的seasonal_decompose函数,通过滑动平均法对时间序列数据进行分解,包括季节性、趋势和残差的识别。通过实例演示了如何对1维数组进行分解,并详细解释了关键参数如model、filt和period的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 使用方法

statsmodels.tsa.seasonal.seasonal_decompose(
    x, 
    model='additive', 
    filt=None, 
    period=None, 
    two_sided=True, 
    extrapolate_trend=0)

使用滑动平均的方法进行时间序列分解

注:这只是一个最为简单的分解方法

        通过首先通过对数据应用卷积滤波器估计趋势来获得结果。 然后从序列中删除趋势,每个时期的去趋势序列的平均值是返回的季节性分量。

2 参数说明

x

时间序列。

如果是 两维的,则单个Series应该在一列中。

x 必须包含 2 个完整的周期。

model

{“additive”, “multiplicative”}

时间序列分解的类型(加和 or 求乘积)

参数名称缩写是允许的

filt

过滤掉季节性分量的过滤系数。

滤波中使用的具体移动平均法(单边or两侧)由 two_sided确定。

(个人理解是,计算滑动平均时,滑动平均阶数内各点所乘的那个系数)

period

时间序列的周期。

如果 x 不是 pandas 对象或 x 的索引没有频率,则必须使用。

如果 x 是具有时间序列索引的 pandas 对象,则覆盖 x 的默认周期。

two_sided

滤波中使用的移动平均法。

如果为 True(默认),则使用 filt 计算居中移动平均值。

如果为 False,则滤波器系数filt仅适用于过去的值。

extrapolate_trend

        如果设置为 > 0,考虑到这么多 (+1) 个最近点,移动平均(卷积)产生的趋势是在两端外推的线性最小二乘法(如果 two_lateral 为 False,则为单侧外推)。

         如果设置为“freq”,则使用最近点。

         设置此参数会导致趋势或残差组件中没有 NaN 值。

返回内容:有季节性,趋势和残差三个属性的对象

3 使用方法

假设我们现在有一个1*744维的ndarray:

import matplotlib.pyplot as plt 
plt.figure(figsize=(30,5))
plt.plot(west_tensor[0,:])

 现在我们使用seasonal_decompose:

import statsmodels.api as sm

res = sm.tsa.seasonal_decompose(west_tensor[0,:],
                                period=48,
                                model="add")

rcParams['figure.figsize'] = 30, 15
fig=res.plot()
fig.savefig('decompose_add.png')

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值