Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

这篇具有很好参考价值的文章主要介绍了Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近我们被客户要求撰写关于时间序列预测的研究报告,包括一些图形和统计输出。 

 相关视频:在Python和R语言中建立EWMA,ARIMA模型预测时间序列

使用ARIMA模型,您可以使用序列过去的值预测时间序列。在本文中,我们从头开始构建了一个最佳ARIMA模型,并将其扩展到Seasonal ARIMA(SARIMA)和SARIMAX模型。

1.时间序列预测简介

时间序列是在定期时间间隔内记录度量的序列。

根据频率,时间序列可以是每年(例如:年度预算),每季度(例如:支出),每周(例如:销售数量),每天(例如天气),每小时(例如:股票价格),分钟(例如:来电提示中的呼入电话),甚至是几秒钟(例如:网络流量)。

为什么要预测?

因为预测时间序列(如需求和销售)通常具有巨大的商业价值。

在大多数制造公司中,它驱动基本的业务计划,采购和生产活动。预测中的任何错误都会扩散到整个供应链或与此相关的任何业务环境中。因此,准确地进行预测很重要,以节省成本,这对于成功至关重要。

不仅在制造业中,时间序列预测背后的技术和概念还适用于任何业务。

现在,预测时间序列可以大致分为两种类型。

如果仅使用时间序列的先前值来预测其未来值,则称为  单变量时间序列预测

如果您使用序列以外的其他预测变量(也称为外生变量)进行预测,则称为  多变量时间序列预测

这篇文章重点介绍一种称为ARIMA  建模的特殊类型的预测方法  。

ARIMA是一种预测算法,其基于以下思想:时间序列的过去值中的信息可以单独用于预测未来值。

2. ARIMA模型简介

那么ARIMA模型到底是什么?

ARIMA是一类模型,可以根据自身的过去值(即自身的滞后和滞后的预测误差)“解释”给定的时间序列,因此可以使用方程式预测未来价值。

任何具有模式且不是随机白噪声的“非季节性”时间序列都可以使用ARIMA模型进行建模。

ARIMA模型的特征在于3个项:p,d,q

p是AR项

q是MA项

d是使时间序列平稳所需的差分阶数

如果时间序列具有季节性模式,则需要添加季节性条件,该时间序列将变成SARIMA(“季节性ARIMA”的缩写)。一旦完成ARIMA。

那么,“AR项的阶数”到底意味着什么?我们先来看一下“ d”。

3. ARIMA模型中的p,d和q是什么意思

建立ARIMA模型的第一步是  使时间序列平稳。

为什么?

因为ARIMA中的“自回归”一词意味着它是一个  线性回归模型  ,使用自己的滞后作为预测因子。如您所知,线性回归模型在预测变量不相关且彼此独立时最有效。

那么如何使一序列平稳呢?

最常见的方法是加以差分。即,从当前值中减去先前的值。

因此,d的值是使序列平稳所需的最小差分阶数。如果时间序列已经平稳,则d = 0。

接下来,什么是“ p”和“ q”?

“ p”是“自回归”(AR)项的阶数。它指的是要用作预测变量的Y的滞后阶数。而“ q”是“移动平均”(MA)项的阶数。它是指应输入ARIMA模型的滞后预测误差的数量。

4.什么是AR和MA模型

那么什么是AR和MA模型?AR和MA模型的实际数学公式是什么?

AR模型是Yt仅取决于其自身滞后的模型。也就是说,Yt是“ Yt滞后”的函数。

Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

同样,纯  移动平均线(仅MA)模型  是Yt仅取决于滞后预测误差的模型。

Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

误差项是各个滞后的自回归模型的误差。误差Et和E(t-1)是来自以下方程式的误差:

Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

那分别是AR和MA模型。

那么ARIMA模型的方程是什么样的呢?

ARIMA模型是这样的模型,其中时间序列至少差分一次以使其平稳,然后将AR和MA项组合在一起。因此,等式变为:

Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

因此,目的是识别p,d和q的值。 

5.如何在ARIMA模型中找到差分阶数(d)

进行差分的目的是使时间序列平稳。

但是您需要注意不要使序列过分差分。因为,超差分序列可能仍然是平稳的,这反过来将影响模型参数。

那么如何确定正确的差分阶数呢?

正确的差分阶数是获得近似平稳序列的最小差分,该序列围绕定义的平均值波动,并且ACF曲线相当快地达到零。

如果自相关对于许多阶数之后(10个或更多)为正,则该序列需要进一步求差。 

在这种情况下,你不能真正确定两个差分阶数之间的差,然后选择在差分序列中给出最小标准偏差的阶数。

让我们来看一个例子。

首先,我将使用Augmented Dickey Fuller测试()检查该序列是否平稳。

为什么?

因为,仅当序列非平稳时才需要进行差分。否则,不需要差分,即d = 0。

ADF检验的零假设是时间序列是非平稳的。因此,如果检验的p值小于显着性水平(0.05),则拒绝原假设,并推断时间序列确实是平稳的。

因此,在我们的情况下,如果P值> 0.05,我们将继续寻找差分的阶数。

from statsmodels.tsa.stattools import adfuller
from numpy import log
result = adfuller(df.value.dropna())
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
ADF Statistic: -2.464240
p-value: 0.124419

由于P值大于显着性水平,因此让我们对序列进行差分,看看自相关图的样子。

import numpy as np, pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.figsize':(9,7), 'figure.dpi':120})

