Python 官方文档:入门教程 => 点击学习
文章目录 一、模型简介1.1 加法分解模型1.2 乘法分解模型1.3 分析步骤 二、案例2.1 背景 & 数据 & python包2.2 分析过程 一、模型简介 1.1 加法
加法分解模型适用于随着时间推移趋势和季节性变化不断累加,并且随机波动比较稳定的时间序列数据。该模型假设原始时间序列由三个组成部分相加而成:
Y t + S t + R t Y_{t}+S_{t}+R_{t} Yt+St+Rt
其中,
乘法分解模型适用于随着时间推移趋势和季节性变化呈现出指数增长或衰减的时间序列数据。该模型假设原始时间序列由三个组成部分相乘而成:
Y t ∗ S t ∗ R t Y_{t}*S_{t}*R_{t} Yt∗St∗Rt
注: 在实际应用中,加法分解模型是比较常见的模型,可以使用线性回归、多项式回归等方法拟合趋势和季节性部分,而乘法分解模型则更适用于呈现出指数增长或衰减趋势的时间序列数据。
from statsmodels.tsa.seasonal import seasonal_decomposeresult = seasonal_decompose(x, # 要分解的时间序列数据model='additive', # 分解模型,可以是 'additive' (加法)或 'multiplicative'(乘法)filt=None, # 最小二乘滤波器系数period=None, # 时间序列的季节周期,如果未指定,则自动检测two_sided=True, # 是否使用双侧滤波器extrapolate_trend=0 # 在不充分观察到较长时间趋势的情况下,是否应该扩展趋势组件)
该函数返回一个 DecomposeResult 对象,其中包含分解出的趋势、季节性和残差成分等信息,可以通过下方代码来实现获取:
decomposition = seasonal_decompose(df['col_name'],freq=7)trend = decomposition.trend seasonality = decomposition.seasonal residual = decomposition.resid# 创建一个新的DataFrame来存储趋势、季节性和残差decomposed_df = pd.DataFrame({'Trend': trend, 'Seasonality': seasonality, 'Residual': residual})decomposed_df
加载相关库
import pandas as pdfrom statsmodels.tsa.seasonal import seasonal_decomposeimport seaborn as snsimport matplotlib.pyplot as pltimport matplotlib.ticker as ticker%matplotlib inline
读取数据
df = pd.read_csv('data.csv')
绘制销售曲线
# 设置绘图风格sns.set_style("whitegrid")# 设置画布大小、精度plt.figure(figsize = (16,4), dpi = 200)# 绘制曲线图ax = sns.lineplot(x='date', y='sales', data=df, color='blue', linewidth=1)# 解决X轴密集问题:https://blog.csdn.net/small__roc/article/details/126950537?spm=1001.2014.3001.5502ax.xaxis.set_major_locator(ticker.MultipleLocator(base=40)) # 添加标题和轴标签plt.title('Sales Curve')plt.xlabel('Date')plt.ylabel('Sales')# 显示图形plt.show()
周期确定
:饮料消费品线下销售一般会有:周末(或节假日)比工作日销量高、天气严热比冷寒销量高的特点,本文为了简化下模型,把周期设置为7天。
趋势分解
df.set_index("date",inplace=True)decomposition = seasonal_decompose(df['sales'],period=7)trend = decomposition.trend seasonality = decomposition.seasonal residual = decomposition.resid# 创建一个新的DataFrame来存储趋势、季节性和残差decomposed_df = pd.DataFrame({'Trend': trend, 'Seasonality': seasonality, 'Residual': residual})
绘制分解后的数据曲线
colors = ['red', 'orange', 'green']linestyles = ['-', '--', ':']linewidths = [1.5, 1.5, 1.5]markers = [None, 's', 'o']markersizes = [1, 1, 1]for i, col in enumerate(decomposed_df.columns): decomposed_df[col].plot( kind='line', color=colors[i], linestyle=linestyles[i], linewidth=linewidths[i], marker=markers[i], markersize = markersizes[i], figsize=(16, 4) )# 添加标题和轴标签plt.title('Decomposed Sales Curve')plt.xlabel('Date')plt.ylabel('Value')# 添加图例plt.legend(decomposed_df.columns)plt.show()
结果分析
:来源地址:https://blog.csdn.net/small__roc/article/details/129955759
--结束END--
本文标题: python 时间序列分解案例——加法分解seasonal_decompose
本文链接: https://www.lsjlt.com/news/421610.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0