數據游戲」:使用 ARIMA 算法預測三日后招商銀行收盤價

      網友投稿 865 2025-04-11

      介紹

      本文整理記錄了參與的一次小型數據分析競賽「數據游戲」,競賽目標是預測2019年5月15日A股閉市時招商銀行600036的股價。

      主要思路是利用ARIMA算法做時間序列預測。

      使用的數據是公開的數據集 tushare。

      拿到題目和數據之后,首先結合既往經歷,覺得想要預測準股價,本身是一個不可能的事情,尤其是A股。

      影響股價的因素非常復雜而且不透明,以及金融投資領域具有的反身性理論,使得這次預測更多偏向于實驗性質,同時對競爭結果不要有過高的期望。

      預測得準,是你的運氣;預測的爛,也不會影響你從中學到什么。學習第一,比賽第二吧。

      鑒于以上,本次預測只使用了close的時間序列。更多的數據其實并沒有什么用。

      首先了解下本文的 ARIMA 建模過程

      獲取時間序列數據 ;

      觀察數據是否為平穩時間序列;

      對于非平穩時間序列要先進行d階差分運算,轉化為平穩時間序列;

      對處理得到的平穩時間序列,求它的階數p,q;

      根據ARIMA算法建模,ARIMA(data, order=(p, d, q))

      模型檢驗和調優

      預測

      初學的小伙伴們可能對這個過程并不熟悉,沒關系,先背下來。

      對Python不熟悉的小伙伴們, 我給大家總結了幾句車轱轆話,大家先強行了解下。

      獲取時間序列數據:

      觀察數據是否為平穩時間序列;對于非平穩時間序列要先進行d階差分運算,轉化為平穩時間序列;

      對處理得到的平穩時間序列,求它的階數p, q

      根據ARIMA算法建模

      模型檢驗和調優

      預測

      以上,是本文的核心代碼,大家如果一時看不懂,可以跳過。 可以看看下面更詳細的步驟。

      導入數據并處理

      檢驗時間序列的穩定性

      ARIMA算法要求時間序列穩定,所以在建模之前,要先檢驗時間序列的穩定性。 adfuller就是用來干這個的。 adfuller 全稱 Augmented Dickey–Fuller test, 即擴展迪基-福勒檢驗,用來測試平穩性。

      #先做一個解釋器, 讓 adfuller 的輸出結果更易讀易理解:

      adfuller檢驗是檢查時間序列平穩性的統計測試之一。 這里的零假設是:序列 train 是非平穩的。 測試結果包括測試統計和差異置信水平的一些關鍵值。 如果測試結果中的 P-value 小于臨界值,我們可以拒絕原假設并說該序列是平穩的。

      檢驗結果顯示,p-value=0.414, 遠遠大于5%的臨界值,說明零假設是成立的,即序列 train 是非平穩的。

      t is: (-1.7325346908056185, 0.4144323576685054, 0, 322, {‘1%’: -3.4508226600665037, ‘5%’: -2.870558121868621, ‘10%’: -2.571574731684734}, 523.9067372199033)

      時間序列平穩化

      為了讓時間序列平穩,需要對 train 序列做差分運算:

      關于時間序列穩定性的判斷標準,可參考這篇博客:https://blog.csdn.net/u012735708/article/details/82460962

      檢驗差分數據的平穩性

      檢驗差分后數據的平穩性,和第一次驗證方法相同

      確定ARIMA的階數p,q

      在這里,先簡單解釋下自己對 ARIMA 算法的理解。不正確的地方請大家指點。

      ARIMA算法認為時間序列上 t 時刻的值由2部分構成,第一部分是由之前p項歷史值決定的,比如15日的收盤價是12日,13日,14日的收盤價的線性回歸,用AR§表示。

      但是這個線性回歸的輸出值肯定和15日的實際收盤價有一個誤差,假設是e。

      所以第二部分就是如果表示這個 e 。

      這個e 可以認為是之前q項誤差的線性回歸,用MA(q)表示。

      兩部分合起來就是ARMA。

      「數據游戲」:使用 ARIMA 算法預測三日后招商銀行收盤價

      然后為了讓時間序列平穩,再加個d 階差分操作功能,就變成了ARIMA算法。

      所以在使用 ARIMA 算法之前,需要先確定(p, d, q)的值。

      建立模型并擬合數據

      注意ARIMA的參數中,輸入數據 應該是原始數據 train,ARIMA 會根據 d 的值,對原始數據做 d 階差分運算。 d的含義是,輸入序列需要先經過一個d階的差分,變成一個平穩序列后才能進行數據擬合。

      模型評估和調優

      預測目標

      使用 forecast 對樣本外的時間序列進行預測。

      關于foreast和predict的區別: predict 可以對樣本內和樣本外的進行預測,結果是一樣的。 舉例說明:forecast(10),表示對未來10個點進行預測,但是可以用model.fittedvalues查看樣本內點的擬合值; 而predict(start,end)里面的參數0表示樣本內的第一個數,以此類推。 如果想要預測樣本外的數,需要將start設置為len(data)+1,即數據長度+1,才表示預測樣本外的第一個數字。 而 forecast函數,是對樣本外的數據進行預測。 但是這兩個函數的預測結果是一樣的。 另外,需要提到的是,ARIMA算法一般只能預測一點點,越長越不準確,即便是簡單的正弦函數也不能準確預測。

      5月15日close時的股價為:33.82 元。

      順便安利下這次參與的小競賽「數據游戲」,是由個人發起、異步社區(郵電出版社)贊助的活動。

      總體來說,這個比賽氛圍適中,沒有太大的心理負擔。

      所以感覺比較適合打算初入的小伙伴,參與之后,這樣的經驗對以后的學習進階和職業發展都有好處。

      Ad Time

      參與數據科學活動請加 QQ 群:759677734

      本文轉載自異步社區。

      5G游戲 Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何自動分頁(excel表格打印時如何自動分頁)
      下一篇:office2016官方下載(暫未上線)_免費完整版_office2016簡體中文版官方下載(暫未上線)
      相關文章
      亚洲乱码国产一区三区| 亚洲第一页综合图片自拍| 亚洲色婷婷一区二区三区| 国产亚洲精品美女久久久久久下载| 亚洲熟妇无码AV| 国产成人精品日本亚洲专 | 亚洲高清美女一区二区三区| 亚洲高清专区日韩精品| 国精无码欧精品亚洲一区| 国产亚洲美女精品久久久久狼| 亚洲精品无码永久在线观看你懂的| 亚洲一区二区三区免费| 亚洲精品一级无码中文字幕| 亚洲综合久久夜AV | 国产偷国产偷亚洲清高动态图| 国产亚洲一区二区三区在线不卡| 国产精品亚洲mnbav网站| 三上悠亚亚洲一区高清| 亚洲一区二区三区无码中文字幕| 亚洲韩国精品无码一区二区三区| 亚洲国产精品一区二区第一页| 久久久无码精品亚洲日韩蜜桃| 久久亚洲精品成人| 亚洲天堂中文字幕| 亚洲妓女综合网99| 亚洲色图激情文学| 精品亚洲视频在线| 浮力影院亚洲国产第一页| 亚洲日本一区二区三区在线| 亚洲AV无码一区二区二三区入口| 亚洲精品线在线观看| 亚洲日本乱码一区二区在线二产线 | 亚洲卡一卡二卡乱码新区| 亚洲丶国产丶欧美一区二区三区 | 在线观看亚洲人成网站| 亚洲国产高清在线精品一区| 亚洲综合国产成人丁香五月激情 | avtt亚洲天堂| 亚洲综合av永久无码精品一区二区 | 国产亚洲无线码一区二区| 久久精品国产亚洲av四虎|