当前位置: 首页 > news >正文

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

一、学习内容
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 模型,我们能够对带有季节性和周期性特征的时间序列数据进行长期预测。季节性分解帮助我们理解数据的组成部分,而基于周期性模式的模型能够提供准确的预测结果。

相关文章:

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

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

JavaScript ES6特性(var let const、function=>、增强表达赋值、类与对象)

一、var let const 1、var var明明定义在for里面的但是外部能够访问这个变量,说明var可以跨域访问。 2、let let明明定义在for里面的但是外部不能够访问这个变量,说明let不可以跨域访问。 3、const const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; fo…...

Paddle安装详解(CPU版本)

目录 1. 安装Python2. 安装paddle3. 验证3.1 初步验证3.2 将numpy版本从2.1.1降为2.0.13.3 再次验证1. 安装Python Python版本 C:\Users\james>python --version Python 3.12.62. 安装paddle 安装paddle及依赖库setuptools python -m pip install paddlepaddle==2.6.1 -…...

PHP即刻送达同城派送小程序系统

即刻送达,同城派送小程序系统让生活更便捷 🚀 瞬间连接,即刻送达的奇迹 你是否曾经因为等待快递而焦急万分?是否渴望有一种方式能让物品像魔法一样瞬间出现在你面前?现在,有了“即刻送达同城派送小程序系…...

RabbitMQ的Direct Exchange模式实现的消息发布案例

