Python中的时间序列分解

时间序列分解是一种技术,它将时间序列分解为几个部分,每个部分代表一个潜在的模式类别、趋势、季节性和噪声。在本教程中,我们将向您展示如何使用Python自动分解时间序列。

首先,我们来讨论一下时间序列的组成部分:

  1. 季节性:描述时间序列中的周期性信号。
  2. 趋势:描述时间序列是随时间递减、不变还是递增。
  3. 噪音:描述从时间序列中分离出季节性和趋势后剩下的东西。

换句话说,数据的可变性是模型无法解释的。

对于本例,我们将使用来自Kaggle的航空乘客数据。

import pandas as pd
import numpy as np
from statsmodels.tsa.seasonal import seasonal_decompose
 
#https://www.kaggle.com/rakannimer/air-passengers
df=pd.read_csv(‘AirPassengers.csv’)
 
df.head()

首先,我们需要将Month列设置为索引,并将其转换为Datetime对象。

df.set_index('Month',inplace=True)
df.index=pd.to_datetime(df.index)

#drop null values
df.dropna(inplace=True)
df.plot()

分解

我们将使用python的statmodels函数seasonal_decomposition。

result=seasonal_decompose(df['#Passengers'], model='multiplicable', period=12)

在季节性分解中,我们必须设置模型。我们可以将模型设为加的或乘的。选择正确模型的经验法则是,在我们的图中查看趋势和季节性变化是否在一段时间内相对恒定,换句话说,是线性的。如果是,那么我们将选择加性模型。否则,如果趋势和季节性变化随时间增加或减少,那么我们使用乘法模型。

我们这里的数据是按月汇总的。我们要分析的周期是按年的所以我们把周期设为12。

我们可以得到每个组件如下:

result.seasonal.plot()

result.trend.plot()

同样,我们可以一次绘制每个组件

result.plot()

总结

通常,在查看时间序列数据时,很难手动提取趋势或识别季节性。幸运的是,我们可以自动分解时间序列,并帮助我们更清楚地了解组件,因为如果我们从数据中删除季节性,分析趋势会更容易,反之亦然。

作者:Billy Bonaros

deephub翻译组

  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列分解是一种将时间序列拆分为潜在模式、趋势、季节性和噪声的技术。在Python,有几种方法可以进行时间序列分解。一种常用的方法是使用statsmodels库的seasonal_decompose函数。该函数可以自动进行时间序列分解,并提供趋势、季节性和残差等组成部分的可视化。***测。使用Prophet库,您可以通过简单的代码实现时间序列分解和预测,并进行可视化展示。您可以参考引用和提到的教程和示例来了解更多关于在Python进行时间序列分解的方法和技巧。如果您需要更详细的信息,您可以访问引用提供的链接,该链接提供了一个关于时间序列预测和分解的详细指南和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [干货 :手把手教你用Python进行时间序列分解和预测](https://blog.csdn.net/Tw6cy6uKyDea86Z/article/details/111350647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python时间序列分解](https://blog.csdn.net/m0_46510245/article/details/115997686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值