时间序列分析方法之 -- 自回归移动平均模型(Autoregressive Moving Average, ARMA)原理及Python代码示例

news2024/9/9 0:47:36

目录

原理

适用情况

Python 示例代码

结论


 

原理

自回归移动平均模型(Autoregressive Moving Average, ARMA)是一种结合了自回归(AR)模型和移动平均(MA)模型的时间序列分析模型。它适用于描述和预测平稳时间序列数据。ARMA 模型将时间序列的当前值表示为其过去值和过去预测误差的线性组合。

ARMA(p, q) 模型的数学表达式如下:

eq?X_t%20%3D%20c%20+%20%5Csum_%7Bi%3D1%7D%5E%7Bp%7D%20%5Cphi_i%20X_%7Bt-i%7D%20+%20%5Csum_%7Bj%3D1%7D%5E%7Bq%7D%20%5Ctheta_j%20%5Cepsilon_%7Bt-j%7D%20+%20%5Cepsilon_t

其中:

  • eq?X_t表示时间 t 的实际值。
  • c 是常数项(截距)。
  • eq?%5Cphi_i 是自回归系数。
  • eq?%5Ctheta_j是移动平均系数。
  • eq?%5Cepsilon_t是白噪声误差项,假设为均值为零且方差为常数的独立同分布随机变量。

ARMA 模型中包含两个部分:

  1. 自回归(AR)部分:表示当前值与过去值之间的关系。
  2. 移动平均(MA)部分:表示当前值与过去误差之间的关系。

适用情况

ARMA 模型适用于以下情况:

  1. 平稳时间序列:ARMA 模型适用于平稳时间序列,即时间序列的均值、方差和自协方差在时间上不随时间变化。
  2. 无明显季节性:ARMA 模型不适用于具有明显季节性模式的时间序列。对于具有季节性特征的时间序列,可以考虑使用季节性自回归移动平均模型(SARMA)或其他季节性时间序列模型。
  3. 短期预测:ARMA 模型通常用于短期预测,因为它依赖于时间序列的过去值和误差项。

Python 示例代码

以下是使用 Python 实现自回归移动平均模型的示例代码,利用 statsmodels 库进行建模和预测:

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

# 生成样本数据
np.random.seed(0)
data = np.random.randn(100).cumsum()

# 创建数据序列
data_series = pd.Series(data)

# 检查数据平稳性
result = adfuller(data_series)
print('ADF Statistic:', result[0])
print('p-value:', result[1])

# 差分处理使数据平稳
if result[1] > 0.05:
    data_series = data_series.diff().dropna()

# 应用ARMA模型
p = 2  # 自回归阶数
q = 2  # 移动平均阶数
model = ARIMA(data_series, order=(p, 0, q)).fit()
print(model.summary())

# 进行预测
pred_start = len(data_series)
pred_end = len(data_series) + 10
predictions = model.predict(start=pred_start, end=pred_end, dynamic=False)

# 可视化结果
plt.figure(figsize=(12, 6))
plt.plot(data_series, label='Original Data')
plt.plot(range(pred_start, pred_end + 1), predictions, label='Predictions', color='red')
plt.legend()
plt.title('Autoregressive Moving Average Model (ARMA)')
plt.show()

在上述代码中:

  1. 我们首先生成了一些样本数据,并将其创建为一个 Pandas 系列对象。
  2. 使用 adfuller 函数检查数据的平稳性。如果数据不是平稳的,可以通过差分处理使其平稳。
  3. 使用 ARIMA 类拟合 ARMA 模型,并打印模型摘要。注意,这里我们指定了 ARMA(p, q) 模型的阶数 p 和 q。
  4. 使用拟合好的模型进行预测,并将预测结果与原始数据进行可视化。

结论

自回归移动平均模型(ARMA)是一种有效的时间序列分析和预测方法,通过结合自回归和移动平均两种模型的优势,可以更好地捕捉时间序列的动态特征。ARMA 模型特别适用于平稳且无明显季节性模式的时间序列数据。通过选择合适的模型阶数,可以显著提高预测的准确性。在实践中,结合数据的具体特征和目标需求,调整模型参数以获得更好的预测效果。

 

 

 

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

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

相关文章

AGI思考探究过程中的意义、价值与乐趣 Ⅰ

探究以泛GPT为代表的预训练自回归next token prediction GenAI(即llm)与Alpha系列为代表的RL,再到Sora为代表的DiT视觉生成领域模型的本质普遍性及表象差异,以及为什么要将其两者或三者联系甚至融合起来看待?本质上是尝试对比采用上述三种模型…

昇思MindSpore 应用学习-Diffusion扩散模型-CSDN

Diffusion扩散模型 本文基于Hugging Face:The Annotated Diffusion Model一文翻译迁移而来,同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成功运行。如您下载本文档为Python文件,执行Python文件时,请…

【项目管理】高手项目经理都在用的6个SOP

SOP(Standard Operating Procedure)流程是一种标准化的操作指南,旨在确保组织或团队在各种情况下都能高效、一致地完成任务。SOP流程通常包括详细的步骤、关键控制点和责任分配,以确保质量和安全。SOP流程涉及从日常运营到危机管理…

五、Spring Boot - 上手篇(1)

