缠丝猫 发表于 2025-4-7 13:46:21

【数学建模】(时间序列模型)ARIMA时间序列模型

ARIMA时间序列模型详解及常见时间序列模型概览



1 弁言

时间序列分析在数据科学中占据重要职位,广泛应用于金融、经济、气象等领域。本文将具体介绍ARIMA模型的基本原理和应用,并简要概述其他常见的时间序列模型,资助读者了解时间序列分析的全貌。
2 ARIMA模型的基本概念

ARIMA模型全称为自回归差分移动匀称模型(AutoRegressive Integrated Moving Average),由三部门构成:


[*]AR (AutoRegressive): 自回归部门
[*]I (Integrated): 差分部门
[*]MA (Moving Average): 移动匀称部门
通常体现为ARIMA(p,d,q),其中:


[*]p: 自回归项数
[*]d: 差分次数
[*]q: 移动匀称项数
ARIMA模型的基本头脑是利用数据本身的汗青信息来预测未来。一个时间点上的标签值既受过去一段时间内的标签值影响,也受过去一段时间内的偶然事件的影响,这就是说,ARIMA模型假设:标签值是围绕着时间的大趋势而波动的,其中趋势是受汗青标签影响构成的,波动是受一段时间内的偶然事件影响构成的,且大趋势本身不一定是稳定的。
简而言之,ARIMA模型就是试图通过数据的自相关性和差分的方式,提取出隐藏在数据背后的时间序列模式,然后用这些模式来预测未来的数据。其中:

[*] AR部门用于处理时间序列的自回归部门,它考虑了过去若干时期的观测值对当前值的影响。
[*] I部门用于使非平稳时间序列到达平稳,通过一阶或者二阶等差分处理,消除了时间序列中的趋势和季候性因素。
[*] MA部门用于处理时间序列的移动匀称部门,它考虑了过去的预测偏差对当前值的影响。
结合这三部门,ARIMA模型既可以捕捉到数据的趋势变化,又可以处理那些有临时、突发的变化或者噪声较大的数据。以是,ARIMA模型在很多时间序列预测问题中都有很好的体现。
3 ARIMA模型的构成部门详解

3.1 AR模型 (自回归模型)

AR模型,即自回归模型,其优势是对于具有较长汗青趋势的数据,AR模型可以捕获这些趋势,并据此举行预测。但是AR模型不能很好地处理某些范例的时间序列数据,比方那些有临时、突发的变化或者噪声较大的数据。AR模型信任“汗青决定未来”,因此很大水平上忽略了现实情况的复杂性、也忽略了真正影响标签的因子带来的不可预料的影响。
AR§模型假设当前值与过去p个时间点的值线性相关。数学表达式为:
                                                    X                               t                                    =                            c                            +                                       ϕ                               1                                                 X                                           t                                  −                                  1                                                 +                                       ϕ                               2                                                 X                                           t                                  −                                  2                                                 +                            .                            .                            .                            +                                       ϕ                               p                                                 X                                           t                                  −                                  p                                                 +                                       ε                               t                                          X_t = c + \phi_1 X_{t-1} + \phi_2 X_{t-2} + ... + \phi_p X_{t-p} + \varepsilon_t                     Xt​=c+ϕ1​Xt−1​+ϕ2​Xt−2​+...+ϕp​Xt−p​+εt​
其中:


[*]                                                   X                               t                                          X_t                     Xt​ 是t时候的值
[*]                                        c                                  c                     c 是常数项
[*]                                                   ϕ                               1                                    ,                                       ϕ                               2                                    ,                            .                            .                            .                            ,                                       ϕ                               p                                          \phi_1, \phi_2, ..., \phi_p                     ϕ1​,ϕ2​,...,ϕp​ 是模型参数
[*]                                                   ε                               t                                          \varepsilon_t                     εt​ 是白噪声
3.2 MA模型 (移动匀称模型)

