用Python实现时间序列模型实战——Day 18: 时间序列中的季节性与周期性预测

news2024/9/21 13:46:16
一、学习内容
1. 季节性调整与周期性预测

季节性调整 是在时间序列分析中常用的技术,旨在去除数据中因季节性波动导致的周期性变化,使数据更易于解释和预测。通常,我们可以使用季节性分解方法来分离时间序列中的趋势、季节性和随机成分。

周期性预测 主要关注数据中的周期性模式,例如每年、每月或每季度发生的重复行为。季节性模式通常可以通过 SARIMA (季节性 ARIMA) 或 Holt-Winters 等模型进行建模。

2. 基于周期性模式的长期预测方法

基于周期性模式的预测方法,通常使用模型如 SARIMA 或 Holt-Winters 模型。这些模型可以捕捉时间序列中的季节性模式,并根据历史周期预测未来的值。

SARIMA 模型 的季节性部分通过在标准 ARIMA 模型中增加季节性自回归和移动平均成分来处理季节性波动。

Holt-Winters 模型 能够同时处理趋势、季节性和残差成分,它是非常经典的时间序列预测模型。

二、实战案例

我们将使用 Python 的 statsmodelsholtwinters 模型对带有季节性和周期性的时间序列数据进行预测。

1. 数据生成

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.holtwinters import ExponentialSmoothing

# 生成模拟的时间序列数据(带有季节性和趋势)
np.random.seed(42)
n_obs = 200
time = pd.date_range(start='2000-01-01', periods=n_obs, freq='M')
trend = 0.05 * np.arange(n_obs)  # 线性趋势
seasonal = 10 * np.sin(2 * np.pi * time.month / 12)  # 季节性
noise = np.random.normal(0, 1, n_obs)
data = trend + seasonal + noise

# 创建数据框
ts_data = pd.DataFrame({'Date': time, 'Value': data})
ts_data.set_index('Date', inplace=True)

# 绘制时间序列
plt.figure(figsize=(10, 6))
plt.plot(ts_data['Value'], label='Original Data')
plt.title('Simulated Time Series with Seasonality and Trend')
plt.legend()
plt.show()

代码解释:

  • 我们生成了一个带有线性趋势和季节性波动的模拟时间序列。每个月的数据受到季节性波动(周期性为 12 个月)的影响,并带有噪声干扰。

结果输出:

2. 季节性分解
# 对时间序列进行季节性分解
result = seasonal_decompose(ts_data['Value'], model='additive', period=12)
result.plot()
plt.show()

代码解释:

  • 使用 seasonal_decompose 对时间序列进行分解,将其分为趋势、季节性和残差三部分。分解后的结果可以帮助我们理解时间序列的组成部分。

结果输出:

3. SARIMA 模型预测
# 使用 SARIMA 模型进行季节性预测
sarima_model = SARIMAX(ts_data['Value'], order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
sarima_fitted = sarima_model.fit()

# 进行未来24个月的预测
sarima_forecast = sarima_fitted.forecast(steps=24)

# 绘制SARIMA预测结果
plt.figure(figsize=(10, 6))
plt.plot(ts_data.index, ts_data['Value'], label='Original Data')
plt.plot(pd.date_range(start=ts_data.index[-1], periods=24, freq='M'), sarima_forecast, label='SARIMA Forecast')
plt.title('SARIMA Model Forecast')
plt.legend()
plt.show()

代码解释:

  • 我们使用 SARIMA 模型对数据进行建模,并预测未来 24 个月的值。SARIMA 模型能够捕捉时间序列中的趋势和季节性模式。

结果输出:

4. Holt-Winters 模型预测
# 使用 Holt-Winters 模型进行预测
hw_model = ExponentialSmoothing(ts_data['Value'], trend='add', seasonal='add', seasonal_periods=12).fit()
hw_forecast = hw_model.forecast(steps=24)

# 绘制 Holt-Winters 预测结果
plt.figure(figsize=(10, 6))
plt.plot(ts_data.index, ts_data['Value'], label='Original Data')
plt.plot(pd.date_range(start=ts_data.index[-1], periods=24, freq='M'), hw_forecast, label='Holt-Winters Forecast')
plt.title('Holt-Winters Model Forecast')
plt.legend()
plt.show()

代码解释:

  • 使用 Holt-Winters 模型进行建模,预测未来 24 个月的趋势和季节性。Holt-Winters 模型同样适合处理含有季节性和趋势的时间序列。

结果输出:

三、结果分析
1. 季节性分解结果
  • 分解图展示了时间序列中的趋势、季节性和随机波动。趋势成分显示了时间序列的线性增长,季节性成分显示了每年的周期性波动。
2. SARIMA 模型预测
  • SARIMA 模型的预测结果展示了未来 24 个月的预测值,预测曲线捕捉了季节性波动,并跟随原始数据的趋势变化。
3. Holt-Winters 模型预测
  • Holt-Winters 模型同样能够捕捉季节性和趋势,预测结果展示了与 SARIMA 相似的趋势和周期性变化。
四、总结

通过 SARIMA 和 Holt-Winters 模型,我们能够对带有季节性和周期性特征的时间序列数据进行长期预测。季节性分解帮助我们理解数据的组成部分,而基于周期性模式的模型能够提供准确的预测结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA实现压缩包解压兼容Windows系统和MacOs

目标:JAVA实现压缩包解压获取图片素材 问题:Windows系统和MacOs压缩出来的zip内容有区别 MacOs会多出来 以及本身一个文件夹 而windows则不会。为了解决这个问题。兼容mac的压缩包增加一层过滤 要知道 ZipInputStream 可以读取 ZIP 文件中的条目&…

KTV 营业明细+员工提成—SAAS本地化及未来之窗行业应用跨平台架构

一、ktv 绩效必要性 1. 激励员工积极性:提成制度能够直接将员工的努力和收入挂钩,促使员工更加积极主动地工作,以获取更高的收入。 2. 提高工作效率和业绩:为了获得更多提成,员工会努力提高工作效率,增加业…

别中招!从“超低利率“到“包过承诺“,揭秘贷款几大陷阱!

今天咱们聊聊贷款时得防的那些坑,免得一不小心就被套路了。你以为找了个靠谱帮手,结果却是步步陷阱,咱们一起来揭秘这些招数,也给大伙儿提个醒。 第一招,低利率诱惑。正常普通信用贷款服务费是2-15%个点内,…

第十七节:学习Hutool上传文件(自学Spring boot 3.x的第四天)

这节记录下如何使用Hutool库上传本地的文件到服务器端(因为是练习,所以是本地端)。 第一步:引入Hutool库最新版本,通过maven方式。(最新版本需去maven仓库查询) 第二步:编写一个post…

Django路由访问及查询数据

1、在应用模块下,创建urls文件,用来存放访问路由 2、在项目总访问url里面注册路由 3、在view文件里,定义方法参数 from django.core import serializers from django.db import connection from django.http import HttpResponse, JsonRespo…

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False 在使用 DedeCMS(一个常用的内容管理系统)时,如果遇到“创建或修改目录:/var/www/html/cp 失败&…

背靠大众,「半价Model 3」卖爆,小鹏走出低谷

‍作者 |老缅 编辑 |德新 各路消息都在显示,小鹏MONA M03爆单了。 总裁王凤英在庆功宴上喝下了人生第一杯酒。 小鹏MONA产品线负责人透露,上市后的两天内,MONA全国的试驾车累计开了超过10万公里。 在上市后的48小时内,M03获得…

华为OD机试 - 周末爬山 - 广度优先搜索BFS(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

Mysql基础——DML

数据操作语言(DML,Data Manipulation Language) DML语句用于对数据库中的数据进行操作(增删改查数据),主要包括: INSERT:向表中插入数据,例如 INSERT INTO table_name …

超简单,3步训练Flux Lora模型,附整合包!

超简单,3步训练Flux Lora模型,附整合包! 🎉 12G显存也能炼Flux Lora模型?!3步速成,小白也能轻松上手! 兄弟们!AI绘画领域又迎来了一波革命!Flux Lora模型训练…

2024中国500强企业高峰论坛安然大健康分论坛圆满举办!

一场巅峰聚首的风云际会,一次引领未来的行业盛宴。 9月10日至11日,由中国企业联合会、中国企业家协会主办的2024中国500强企业高峰论坛在天津举行,本届高峰论坛以“向‘新’而行、打造更多世界一流企业”为主题,汇集业内知名企业…

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)

简介 随着生成式人工智能的兴起,传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求,今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight,利用生成式AI的能力来加速业务决策,从而提高业务生产力。…

【Qt应用】Qt编写简易登录注册界面

目录 引言 一、准备工作 二、设计思路 2.1 登录 2.2 注册 三、登录功能 3.1 创建账号与密码输入框 3.2 设置密码输入框格式 3.2.1 初始 3.2.2 创建一个显示隐藏按钮 3.2.3 信号与槽函数 3.3 创建登录按钮 3.4 创建可选功能 四、注册功能 4.1 账号和密码输入…

【Go】深入探索Go语言中运算符

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

路基边坡自动化监测解决方案

物联网云平台 平台登录--用户登录 输入网址:http://yun.sj2000.org.cn,进入系统登录界面,输入用户名及密码后进入系统平台。 设备详情--设备概览 登录系统平台后,用户可在界面左侧看到系统项目栏和子项目选项,登陆的…

【Python爬虫系列】_018.多线程与多进程

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

3. 进阶指南:自定义 Prompt 提升大模型解题能力

怎么判断 Prompt 的好坏,有什么问题有着标准答案么? 答:让大模型求解数学问题。 李宏毅老师的 HW4 正好提到了有关数学问题的 Prompt,所以我决定中间插一篇这样的文章。通过本文你将: 了解各种 Prompt 如何影响大型语言…

基于asp.net电子邮件系统设计与实现

1 引言 1.1 电子邮件介绍 电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。通过连接全…

个人用户如何有效利用固态硬盘数据恢复工具

固态硬盘相较于机械硬盘来说更为小巧,所以很多人选择使用固态硬盘来进行数据的存储。这些存储设备都可能会遇到一些意外导致的数据丢失情况。好在现在的科技比较发达,这次我们来聊一聊有哪些固态硬盘数据恢复工具可以解决这个问题吧。 1.福晰数据恢复 …

Sentinel 高级

一、请求限流 1.介绍 处理并发量大时资源耗尽问题 Sentinel的请求限流功能主要体现在对QPS(每秒查询率)和线程数的控制上。当某个API接口或服务的请求量达到设定的QPS阈值时,Sentinel会触发限流规则,对这些超出阈值的请求进行限…