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

基于自回归整合滑动平均模型(ARIMA)的时间序列预测

基于自回归整合滑动平均模型(ARIMA)的时间序列预测

最近在折腾时间序列预测的项目,发现ARIMA这玩意儿虽然老派但确实能打。今天咱们就抛开教科书上的复杂公式,用实际代码和通俗解释聊聊怎么用它做预测。先扔个结论:ARIMA的核心就是三句话——看历史数据、算差异、纠误差。

先搞个模拟数据试试水。假设我们有个每周销售额的波动数据:

import numpy as np import pandas as pd np.random.seed(42) base = np.linspace(0, 20, 100) trend = 0.5 * np.arange(100) seasonality = 5 * np.sin(2 * np.pi * np.arange(100)/7) noise = np.random.normal(0, 1, 100) ts_data = pd.Series(base + trend + seasonality + noise, index=pd.date_range('2020-01-01', periods=100, freq='D'))

这时候直接上ARIMA肯定翻车,得先看数据是否平稳。划重点:ADF检验才是亲爹:

from statsmodels.tsa.stattools import adfuller result = adfuller(ts_data) print(f'ADF统计量: {result[0]:.3f}') print(f'p值: {result[1]:.3f}') # 输出大概率大于0.05,说明不平稳

如果p值大于0.05,直接进入差分环节。这里有个骚操作——动态差分直到平稳:

diff_count = 0 current_data = ts_data.copy() while True: result = adfuller(current_data.dropna()) if result[1] < 0.05: break current_data = current_data.diff().dropna() diff_count += 1 print(f'需要差分次数: {diff_count}') # 通常1-2次就能搞定

接下来要确定AR和MA的阶数。别被ACF/PACF图搞懵,实战中直接让auto_arima干活更省事:

from pmdarima import auto_arima model = auto_arima(ts_data, seasonal=False, trace=True) # 输出里找AIC最小的组合,比如(2,1,1)

拿到最佳参数后正式建模:

from statsmodels.tsa.arima.model import ARIMA model = ARIMA(ts_data, order=(2,1,1)) results = model.fit() # 重点看系数P值是否小于0.05,否则考虑删减参数 print(results.summary())

预测阶段注意要包含历史数据的类型:

forecast = results.get_forecast(steps=7) # 别直接用predict,要带置信区间 print(forecast.predicted_mean)

踩过几个坑特别提醒:

  1. 遇到周期性数据记得用SARIMA(比如销售数据周循环)
  2. 预测结果出现直线下滑?检查是否差分过度
  3. 样本量小于50条的建议换模型

最后来个可视化收尾:

import matplotlib.pyplot as plt ts_data.plot(label='历史数据') forecast.predicted_mean.plot(label='预测', color='red') plt.fill_between(forecast.conf_int().index, forecast.conf_int()['lower close'], forecast.conf_int()['upper close'], color='pink', alpha=0.3) plt.legend()

ARIMA就像老中医把脉,数据平稳了、参数调准了,预测效果自然就上来了。下次遇到股票价格、服务器负载这些时间序列,不妨先拿它试试手。

http://www.jsqmd.com/news/225942/

相关文章:

  • 5个开源翻译模型部署推荐:HY-MT1.5镜像免配置,一键启动多语言服务
  • Hunyuan-HY-MT1.5实战指南:民族语言翻译支持部署步骤详解
  • 基因编码设计(关键!)
  • JBoltAI需求分析大师:AI如何简化文档工作?
  • HY-MT1.5-7B与Llama3翻译能力对比:混合语言场景谁更强?部署案例
  • Hunyuan大模型部署痛点解决:1.8B版本显存占用仅4GB
  • Qwen3-VL-WEBUI教学实践:计算机教室秒变AI实验室
  • HY-MT1.5-1.8B嵌入式部署:无人机多语言播报系统开发实录
  • HY-MT1.5新闻翻译应用:多语种内容发布系统搭建步骤
  • HY-MT1.5-1.8B GPU适配难?4090D单卡部署保姆级图文教程
  • 向量空间 AI 平台:让团队快速掌握 AI 开发能力
  • HY-MT1.5-1.8B成本优化案例:量化后低功耗设备全天候运行
  • HY-MT1.5金融文档翻译实战:格式化输出部署完整指南
  • 2026年全球化AI战略:HY-MT1.5开源翻译模型部署全景指南
  • 5个开源翻译模型部署推荐:Hunyuan HY-MT1.5免配置一键启动
  • 5个多模态模型对比:Qwen3-VL云端实测2小时搞定
  • JBoltAI4智能数据中心:企业AI数据处理新解读
  • HY-MT1.5-1.8B性能测试:小模型的大作为全解析
  • Hunyuan翻译模型如何处理混合语言?上下文理解实战教程
  • HY-MT1.5-1.8B性价比实战指南:边缘设备部署,成本降低70%
  • Qwen3-VL低成本学习方案:学生认证送5小时GPU时长
  • HY-MT1.5如何提升翻译一致性?格式化输出实战优化
  • Qwen3-VL多模态创作:设计师专属方案,2块钱无限生成
  • HY-MT1.5支持自定义词典?术语库导入实战教程
  • 普本出身,也能走稳 FPGA 这条路
  • 为什么HY-MT1.5部署总失败?网页推理启动问题实战解决指南
  • HY-MT1.5部署日志分析:错误排查与性能诊断实战
  • 腾讯HY-MT1.5翻译大模型:游戏本地化最佳实践
  • Qwen3-VL长文档解析方案:云端大内存,告别OOM报错
  • 腾讯开源HY-MT1.5部署:Kubernetes集群方案