相反地,MA模型,即移动匀称模型,可以更好地处理那些有临时、突发的变化或者噪声较大的时间序列数据。但是对于具有较长汗青趋势的数据,MA模型可能无法像AR模型那样捕捉到这些趋势。MA模型信任“时间序列是相对稳定的,时间序列的波动是由偶然因素影响决定的”,但现实中的时间序列很难不停维持“稳定”这一假设。
(P.S. ARIMA模型是一种结合了AR模型和MA模型优点的模型,可以处理更复杂的时间序列问题。参考资料:时间序列模型(四):ARIMA模型)
MA(q)模型假设当前值与过去q个预测偏差项线性相关。数学表达式为:
                                                    X                               t                                    =                            μ                            +                                       ε                               t                                    +                                       θ                               1                                                 ε                                           t                                  −                                  1                                                 +                                       θ                               2                                                 ε                                           t                                  −                                  2                                                 +                            .                            .                            .                            +                                       θ                               q                                                 ε                                           t                                  −                                  q                                                       X_t = \mu + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \theta_2 \varepsilon_{t-2} + ... + \theta_q \varepsilon_{t-q}                     Xt​=μ+εt​+θ1​εt−1​+θ2​εt−2​+...+θq​εt−q​
其中:


[*]                                        μ                                  \mu                     μ 是期望值
[*]                                                   ε                               t                                          \varepsilon_t                     εt​ 是白噪声
[*]                                                   θ                               1                                    ,                                       θ                               2                                    ,                            .                            .                            .                            ,                                       θ                               q                                          \theta_1, \theta_2, ..., \theta_q                     θ1​,θ2​,...,θq​ 是模型参数
3 I (差分)

差分操纵用于使非平稳时间序列转化为平稳序列(P.S. GNSS中的周跳检测)。d阶差分定义为:
                                                    ∇                               d                                                 X                               t                                    =                            (                            1                            −                            B                                       )                               d                                                 X                               t                                          \nabla^d X_t = (1-B)^d X_t                     ∇dXt​=(1−B)dXt​
其中B是后移算子,                                 B                                 X                            t                                  =                                 X                                       t                               −                               1                                                 B X_t = X_{t-1}                  BXt​=Xt−1​。
4 ARIMA模型的建模步调


[*]平稳性检验:使用ADF检验等方法检验时间序列是否平稳
[*]差分处理:如果序列非平稳,举行差分直到序列平稳
[*]模型辨认:通过ACF和PACF图确定合适的p、q值
[*]模型拟合:估计模型参数
[*]模型诊断:检验残差是否为白噪声
[*]模型预测:使用拟合好的模型举行预测
5 Python实现ARIMA模型

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

# 加载数据
data = pd.read_csv('data.csv', index_col='date', parse_dates=True)
ts = data['value']

