尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

SARIMA算法

SARIMA算法
📅 发布时间:2026/6/19 15:03:49

SARIMA模型

SARIMA模型,全称为季节性自回归积分滑动平均模型(Seasonal Autoregressive Integrated Moving Average Model),是时间序列分析中的一种重要模型,用于处理具有明显季节性特征的数据。它在ARIMA模型的基础上,增加了季节性因素的考量,使得模型能够更好地捕捉和预测季节性变化的时间序列数据。

 

模型结构

SARIMA模型通过引入季节性参数来扩展ARIMA模型,其形式通常表示为SARIMA(p,d,q)(P,D,Q)s,其中:

  • p:非季节性自回归项的阶数。

  • d:非季节性差分次数。

  • q:非季节性移动平均项的阶数。

  • P:季节性自回归项的阶数。

  • D:季节性差分次数。

  • Q:季节性移动平均项的阶数。

  • s:季节周期的长度。

 

在实际应用中,SARIMA模型可以用于各种季节性数据的预测,如月度销售数据、季度经济指标、年度气象数据等。通过对历史数据的季节性模式进行学习,SARIMA模型能够预测未来某一时期内的数据走势。

 

statsmodels 中 SARIMAX 算法的各个参数:

模型阶数参数 (核心参数)

非季节性部分 (p, d, q)

  • order (tuple, 格式为 (p, d, q)): 定义模型的主(非季节性)部分。

    • p (AR - 自回归阶数): 表示当前值用过去多少期的值来进行回归。例如 p=1 表示 Y_t 与 Y_{t-1} 相关。

    • d (I - 积分阶数): 为了使序列变得平稳而进行的差分次数。d=1 表示对原始数据做一阶差分。

    • q (MA - 移动平均阶数): 表示当前误差项用过去多少期的误差项来进行回归。例如 q=1 表示当前误差与上一期的误差相关。

季节性部分 (P, D, Q, s)

  • seasonal_order (tuple, 格式为 (P, D, Q, s)): 定义模型的季节性部分。

    • P (季节性自回归阶数): 类似于 p,但是是针对季节周期的滞后项。例如 s=12(月度数据),P=1 表示 Y_t 与 Y_{t-12} 相关。

    • D (季节性差分阶数): 类似于 d,是为了消除季节性不平稳而进行的季节性差分次数。例如 D=1 和 s=12 表示进行 (Y_t - Y_{t-12})一阶季节性差分。

    • Q (季节性移动平均阶数): 类似于 q,是针对季节性周期的误差滞后项。

    • s (季节周期长度): 这是最关键的一个参数,定义了数据的季节性周期。

      • 月度数据且有年度季节性: s=12

      • 季度数据: s=4

      • 每周数据(每天一个观测值)且有周度季节性: s=7

      • 每小时数据且有日度季节性: s=24

示例: 一个常见的用于月度数据的模型是 SARIMAX(order=(1,1,1), seasonal_order=(1,1,1,12))。

 

模型设定参数