Producer生产者代码 import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;public class RabbitMQProducer {private final static String EXCHANGE_NAME "direct_message_exchange";privat…...

数据结构-二叉树-基础知识

数据结构-二叉树-基础知识 1.树1.1什么是树1.2基本概念子节点、父节点叶节点节点的度树的高度/深度节点的子孙、祖先 1.3树与非树1.4如何实现1.5实例 2.二叉树2.1什么是二叉树2.2特殊的二叉树满二叉树完全二叉树 2.3性质层数度节点 2.4存储结构 1.树 1.1什么是树 树型结构是一…...

wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升

昨天同事那边有个需求,就是要实现聊天功能,需要用到一个富文本编辑器,参考如下: 上面的这个效果图是博客园的评论输入框 最终使用wangEditor编辑器实现的效果如下: 只保留了个别的菜单: 默认模式的wangE…...

9.11.

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), speecher(new QTextToSpeech(this)) {//设置时钟ui->setupUi(this);startTimer(1000);//文本框label居中对齐ui->label_2->setAlignment(Qt::AlignCenter);connect(this,&Widget::my_sign…...

【GeekBand】C++设计模式笔记1_介绍

课程目标 理解松耦合设计思想掌握面向对象设计原则掌握重构技法改善设计掌握GOF核心设计模式 什么是设计模式 目标:复用,以不变应万变 GOF设计模式 从面向对象谈起 深入理解面向对象 向下:深入理解三大面向对象机制 封装:隐藏…...

MySQL 数据库:原理、应用与发展

摘要:本文深入探讨了 MySQL 数据库相关内容。首先介绍了 MySQL 作为开源关系型数据库管理系统的显著特点,包括易用性、跨平台性、高性能、可扩展性、开源免费以及数据安全性等方面。接着详细阐述了其安装与配置过程,涵盖在不同操作系统上的安…...

7.2图像旋转

实验原理 在OpenCV中,图像旋转也是一种常见的几何变换,它可以用来调整图像的方向。图像旋转通常涉及绕着图像中心点旋转一定角度的操作。与图像平移类似,旋转也可以通过仿射变换来实现,但是旋转需要使用到旋转矩阵来定义旋转的角…...

学学vue-2

1.7 指令修饰符 keyup.enter:监听键盘回车事件,回车触发事件keyup.enter代码 v-model修饰符: v-model.trim:去首尾空格v-model.number:变数字(如果是数字的话,转变为数字) 事件名.…...

什么是 Grafana?

什么是 Grafana? Grafana 是一个功能强大的开源平台,用于创建、查看、查询和分析来自多个来源的数据。通过可视化仪表盘(Dashboard),它能够帮助用户监控实时数据、生成历史报告,甚至进行预测分析。Grafana…...

【Prompt Engineering:思维树 (ToT)、检索增强生成 (RAG)、自动推理并使用工具 (ART)】

思维树 (ToT) 对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。最近,Yao et el. (2023)(opens in a new tab) 提出了思维树(Tree of Thoughts,ToT)框架,该框架基于思维链提示进行了总…...

【习题】应用/元服务上架

判断题 1. 一个完整的发布软件包必须包含一个Profile文件。 A、正确(True) B、错误(False) 2. 编译打包的软件包存放在项目目录build > outputs > default下。 A、正确(True) B、错误(False) 单选题 1. 创建应用时,应用包名需要和在DevEco …...

性能测试的复习3-jmeter的断言、参数化、提取器

一、断言、参数化、提取器 需求: 提取查天气获取城市名请求的响应结果:城市对查天气获取城市名的响应结果进行响应断言和json断言对查天气获取城市名添加用户参数 1、步骤 查看天气获取城市名 json提取器(对响应结果提取、另一个接口请求…...

ORB-SLAM2关键点总结

1.ORB-SLAM2的总体框架是怎样的 ORB-SLAM2一共有三个线程,分别是Tracking、Local Mapping、Loop Closing线程,,其中Tracking负责完成关键点提取,并进行帧间匹配,同时初步选取关键帧;Local Mapping线程主要…...

拱式桥安全结构健康监测解决方案

拱式桥作为一种常见的桥梁结构,其拱形设计不仅美观,还具有较高的承载能力。然而,随着使用年限的增加和环境因素的影响,拱式桥的结构健康和稳定需要持续监测和评估。自动化监测技术的应用,可以提升拱式桥的监测效率和准…...

windows和linux安装mysql5.7.31保姆级教程

一,资源如下,里面有windows和linux版的安装软件,内含Visual C2013中文版windows系统插件 windows资源地址:https://download.csdn.net/download/l1o3v1e4ding/89725150 linux(centos)资源地址:…...

如何使用 PowerShell 脚本来自动化 Windows 开发流程的教程(包括理论介绍和实践示例)

PowerShell 是一种强大的任务自动化和配置管理框架,它为系统管理员和开发人员提供了管理 Windows 操作系统和应用程序的能力。下面是一个关于如何使用 PowerShell 脚本来自动化 Windows 开发流程的教程,包括理论介绍和实践示例。 第一部分:理…...

【Django 实验三】个人主页开发实战

【Django 实验三】个人主页开发实战 作者:刘静怡 | 学号:F23016208 | 完成日期:2026年3月29日 目录 环境准备项目创建数据模型设计视图函数编写模板系统Admin 后台配置页面美化功能完善总结 一、环境准备 1.1 环境要求 Python: 3.10Django…...

51单片机之按键控制RGB灯

51单片机之按键控制RGB灯描述:利用KEIL5编程,使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件:电路仿真图(未运行)电路仿真图(运行)程序:主要是按键消抖,机械按键按下…...

Minecraft Masa Mods汉化包终极指南:三分钟告别英文界面困扰

Minecraft Masa Mods汉化包终极指南:三分钟告别英文界面困扰 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Masa Mods系列模组的英文界面而烦恼吗?每次打…...

【限时开放】CPython核心团队亲授:2026 Python原生AOT编译接入Checklist(含12个预编译hook校验点)

第一章:Python原生AOT编译方案2026的演进背景与核心价值近年来,Python在云原生、边缘计算与实时系统场景中的部署瓶颈日益凸显:CPython解释器的启动延迟、内存开销及运行时JIT缺失,严重制约了其在低延迟服务、嵌入式Python模块和安…...

完整指南:在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧

完整指南:在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验…...

Python AOT编译迎来分水岭:2026年3大工业级工具实测对比(启动提速8.7×,内存降63%,兼容CPython 3.13+)

第一章:Python AOT编译的范式跃迁与工业落地元年定义长期以来,Python 以解释执行和动态特性见长,但其运行时开销、启动延迟与内存 footprint 成为云原生服务、边缘设备与实时系统规模化部署的关键瓶颈。2024 年,随着 Nuitka 14.x、…...

LightOnOCR-2-1B部署指南:快速搭建你的私有OCR识别服务

LightOnOCR-2-1B部署指南:快速搭建你的私有OCR识别服务 1. 认识LightOnOCR-2-1B 你是否遇到过需要从大量图片中提取文字的场景?比如扫描的合同、拍照的会议记录,或者历史档案数字化?传统的OCR解决方案要么识别准确率不高&#x…...

MinerU 2.5-1.2B新手教程:无需深度学习基础,快速上手PDF提取

MinerU 2.5-1.2B新手教程:无需深度学习基础,快速上手PDF提取 1. 引言:为什么选择MinerU? PDF文档是我们日常工作和学习中常见的文件格式,但要从PDF中提取内容却常常让人头疼。特别是遇到学术论文、技术报告这类包含复…...

通达信顶底背离副图指标源码解析与实战应用

1. 通达信顶底背离副图指标入门指南 第一次接触顶底背离指标时,我也被那些复杂的线条和公式搞得一头雾水。后来才发现,这其实是技术分析中最实用的趋势反转信号工具之一。简单来说,顶底背离就是当价格创新高或新低时,指标却没有同…...

小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南

小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南 你是不是也刷到过那些用AI生成的、细节超棒的人像图片,心里痒痒的,但又觉得那些工具太复杂,光是安装部署就劝退了?别担心,今天要介绍的这个工具&am…...