【數學建模】(時間序列模型)ARIMA時間序列模型

ARIMA時間序列模型詳解及常見時間序列模型概覽

文章目錄

  • ARIMA時間序列模型詳解及常見時間序列模型概覽
    • 1 引言
    • 2 ARIMA模型的基本概念
    • 3 ARIMA模型的組成部分詳解
      • 3.1 AR模型 (自回歸模型)
      • 3.2 MA模型 (移動平均模型)
      • 3 I (差分)
    • 4 ARIMA模型的建模步驟
    • 5 Python實現ARIMA模型
    • 6 常見時間序列模型概覽
      • 1. 簡單時間序列模型
      • 2. 指數平滑模型
      • 3. ARIMA族模型
      • 4. 狀態空間模型
      • 5. 機器學習和深度學習模型
    • 7 ARIMA模型的優缺點
      • 優點
      • 缺點
    • 8 如何選擇合適的時間序列模型
    • 9 結論
    • 參考資料

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模型就是試圖通過數據的自相關性和差分的方式,提取出隱藏在數據背后的時間序列模式,然后用這些模式來預測未來的數據。其中:

  1. AR部分用于處理時間序列的自回歸部分,它考慮了過去若干時期的觀測值對當前值的影響。

  2. I部分用于使非平穩時間序列達到平穩,通過一階或者二階等差分處理,消除了時間序列中的趨勢和季節性因素。

  3. 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模型的建模步驟

  1. 平穩性檢驗:使用ADF檢驗等方法檢驗時間序列是否平穩
  2. 差分處理:如果序列非平穩,進行差分直到序列平穩
  3. 模型識別:通過ACF和PACF圖確定合適的p、q值
  4. 模型擬合:估計模型參數
  5. 模型診斷:檢驗殘差是否為白噪聲
  6. 模型預測:使用擬合好的模型進行預測

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[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])for key, value in dftest[4].items():dfoutput['Critical Value (%s)'%key] = valueprint(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=1p?αi?εt?i2?+j=1q?βj?σt?j2?

4. 狀態空間模型

  • 卡爾曼濾波:遞歸估計動態系統狀態的算法
  • 結構時間序列模型:將時間序列分解為趨勢、季節性和不規則成分

5. 機器學習和深度學習模型

  • Prophet:Facebook開發的時間序列預測工具,適合處理具有強季節性的數據
  • LSTM (長短期記憶網絡):一種特殊的RNN,能夠學習長期依賴關系
  • GRU (門控循環單元):LSTM的簡化版本,計算效率更高
  • Transformer:基于注意力機制的模型,近年來在時間序列預測中表現出色
  • N-BEATS:純深度學習方法,不依賴于傳統的時間序列分解

7 ARIMA模型的優缺點

優點

  1. 理論基礎扎實,模型簡單易懂
  2. 適用于大多數線性時間序列問題
  3. 預測短期趨勢效果較好
  4. 模型解釋性強

缺點

  1. 只適用于平穩或可通過差分轉化為平穩的時間序列
  2. 對非線性關系的建模能力有限
  3. 需要較長的歷史數據才能得到較好的效果
  4. 不適合處理具有長期記憶特性的序列

8 如何選擇合適的時間序列模型

選擇時間序列模型時,需要考慮以下因素:

  1. 數據特性:是否存在趨勢、季節性、周期性
  2. 預測時間范圍:短期預測和長期預測適合的模型不同
  3. 數據量:深度學習模型通常需要更多的數據
  4. 解釋性需求:是否需要理解模型的內部機制
  5. 計算資源:復雜模型需要更多的計算資源

9 結論

ARIMA作為經典的時間序列分析模型,在許多場景下仍然表現良好。隨著機器學習和深度學習的發展,時間序列分析工具箱不斷豐富,為不同的應用場景提供了更多選擇。在實際應用中,應根據具體問題特點選擇合適的模型,有時候甚至可以將多種模型結合使用,以獲得更好的預測效果。

參考資料

  1. Box, G. E. P., & Jenkins, G. M. (1976). Time Series Analysis: Forecasting and Control.
  2. Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice.
  3. statsmodels官方文檔: https://www.statsmodels.org/
  4. 時間序列模型(四):ARIMA模型

希望這篇文章對您了解ARIMA和其他時間序列模型有所幫助!如有任何問題,歡迎在評論區留言交流。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75859.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式AI開發者職業成長路線圖

嵌入式AI開發者職業成長路線圖 一、核心技術能力構建 1. 深度學習框架 TensorFlow/TensorFlow Lite:適合部署到嵌入式設備PyTorch:研究和原型開發ONNX:模型轉換與部署 2. 模型理解與應用 卷積神經網絡(CNN):圖像識別、目標檢…

單元測試之mockito

簡介 mockito是一款模擬測試框架,用于Java開發中的單元測試。通過mockito,可以創建和配置一個對象,通過它來替換對象的外部依賴。 作用:模擬一個類的外部依賴,保證單元測試的獨立性。例如,在類A中會調用類…

Oracle數據庫數據編程SQL<5 正則表達式函數*****>

Oracle 提供了一組強大的正則表達式函數,用于在 SQL 和 PL/SQL 中進行復雜的模式匹配和文本處理。這些函數基于 POSIX 標準正則表達式,功能強大且靈活。 目錄 一、Oracle 正則表達式函數概覽 二、函數詳解及示例 1. REGEXP_LIKE 2. REGEXP_INSTR 3. REGEXP_SUBSTR 4. …

el-tabs添加按鈕增加點擊禁止樣式

前置文章 一、vue使用element-ui自定義樣式思路分享【實操】 二、vue3&ts&el-tabs多個tab表單校驗 現狀確認 點擊添加按鈕,沒有點擊樣式,用戶感知不明顯沒有限制最大的tab添加數量,可以無限添加 調整目標&代碼編寫 調整目標…

DB-Mysql中TIMESTAMP與DATETIME的區別

文章目錄 ?存儲范圍??時區處理?存儲空間?默認值和自動更新??零值處理?適用場景?總結 在MySQL中,TIMESTAMP和DATETIME是兩種常用的日期時間數據類型,它們雖然都用于存儲日期和時間,但在多個方面存在顯著差異。以下是它們的主要區別&a…

Spring 中有哪些設計模式?

🧠 一、Spring 中常見的設計模式 設計模式類型Spring 中的應用場景單例模式創建型默認 Bean 是單例的工廠模式創建型BeanFactory、FactoryBean抽象工廠模式創建型ApplicationContext 提供多個工廠接口代理模式結構型AOP 動態代理(JDK/CGLIB)…

C# Winform 入門(3)之尺寸同比例縮放

放大前 放大后 1.定義當前窗體的寬度和高度 private float x;//定義當前窗體的寬度private float y;//定義當前窗臺的高度 2.接收當前窗體的尺寸大小 x this.Width;//存儲原始寬度ythis.Height;//存儲原始高度setTag(this);//為控件設置 Tag 屬性 3.聲明方法,獲…

從零開始的編程-java篇1.6.3

前言: 通過實踐而發現真理,又通過實踐而證實真理和發展真理。從感性認識而能動地發展到理性認識,又從理性認識而能動地指導革命實踐,改造主觀世界和客觀世界。實踐、認識、再實踐、再認識,這種形式,循環往…

【Redis】數據的淘汰策略

目錄 淘汰策略方案(8種) LRU和LFU策略的區別 使用建議 手搓LRU算法 方式一 方式二 大家好,我是jstart千語。今天和大家回來聊一下redis,這次要講的是它的淘汰策略。為什么需要淘汰策略呢,就是當redis里面的內存占…

【前端】Node.js一本通

近兩天更新完畢,建議關注收藏點贊。 目錄 復習Node.js概述使用fs文件系統模塊path路徑模塊 http模塊 復習 為什么JS可以在瀏覽器中執行 原理:待執行的JS代碼->JS解析引擎 不同的瀏覽器使用不同的 JavaScript 解析引擎:其中,C…

【AI論文】JavisDiT: 具備層次化時空先驗同步機制的聯合音視頻擴散Transformer

摘要:本文介紹了一種新型的聯合音頻-視頻擴散變換器JavisDiT,該變換器專為同步音頻-視頻生成(JAVG)而設計。 基于強大的擴散變換器(DiT)架構,JavisDiT能夠根據開放式用戶提示同時生成高質量的音…

Java-實現公有字段自動注入(創建人、創建時間、修改人、修改時間)

文章目錄 Mybatis-plus實現自動注入定義 MetaObjectHandler配置 MyBatis-Plus 使用 MetaObjectHandler實體類字段注解使用服務類進行操作測試 Jpa啟用審計功能實現自動注入添加依賴啟動類啟用審計功能實現AuditorAware接口實體類中使用審計注解 總結 自動注入創建人、創建時間、…

金融機構開源軟件風險管理體系建設

開源軟件為金融行業帶來了創新活力的同時,也引入了一系列獨特的風險。金融機構需要構建系統化的風險管理體系,以識別和應對開源軟件在全生命周期中的各種風險點。下面我們將解析開源軟件在金融場景下的主要風險類別,并探討如何建立健全的風險…

圖形渲染中的定點數和浮點數

三種API的NDC區別 NDC全稱,Normalized Device Coordinates Metal、Vulkan、OpenGL的區別如下: featureOpenGL NDCMetal NDCVulkan NDC坐標系右手左手右手z值范圍[-1,1][0,1][0,1]xy視口范圍[-1,1][-1,1][-1,1] GPU渲染的定點數和浮點數 定點數類型&a…

同花順客戶端公司財報抓取分析

目標客戶端下載地址:https://ft.51ifind.com/index.php?c=index&a=download PC版本 主要難點在登陸,獲取token中的 jgbsessid (每次重新登錄這個字段都會立即失效,且有效期應該是15天的) 抓取jgbsessid 主要通過安裝mitmproxy 使用 mitmdump + 下邊的腳本實現監聽接口…

QT工程建立

打開軟件新建一個工程 選擇chose 工程命名,選擇保存路徑,可以自己選擇,但是不要有中文路徑 默認的直接下一步 任意選一個下一步 點擊完成 之后是這個界面,點擊右下角的綠色三角形編譯一下 實驗內容 添加類 第一個是建立cpp和.h文件…

【NLP 53、投機采樣加速推理】

目錄 一、投機采樣 二、投機采樣改進:美杜莎模型 流程 改進 三、Deepseek的投機采樣 流程 Ⅰ、輸入文本預處理 Ⅱ、引導模型預測 Ⅲ、候選集篩選(可選) Ⅳ、主模型驗證 Ⅴ、生成輸出與循環 騙你的,其實我在意透了 —— 25.4.4 一、…

ffmpeg時間基與時間戳

時間基、時間戳 時間基:表示時間單位的分數,用來定義視頻或音頻流中時間的精度。其形式是一個分數,分子通常為 1,而分母則表示每秒的單位數。 時間戳:代表在時間軸里占了多少個格子,是特定的時間點。 時間…

激光加工中平面傾斜度的矯正

在激光加工中,加工平面的傾斜度矯正至關重要,直接影響加工精度和材料處理效果。以下是系統的矯正方法和步驟: 5. 驗證與迭代 二次測量:加工后重新檢測平面度,確認殘余誤差。 反饋優化:根據誤差分布修正補償…

算法刷題記錄——LeetCode篇(2.2) [第111~120題](持續更新)

更新時間:2025-04-04 算法題解目錄匯總:算法刷題記錄——題解目錄匯總技術博客總目錄:計算機技術系列博客——目錄頁 優先整理熱門100及面試150,不定期持續更新,歡迎關注! 114. 二叉樹展開為鏈表 給你二…