# 平稳性检验
def test_stationarity(timeseries):
    # ADF检验
    dftest = adfuller(timeseries, autolag='AIC')
    dfoutput = pd.Series(dftest, index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
    for key, value in dftest.items():
      dfoutput['Critical Value (%s)'%key] = value
    print(dfoutput)

# 差分处理
ts_diff = ts.diff().dropna()

# 模型拟合
model = ARIMA(ts, order=(1, 1, 1))# ARIMA(p,d,q)
model_fit = model.fit()
print(model_fit.summary())

# 模型预测
forecast = model_fit.forecast(steps=10)# 预测未来10个时间点
6 常见时间序列模型概览

除了ARIMA模型外,时间序列分析还有很多其他模型,以下是一些常见的时间序列模型:
1. 简朴时间序列模型



[*]简朴匀称模型:使用汗青数据的匀称值作为预测值
[*]质朴模型(Naive Method):使用最近一期的观测值作为预测值
[*]季候性子朴模型:使用上一个季候周期对应时间点的值作为预测值
[*]移动匀称模型:使用过去n个时间点的匀称值作为预测值
2. 指数平滑模型



[*] 简朴指数平滑(SES):实用于无趋势、无季候性的数据
                                                                              y                                        ^                                                                t                                        +                                        1                                                         =                                  α                                             y                                     t                                              +                                  (                                  1                                  −                                  α                                  )                                                             y                                        ^                                                t                                                      \hat{y}_{t+1} = \alpha y_t + (1-\alpha)\hat{y}_t                           y^​t+1​=αyt​+(1−α)y^​t​
[*] Holt线性趋势模型:实用于有趋势、无季候性的数据
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \hat{y}_{t+h} …
[*] Holt-Winters季候性模型:实用于有趋势、有季候性的数据

[*]加法形式和乘法形式

3. ARIMA族模型



[*] SARIMA:季候性ARIMA,处理具有季候性的时间序列
                                                   S                                  A                                  R                                  I                                  M                                  A                                  (                                  p                                  ,                                  d                                  ,                                  q                                  )                                  (                                  P                                  ,                                  D                                  ,                                  Q                                             )                                     s                                                      SARIMA(p,d,q)(P,D,Q)_s                           SARIMA(p,d,q)(P,D,Q)s​
[*] ARIMAX:带外生变量的ARIMA模型
                                                                X                                     t                                              =                                  c                                  +                                             ϕ                                     1                                                         X                                                   t                                        −                                        1                                                         +                                  .                                  .                                  .                                  +                                             ϕ                                     p                                                         X                                                   t                                        −                                        p                                                         +                                             β                                     1                                                         Z                                                   1                                        ,                                        t                                                         +                                  .                                  .                                  .                                  +                                             β                                     k                                                         Z                                                   k                                        ,                                        t                                                         +                                             ε                                     t                                              +                                             θ                                     1                                                         ε                                                   t                                        −                                        1                                                         +                                  .                                  .                                  .                                  +                                             θ                                     q                                                         ε                                                   t                                        −                                        q                                                                   X_t = c + \phi_1 X_{t-1} + ... + \phi_p X_{t-p} + \beta_1 Z_{1,t} + ... + \beta_k Z_{k,t} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + ... + \theta_q \varepsilon_{t-q}                           Xt​=c+ϕ1​Xt−1​+...+ϕp​Xt−p​+β1​Z1,t​+...+βk​Zk,t​+εt​+θ1​εt−1​+...+θq​εt−q​
[*] VARIMA:向量ARIMA,处理多变量时间序列
[*] GARCH:广义自回归条件异方差模型,用于建模波动性
                                                                σ                                     t                                     2                                              =                                  ω                                  +                                             ∑                                                   i                                        =                                        1                                                p                                                         α                                     i                                                         ε                                                   t                                        −                                        i                                                2                                              +                                             ∑                                                   j                                        =                                        1                                                q                                                         β                                     j                                                         σ                                                   t                                        −                                        j                                                2                                                      \sigma_t^2 = \omega + \sum_{i=1}^{p} \alpha_i \varepsilon_{t-i}^2 + \sum_{j=1}^{q} \beta_j \sigma_{t-j}^2                           σt2​=ω+i=1∑p​αi​εt−i2​+j=1∑q​βj​σt−j2​
4. 状态空间模型



[*]卡尔曼滤波:递归估计动态系统状态的算法
[*]结构时间序列模型:将时间序列分解为趋势、季候性和不规则成分
5. 机器学习和深度学习模型



[*]Prophet:Facebook开发的时间序列预测工具,适合处理具有强季候性的数据
[*]LSTM (长短期记忆网络):一种特殊的RNN,可以或许学习长期依赖关系
[*]GRU (门控循环单元):LSTM的简化版本,计算效率更高
[*]Transformer:基于注意力机制的模型,近年来在时间序列预测中体现出色
[*]N-BEATS:纯深度学习方法,不依赖于传统的时间序列分解
7 ARIMA模型的优缺点

优点


[*]理论底子扎实,模型简朴易懂
[*]实用于大多数线性时间序列问题
[*]预测短期趋势效果较好
[*]模型解释性强
缺点


[*]只实用于平稳或可通过差分转化为平稳的时间序列
[*]对非线性关系的建模能力有限
[*]须要较长的汗青数据才气得到较好的效果
[*]不适合处理具有长期记忆特性的序列
8 如何选择合适的时间序列模型

选择时间序列模型时,须要考虑以下因素:

[*]数据特性:是否存在趋势、季候性、周期性
[*]预测时间范围:短期预测和长期预测适合的模型不同
[*]数据量:深度学习模型通常须要更多的数据
[*]解释性需求:是否须要明白模型的内部机制
[*]计算资源:复杂模型须要更多的计算资源
9 结论

ARIMA作为经典的时间序列分析模型,在很多场景下仍旧体现良好。随着机器学习和深度学习的发展,时间序列分析工具箱不断丰富,为不同的应用场景提供了更多选择。在现实应用中,应根据具体问题特点选择合适的模型,有时候甚至可以将多种模型结合使用,以得到更好的预测效果。
参考资料


[*]Box, G. E. P., & Jenkins, G. M. (1976). Time Series Analysis: Forecasting and Control.
[*]Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice.
[*]statsmodels官方文档: https://www.statsmodels.org/
[*]时间序列模型(四):ARIMA模型
盼望这篇文章对您了解ARIMA和其他时间序列模型有所资助!如有任何问题,欢迎在批评区留言交流。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【数学建模】(时间序列模型)ARIMA时间序列模型