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

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(移动平均阶数):表示模型中使用的移动平均项的数量,利用序列的滞后误差项来解释当前值。

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),拉你进入行业技术交流群,进行技术交流~

猜你喜欢

转载自blog.csdn.net/fengshi_fengshi/article/details/143030845