🌻🌻目录 一、快速入门:创建第一个SpringBoot 工程1.1 点击File--->New--->Project...1.2 选择版本和依赖的相关骨架包1.3 设置项目保存目录1.4 项目创建完成,工程主界面如下1.5 项目说明1.6 启动项目1.7 编写 HelloControl…

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议,并完成了初稿。 本周继续修改论文&#xff0…

【Git】 如何将一个分支的某个提交合并到另一个分支

【Git】 如何将一个分支的某个提交合并到另一个分支 在使用 Git 进行版本控制时,常常会遇到这样的需求:将某个分支的特定提交合并到另一个分支中。这种情况下,我们可以使用 cherry-pick 命令来实现。本文将详细介绍 cherry-pick 命令的使用方…

定时任务报错问题,通级下还有其他定时任务却没有报错,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

R语言统计分析——条形图

参考资料:R语言实战【第2版】 条形图通过垂直的或水平的条形展示了类别型变量的分布(频数)。函数barplot()的最简单用法是: barplot(height) 其中height是一个向量或一个矩阵。 本文中数据案例来自“vcd”包,需在第一…

JQuery异步请求与Flask后端通信、this和event指针汇总

目录 一.JQuery与Flask通信的三种方法 1.1$.ajax() 1.2$.get() 1.3$.post() 二.forEach()方法 三.this指针 3.1为什么要用this指针 3.2this的指向 3.3this指针的四种绑定方式 3.3.1默认绑定 3.3.2隐式绑定 3.3.3显式绑定 3.3.4new绑定 3.3.5通过标签调用this指针…

windows server服务器/linux服务器离线安装pandas

windows server服务器/linux服务器离线安装pandas pypi官网下载whl文件速度较慢,推荐使用国内的镜像源来下载,镜像源地址为 清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simple…

docker安装与container基本使用

安装 Homebrew 的 Cask 已经支持 Docker for Mac, mac用户狂喜 brew install --cask --appdir/Applications docker其他入门用法可参考 Docker Hello World- 菜鸟教程 或网上自行搜索博客学习。本文主要记录我运行go-zero-mall用到的一些注意点。当然,gonivinck项…

vue2+cesium实现报警特效

实现效果: 录制_2024_07_29_21_36_33_571 实现步骤如下: 1、安装cesium包:npm install cesium 2、在node-modules中找到刚刚安装的cesium,在文件夹中里面有一个Build文件夹,把Build里面的Cesium复制出来丢到public中 3、在index.html中进行引入: 4、新建一个js文件,…

前端常见场景、JS计算精度丢失问题(Decimal.js 介绍)

目录 一. Decimal.js 介绍 二. 常用方法 1. 创建 Decimal 实例 2.加法 add 或 plus 3.减法 sub 或 minus 4.乘法 times 或 mul 5.除法 div 或 dividedBy 6.取模 7.幂运算 8.平方根 9.保留小数位 toFixed方法(四舍五入) 三.项目应用 前端精度丢失问题通常由以下原因…

无线融合,智能协同:ECWAN打造物联网高效协同网络

关键词:资产管理、ECWAN、无线混合组网、用电监测、用电计量、广域基站、计量插座、边缘协同 在当今快速发展的物联网领域,每天都有数以亿计的设备互相通信,形成庞大而复杂的网络生态。在这样的背景下,ECWAN技术以其灵活、高效和智…

【Linux】TCP全解析:构建可靠的网络通信桥梁

文章目录 前言1. TCP 协议概述2. TCP报头结构3. 如何理解封装和解包呢?4. TCP的可靠性机制4.1 TCP的确认应答机制 4.2 超时重传机制5. TCP链接管理机制5.1 经典面试题:为什么建立连接是三次握手?5.2 经典面试题:为什么要进行四次挥…

读零信任网络:在不可信网络中构建安全系统04最小特权

1. 公钥基础设施 1.1. PKI 1.2. 数字证书本身并不能解决身份认证问题 1.2.1. 需要一种方法来验证获得的公钥的确属于某人 1.2.2. 公钥基础设施(PKI)解决了这个问题 1.3. PKI定义了一组角色及其职责,能够在不可信的网络中安全地分发和验证…

【Websim.ai】一句话让AI帮你生成一个网页

【Websim.ai】一句话让AI帮你生成一个网页 网站链接 websim.ai 简介 websim.ai接入了Claude Sonnet 3.5,GPT-4o等常用的LLM,只需要在websim.ai的官网指令栏中编写相关指令,有点类似大模型的Prompt,指令的好坏决定了网页生成的…

Lc63---1859将句子排序(排序)---Java版(未写完)

1.题目描述 2.思路 (1)首先将句子按空格分割成若干单词。 (2)每个单词的最后一个字符是它的位置索引。我们可以通过这个索引将单词恢复到正确的位置。 (3)按照单词的索引顺序排序这些单词。 (4…

【已解决】嵌入式linux mobaxterm unable to open connection to comx 串口正常连接,但终端无法输入

1.点击Session重新选择串口,注意看看串口是不是连接到虚拟机,导致串口被占用。 2.选择PC机与开发板连接的串口,不知道的话可以打开设备管理器看看,选择正确的波特率,一般是115200。 3.关键一步:选择后别急…

性能测试:深入探索与实战指南

大家好,我是一名测试开发工程师,已经开源一套【自动化测试框架】和【测试管理平台】,欢迎大家联系我,一起【分享测试知识,交流测试技术】 在当今这个信息化、数字化的时代,软件系统的性能直接关乎到用户体验…