首页 > 编程语言 >【干货】arima模型python代码实操演练

【干货】arima模型python代码实操演练

时间:2024-10-28 15:15:53浏览次数:7  
标签:plt 预测 python 模型 ARIMA arima 实操 序列 model

以下是用Python实现ARIMA模型的代码。ARIMA(自回归积分滑动平均模型)是一种常用于时间序列数据预测的统计模型。在Python中,可以使用statsmodels库来实现ARIMA模型。

安装依赖库

如果还没有安装statsmodelspandas,可以先安装:

pip install statsmodels pandas

示例代码

import pandas as pd
import numpy as np
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt

# 生成示例数据或导入时间序列数据
# 这里我们用随机数据来创建一个时间序列
np.random.seed(0)
data = pd.Series(np.random.randn(100).cumsum(), index=pd.date_range("2023-01-01", periods=100))

# 可视化数据
plt.figure(figsize=(10, 6))
plt.plot(data)
plt.title("时间序列数据")
plt.show()

# 定义 ARIMA 模型参数 (p, d, q)
p = 1  # AR部分的阶数
d = 1  # 差分次数(使数据平稳)
q = 1  # MA部分的阶数

# 创建并拟合 ARIMA 模型
model = ARIMA(data, order=(p, d, q))
model_fit = model.fit()

# 输出模型概况
print(model_fit.summary())

# 预测未来的10个值
forecast = model_fit.forecast(steps=10)
print("预测值:")
print(forecast)

# 可视化预测结果
plt.figure(figsize=(10, 6))
plt.plot(data, label="原始数据")
plt.plot(forecast, label="预测数据", color="red")
plt.legend()
plt.title("ARIMA 模型预测")
plt.show()

代码说明

  1. 生成时间序列数据

    • 此处使用随机数生成一段时间序列数据。实际应用中,你可以加载自己的时间序列数据,例如从CSV文件中读取。
  2. 参数设置

    • pdq 是ARIMA模型的三个关键参数:
      • p:AR(自回归)部分的阶数,即多少个延迟项。
      • d:差分次数,用于使数据平稳。
      • q:MA(滑动平均)部分的阶数,即多少个移动平均项。
    • 这些参数可以使用**AIC(赤池信息准则)BIC(贝叶斯信息准则)**来自动选择,也可以通过实验和网格搜索来确定。
  3. 拟合模型

    • 使用 ARIMA 模型并调用 .fit() 方法拟合数据,得到模型结果。
  4. 模型结果与预测

    • .summary() 提供了ARIMA模型的详细信息。
    • 使用 .forecast() 方法预测未来的数值,指定预测的步数(如10步)。
  5. 结果可视化

    • 使用Matplotlib绘制原始数据和预测结果,以便直观地观察模型效果。

参数调优

可以使用statsmodels.tsa.stattools中的adfuller()方法进行平稳性检验,或使用pmdarima库中的auto_arima()来自动选择最优的 (p, d, q) 参数组合:

# 安装 pmdarima
pip install pmdarima
from pmdarima import auto_arima

# 自动选择最优的 (p, d, q) 参数
auto_model = auto_arima(data, seasonal=False, trace=True)
print(auto_model.order)

结论

ARIMA模型对于线性时间序列预测效果很好,但需要注意参数的调优。通过pmdarima等工具,可以更方便地自动化模型选择并提升预测效果。

标签:plt,预测,python,模型,ARIMA,arima,实操,序列,model
From: https://blog.csdn.net/liaozp88/article/details/143303845

相关文章

  • 【25届计算机毕设选题推荐】基于Python的西西家居全屋定制系统的设计与实现 【附源码+
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 1.python模块abc抽象类
    1.定义一个抽象基类,不可实例化2.继承抽象基类的类,必须实现抽象基类中@abstractmethod的方法3.继承抽象基类的类,必须实现抽象基类中@abstractmethod的方法4.模拟客户端传参,调用调用子类的中重写功能5.issubclass判断是不是子类6.抽象基类的方法注册7.框架结构8.根据设计图......
  • python中any和all函数用法
    内置any()作用:判断一个可迭代对象中是否至少有一个值为True,理解:逻辑“或”,只要有一个满足True条件,返回为True,用法:any([True,False])any((0,'',False))返回TrueFalse注意:空字符串,变量值为0等,空对象都属于False内置all()作用:判断一个可迭代对象中是否全为True,(......
  • Python之多线程
    一、使用threading模块的Thread类1.1介绍这是Python中最基本的创建线程的方法。通过定义一个函数,然后将这个函数作为参数传递给Thread类的构造函数来创建线程。每个线程对象代表一个独立的执行线程。1.2代码示例importthreadingimporttimedefprint_numbers():......
  • python基础(列表)
    学习目标:列表的介绍,创建,索引,切片,增加,删除,插入,修改,清空,排序,反转,长度,复制,统计,最大值和最小值,列表的遍历!一.列表的介绍列表是Python中的一种数据结构,用于存储多个元素。是可变的数据类型。列表可以包含任意类型的数据,比如整数、浮点数、字符串等。列表是有序的,即列表中的元素......
  • python——使用线程池实现异步返回数据
    框架flask应用场景当接收到请求,但数据处理比较耗时,希望请求过来时先返回一个响应,再慢慢处理数据,处理完成后再将结果返回给另一个地址。流程:接收到请求,立即返回响应。再处理数据,处理完成后将结果响应给预先定义的URL。importtracebackimportrequestsfromconcurrent.......
  • Python 的魔法搜索:如何用代码解锁淘宝商品关键字的神秘力量
    在淘宝这个充满奇迹的电商王国里,每一个商品关键字都像是一把古老的钥匙,能够解锁隐藏在茫茫商品海洋中的宝藏。今天,我们要讲述的是如何成为一名Python魔法师,用你的代码魔杖,施展搜索魔法,按关键字精准搜索商品,并获取它们的API数据。准备你的魔法工具箱:Python开发环境在这场......
  • python+flask框架的基于微信小程序的体检预约系统小程序8(开题+程序+论文) 计算机毕业
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的飞速发展,微信小程序作为一种轻量级的应用形式,因其便捷性和即用即走的特性,深受用户喜爱。在医疗健康领域,体检预约系统......
  • python+flask框架的基于微信小程序的体检预约系统后台8(开题+程序+论文) 计算机毕业设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的快速发展,人们越来越依赖于智能手机和各类应用程序来满足日常生活需求。微信小程序作为一种轻量级的应用形式,因其无需......
  • python+flask框架的基于微信小程序的树洞交流平台38(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的飞速发展,社交媒体平台已成为人们日常生活中不可或缺的一部分。微信小程序作为一种轻量级的应用形态,凭借其无需下载、......