这些参数用于引入额外的信息或改变模型的默认形式。

  • exog (array_like, 可选): 外生变量。这是一个包含一个或多个时间序列的数组,这些序列被假设为对因变量 endog 有影响,但不受其影响(即它们是“给定的”或“预定的”)。例如,在预测销售额时,广告支出、节假日指标等可以作为外生变量。

  • trend (str {'n', 'c', 't', 'ct'}, 默认为 'c'): 控制模型中的确定性趋势。

    • 'n' 或 'nc': 无常数项,无趋势。

    • 'c': 包含常数项(即截距)。

    • 't': 只包含线性时间趋势项。

    • 'ct': 同时包含常数项和线性时间趋势项。

  • enforce_stationarity (bool, 默认为 True): 在模型估计前,是否对 AR 参数进行约束,以确保生成的过程是平稳的。通常建议保持为 True。

  • enforce_invertibility (bool, 默认为 True): 在模型估计前,是否对 MA 参数进行约束,以确保过程是可逆的。通常建议保持为 True,因为它能保证 MA 多项式收敛,使模型更稳定。

  • measurement_error (bool, 默认为 False): 是否假设因变量 endog 存在测量误差。如果为 True,模型会在状态空间表示中添加一个误差项。

  • time_varying_regression (bool, 默认为 False): 是否允许外生变量的回归系数随时间变化。如果为 True,模型会变得非常灵活但也更复杂。

  • mle_regression (bool, 默认为 True): 是否使用最大似然估计 (MLE) 来同时估计所有参数(包括回归系数和 ARIMA 参数)。如果为 False,则会在估计 ARIMA 参数之前,先使用回归从因变量中移除外生变量的影响(即使用 GLS 回归)。

  • simple_differencing (bool, 默认为 False): 是否使用简单差分。如果为 True,模型会在估计前对数据进行差分,然后对差分后的数据建模。如果为 False(默认),差分将被纳入状态空间模型中进行整体估计。通常保持默认的 False 即可,尤其是在有缺失值的情况下。

  • hamilton_representation (bool, 默认为 False): 是否使用 Hamilton 表示法来处理 ARMA 过程。通常不需要更改。

  • concentrate_scale (bool, 默认为 False): 是否在似然函数中集中尺度参数(方差)。这可以略微提高数值优化的效率。

 

估计方法参数

这些参数传递给 fit() 方法,用于控制模型的估计过程。

  • disp (bool, 默认为 True): 是否在迭代过程中输出收敛信息。

  • maxiter (int, 默认为 50): 优化算法的最大迭代次数。如果模型难以收敛,可以尝试增加这个值(例如 maxiter=200)。

  • method (str): 用于估计的优化算法。通常是 'lbfgs'(默认)、'nm'(Nelder-Mead 单纯形法)、'powell' 等。如果默认方法不收敛,可以尝试其他方法。

  • start_params (array_like, 可选): 参数的初始值。对于复杂模型,提供好的初始值可以帮助优化算法找到全局最优解,避免陷入局部最优。

  • globs (dict, 可选): 全局变量,用于高级定制。

  • iprint (int): 控制优化输出的详细程度(-1 到 2),值越大输出越详细。

  • ftol (float): 收敛的相对误差目标。

  • gtol (float): 收敛的梯度目标。

  • kappa (float): 用于算法计算。

import statsmodels.api as sm
import pandas as pd# 加载数据
data = sm.datasets.co2.load_pandas()
y = data.data
# 处理缺失值:简单使用前向填充
y = y['co2'].resample('W').mean().ffill()# 定义模型
# 非季节性部分: (p=1, d=1, q=1)
# 季节性部分: (P=1, D=1, Q=1, s=52) 因为现在是周数据,假设年度周期为52周
model = sm.tsa.SARIMAX(y,order=(1, 1, 1),seasonal_order=(1, 1, 1, 52),trend='c',               # 包含常数项enforce_stationarity=True,enforce_invertibility=True)# 估计模型
results = model.fit(disp=False,    # 不输出迭代信息maxiter=200)    # 增加最大迭代次数# 查看结果摘要
print(results.summary())# 进行预测
forecast = results.get_forecast(steps=52)

 

相关新闻

  • Gitee推出革命性MCP Server:AI深度参与开发全流程 开启智能协作新时代
  • 取证 - voasem
  • 【SPIE独立出版|连续多年EI稳定检索】第七届地球科学与遥感测绘国际学术会议(GRSM 2025)

最新新闻

  • 2026 年 6 月最新无锡同城购宠评分榜实测|7 家正规猫舍犬舍横向测评,附近实体门店避坑全攻略 - 吉林同城获客
  • 广州租办公室哪里好?万博德舜大厦A塔居首,2026年6月四大商务区深度横评 - 速递信息
  • 嵌入式GUI开发:emWin LISTVIEW控件从入门到精通
  • 2026深圳龙岗宝安龙华黄金回收实测 多轮对比实测优选 - 逸程
  • 2026上海钻石回收7家机构对比测评 本土标杆机构推荐 - 薛定谔的梨花猫
  • Flutter PullToRefresh与NestedScrollView集成深度解析:解决复杂滚动场景的终极指南

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号