时间序列预测模型之一文讲透 MA 模型

server/2024/10/19 11:27:24/

ARIMA 模型(自回归积分滑动平均模型)是时间序列分析中的一种广泛应用的模型,这个模型在各个领域发挥着巨大的作用,如股票市场的价格预测、经济中 GDP 增长率预测、供应链中销售量和库存需求预测、气象中气温和降水量的预测等等。为了深入理解 ARIMA 模型,我们需要先深入理解构成它的三个基本构建模块:

  • AR(自回归)部分:使用时间序列自身的过去值来预测当前值。

  • I(积分)部分:通过对数据进行差分处理,使非平稳时间序列变为平稳序列。

  • MA(移动平均)部分:使用过去的预测误差来修正预测。

本文的目标就是帮助你从零开始学习 MA 模型,为深入掌握 ARIMA 模型打好坚实的基础。所以本文将从 MA 模型基本概念、MA 模型参数计算、MA 模型应用 三个章节来详细讲述 MA 模型。希望你通过阅读此文,能够获得对 MA 模型的深入理解,并能够在实际问题中正确使用这些模型。毋庸置疑,这将是你掌握 ARIMA 模型的重要第一步。

1、MA 模型基本概念

图片

图片

2、MA 模型参数计算

图片

图片

图片

图片

3、MA 模型应用

在实际实践中,我们不需要从零开始利用最大似然估计去计算 MA 模型的参数,不然那还是很花时间的,在社区中有很多比较成熟的封装包了,我们可以拿来开箱即用。在 Python 中,我们可以使用 statsmodels 库中的 ARIMA 来计算 MA 模型。以下为一个简单的示例,如下所示,每行都有对应的注释说明,再结合上面的基础原理,相信大家一看就懂,所以就不再重复赘述了。其中 ARIMA 模型有以下参数,本示例为了模拟 MA 模型,所以将 p 和 d 参数都设置为 0

  • p(自回归阶数):表示模型中使用的自回归项的数量,利用序列自身的滞后值来解释当前值。

  • d(差分阶数):表示为了使时间序列平稳而进行差分的次数,用于消除时间序列中的趋势或季节性。

  • q(移动平均阶数):表示模型中使用的移动平均项的数量,利用序列的滞后误差项来解释当前值。

python">import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA# 设置字体
rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
rcParams['axes.unicode_minus'] = False    # 解决负号显示问题# 生成示例数据
np.random.seed(42)
data = np.random.randn(100)# 拟合 MA 模型
model = ARIMA(data, order=(0, 0, 1))  # 这里 (p, d, q) = (0, 0, 1) 表示 MA(1) 模型
model_fit = model.fit()# 预测下一个值
forecast = model_fit.forecast(steps=1)
print(f"预测的下一个值: {forecast[0]}")# 可视化原始数据和预测值
plt.plot(data, label='原始数据')
plt.axvline(x=len(data), color='gray', linestyle='--')
plt.plot(len(data), forecast, 'ro', label='预测值')
plt.legend()
plt.title('MA 模型预测')
plt.show()# -----------输出------------
# 预测的下一个值: -0.10097

图片

4、总结

本文从 MA 模型基本概念、MA 模型参数计算、MA 模型应用 三个章节来详细讲述 MA 模型,帮助大家从零开始学习 MA 模型,为深入掌握 ARIMA 模型打好坚实的基础,希望本文能对你有切实有用的帮助!接下去我还将会介绍 ARIMA 模型,敬请关注吧!


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流~


http://www.ppmy.cn/server/133031.html

相关文章

Python爬虫进阶:高效数据采集的艺术

在当今数据驱动的世界里,高效的网络爬虫技术已经成为每个数据科学家和后端工程师的必备技能。本文将深入探讨一些高级的Python爬虫技术,这些技术不仅能够大幅提升你的爬虫效率,还能帮助你应对各种复杂的爬虫场景。 1. 异步爬虫:协…

基于SpringBoot+Vue+uniapp微信小程序的宿舍报修系统的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

数据库系统原理——第三章 关系数据库标准语言SQL

文章目录 1.SQL的特点2.SQL的组成3SQL语句3.1数据库的基本操作3.2 基本表的定义、修改、删除3.3索引的建立与删除3.4数据更新3.5数据查询3.5.1单表查询3.5.2连接查询3.5.2.1内连接(INNER JOIN)3.5.2.2左连接(LEFT JOIN)3.5.2.3右连…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果…

基于微信小程序的购物系统【附源码、文档】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

AWTK fscript 中的 widget 扩展函数

fscript 是 AWTK 内置的脚本引擎,开发者可以在 UI XML 文件中直接嵌入 fscript 脚本,提高开发效率。本文介绍一下 fscript 中的 ** widget 扩展函数 ** 1. 介绍 FScript 的 widget 扩展函数只能在 widget 的事件处理函数中使用,包括传统的 …

【python实战】利用代理ip爬取Alibaba海外版数据

引言 在跨境电商的业务场景中,数据采集是分析市场、了解竞争对手以及优化经营策略的重要环节。然而,随着越来越多企业依赖数据驱动决策,许多跨境电商平台为了保护自身数据,采取了更严格的防护措施。这些平台通过屏蔽大陆IP地址或部…

阻塞队列的原理?(如何设计一个阻塞队列?)

阻塞队列主要是用于插入和获取的操作 当阻塞队列满了的时候,插入操作会被阻塞,直到队列有空位。当阻塞队列为空的时候,获取操作也会被阻塞,直到队列有数据。ArrayBlockingQueue :有界队列,底层基于数组实现…