# 导入数据
df = pd.read_csv('wwwusage.csv', names=['value'], header=0)

# 原始数据
fig, axes = plt.subplots(3, 2, sharex=True)
axes[0, 0].plot(df.value); axes[0, 0].set_title('Original Series')
plot_acf(df.value, ax=axes[0, 1])

# 一阶差分
axes[1, 0].plot(df.value.diff()); axes[1, 0].set_title('1st Order Differencing')
plot_acf(df.value.diff().dropna(), ax=axes[1, 1])

# 二阶差分
axes[2, 0].plot(df.value.diff().diff()); axes[2, 0].set_title('2nd Order Differencing')
plot_acf(df.value.diff().diff().dropna(), ax=axes[2, 1])

plt.show()

Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

差分 

对于以上序列,时间序列达到平稳,具有两个不同的阶数。但是,在查看第二次差分的自相关图时,滞后会很快进入负值区域,这表明该序列可能已经过差分。

因此,即使该序列不是完全平稳的(平稳性较弱),我也将暂时将差分的阶数设置为1。


## Adf 检验
ndiffs(y, test='adf')  # 2

# KPSS 检验
ndiffs(y, test='kpss')  # 0

# PP 检验:
ndiffs(y, test='pp')  # 2
2 0 2

6.如何找到AR项的阶数(p)

下一步是确定模型是否需要AR。您可以通过检查偏自相关(PACF)图来找出所需的AR阶数。文章来源地址https://www.toymoban.com/news/detail-440027.html

到了这里,关于Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 组合预测模型 | ARIMA-LSTM时间序列预测(Python)

    预测结果 基本介绍 ARIMA-LSTM时间序列预测(Python完整源码和数据) ARIMA-LSTM时间序列预测,AQI预测(Python完整源码和数据) 组合模型预测 ARIMA和LSTM都是用于时间序列预测的经典模型。ARIMA是一种基于差分和自回归移动平均模型的统计方法,它可以用来捕捉时间序列中的趋势和季

    2024年02月16日
    浏览(32)
  • 时间序列ARIMA模型

    ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA,Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statisticmodel)中最常见的一种用来进行时间序列预测的模型。 将非平稳时间序列转化为平稳时间序列然后将因变量仅对它的滞后值以及随机误差项的现值和

    2024年02月03日
    浏览(37)
  • 时间序列模型-ARIMA

    描述当前值与历史值之间的关系,用变量自身的历史数据对自身进行预测; 自回归模型必须满足平稳性的要求;(何为平稳性:见时间序列数据分析基本概念) p阶自回归过程的公式定义:         其中是当前值,是常数项,p是阶数,是自相关系数,是误差。 1.1.1 自回归

    2023年04月08日
    浏览(75)
  • 时间序列模型算法 - ARIMA (一)

    时间序列是研究数据随时间变化而变化的一种算法。是一种预测性分析算法。它的基本出发点就是事物发展都有连续性,按照它本身固有的规律进行。 时间序列的常用算法包括: 有这几个那如何选择模型呢 首先我们要知道时间序列就是按照时间顺序排列,随时间变化的随机

    2023年04月27日
    浏览(44)
  • 时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测

    预测效果 基本介绍 时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测 直接替换数据即可用 适合新手小白 附赠案例数据 可直接运行 程序设计 完整程序和数据下载方式私信博主回复: Python实现ARIMA-LSTM差分自回归移动平均模型结合长

    2024年02月07日
    浏览(39)
  • 【时间序列数据挖掘】ARIMA模型

    目录 0、前言 一、移动平均模型MA 二、自回归模型AR 三、自回归移动平均模型ARMA 四、自回归移动平均模型ARIMA 【总结】 传统时间序列分析模型: ARIMA模型是一个非常灵活的模型,对于时间序列的好多特征都能够进行描述,比如说平稳性特征,季节性特征,趋势性特征。 AR

    2024年02月07日
    浏览(36)
  • 时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测

    效果一览 文章概述 时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(40)
  • SPSS软件实操——ARIMA时间序列预测模型

    时间序列预测——ARIMA模型 https://blog.csdn.net/beiye_/article/details/123317316?spm=1001.2014.3001.5501 ​​​​​​​​​​​​​​ 案例:基于ARIMA模型对螺纹钢价格预测——以南昌市为例 钢铁作为我国经济发展主要战略原材料,其价格成本也是工程造价预算的重要组成部分,利用时间

    2024年01月25日
    浏览(35)
  • 使用Google大模型Bard(PaLM)理解时间序列预测模型ARIMA

    Google Bard的新模型使用的是PaLM,暂时不支持中文,本次测试使用Bard模型来辅助理解一个时间序列预测模型ARIMA。 A: ARIMA stands for Autoregressive Integrated Moving Average. It is a statistical model that is used to forecast time series data. ARIMA models are based on the idea that the current value of a time series can be

    2024年02月08日
    浏览(32)
  • 机器学习——时间序列ARIMA模型(三):AR、MA、ARMA、ARIMA模型定义及公式介绍及股价预测案例代码

    使用自身的数据进行预测,且只适用于预测与自身前期相关的现象。 注意:需满足具有平稳性的要求,需满足自相关性,自相关系数需大于0.5。 p阶自回归公式: y t = μ + ∑ i = 1 p γ i y t − i + e t y_{t}=μ+sum_{i=1}^pgamma_{i}y_{t-i}+e_{t} y t ​ = μ + i = 1 ∑ p ​ γ i ​ y t − i ​ + e

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包