arima預測python程序(python做arima模型預測)

本文目錄一覽:

arima模型python 怎麼看平穩性

時間序列分析(一) 如何判斷序列是否平穩

序列平穩不平穩,一般採用兩種方法:

第一種:看圖法

圖是指時序圖,例如(eviews畫滴):

分析:什麼樣的圖不平穩,先說下什麼是平穩,平穩就是圍繞著一個常數上下波動。

看看上面這個圖,很明顯的增長趨勢,不平穩。

第二種:自相關係數和偏相關係數

還以上面的序列為例:用eviews得到自相關和偏相關圖,Q統計量和伴隨概率。

分析:判斷平穩與否的話,用自相關圖和偏相關圖就可以了。

平穩的序列的自相關圖和偏相關圖不是拖尾就是截尾。截尾就是在某階之後,係數都為 0 ,怎麼理解呢,看上面偏相關的圖,當階數為 1 的時候,係數值還是很大, 0.914. 二階長的時候突然就變成了 0.050. 後面的值都很小,認為是趨於 0 ,這種狀況就是截尾。再就是拖尾,拖尾就是有一個衰減的趨勢,但是不都為 0 。

自相關圖既不是拖尾也不是截尾。以上的圖的自相關是一個三角對稱的形式,這種趨勢是單調趨勢的典型圖形。

下面是通過自相關的其他功能

如果自相關是拖尾,偏相關截尾,則用 AR 演算法

如果自相關截尾,偏相關拖尾,則用 MA 演算法

如果自相關和偏相關都是拖尾,則用 ARMA 演算法, ARIMA 是 ARMA 演算法的擴展版,用法類似 。

不平穩,怎麼辦?

答案是差分

還是上面那個序列,兩種方法都證明他是不靠譜的,不平穩的。確定不平穩後,依次進行1階、2階、3階…差分,直到平穩位置。先來個一階差分,上圖。

從圖上看,一階差分的效果不錯,看著是平穩的。

ARIMA模型用Python分析需要安裝什麼庫

需要安裝requests庫

1.requests庫

用一句話總結就是:每個Python程序員都應該有它,爬取數據必備!

2.scrapy

提取結構化數據而創建的一個爬蟲框架,是目前python社區最流行的爬蟲框架之一

3.wxPython

Python的一個GUI(圖形用戶界面)工具

4.BeautifulSoup

xml和html的解析庫對於新手非常有用

5.Pygame

哪個程序員不喜歡玩遊戲和寫遊戲?這個庫會讓你在開發2D遊戲的時候如虎添翼

6.Pyglet

3D動畫和遊戲開發引擎

7.NumPy

為Python提供了很多高級的數學方法

8.pandas

在數據操作和數據分析方面,Pandas絕無敵手。

9.Matplotlib

Matplotlib主要的作用,是用來生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等,而Matplotlib是一個Python的2D繪圖庫,它以各種硬拷貝格式和跨平台的互動式環境生成出版質量級別的圖形。

用Python預測「周期性時間序列」的正確姿勢

公司平台上有不同的api,供內部或外部調用,這些api承擔著不同的功能,如查詢賬號、發版、搶紅包等等。日誌會記錄下每分鐘某api被訪問了多少次,即一個api每天會有1440條記錄(1440分鐘),將每天的數據連起來觀察,有點類似於股票走勢的意思。我想通過前N天的歷史數據預測出第N+1天的流量訪問情況,預測值即作為合理參考,供新一天與真實值做實時對比。當真實流量跟預測值有較大出入,則認為有異常訪問,觸發報警。

我放了一份樣例數據在data文件夾下,

看一下數據大小和結構

畫圖看一下序列的走勢:(一些畫圖等探索類的方法放在了test_stationarity.py 文件中,包含時間序列圖,移動平均圖,有興趣的可以自己嘗試下)。

看這糟心的圖,那些驟降為0的點這就是我遇到的第一個坑,我當初一拿到這份數據就開始做了。後來折騰了好久才發現,那些驟降為0的點是由於數據缺失,ETL的同學自動補零造成的,溝通晚了(TДT)。

把坑填上,用前後值的均值把缺失值補上,再看一眼:

發現這份數據有這樣幾個特點,在模型設計和數據預處理的時候要考慮到:

前六天的數據做訓練,第七天做測試集。

消除數據的毛刺,可以用移動平均法,我這裡沒有採用,因為我試過發現對於我的數據來說,移動平均處理完後並不能使數據平滑,我這裡採用的方法很簡單,但效果還不錯:把每個點與上一點的變化值作為一個新的序列,對這裡邊的異常值,也就是變化比較離譜的值剃掉,用前後數據的均值填充,注意可能會連續出現變化較大的點:

平滑後的訓練數據:

採用statsmodels工具包:

對分解出來的趨勢部分單獨用arima模型做訓練:

預測出趨勢數據後,加上周期數據即作為最終的預測結果,但更重要的是,我們要得到的不是具體的值,而是一個合理區間,當真實數據超過了這個區間,則觸發報警,誤差高低區間的設定來自剛剛分解出來的殘差residual數據:

預測並完成最後的加法處理,得到第七天的預測值即高低置信區間:

對第七天作出預測,評估的指標為均方根誤差rmse,畫圖對比和真實值的差距:

可以看到,均方根誤差462.8,相對於原始數據幾千的量級,還是可以的。測試數據中的兩個突變的點,也超過了置信區間,能準確報出來。

前文提到不同的api形態差異巨大,本文只展示了一個,我在該項目中還接觸了其他形態的序列,有的有明顯的上升或下降趨勢;有的開始比較平緩,後面開始增長… … ,但是都屬於典型的周期性時間序列,它的核心思想很簡單:做好分解,做好預測結果的還原,和置信區間的設置,具體操作可根據具體業務邏輯做調整,祝大家建模愉快:-D。

原創文章,作者:KYB9G,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129604.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KYB9G的頭像KYB9G
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論