如何預測股票分析--自動ARIMA


上一篇中,我們發現knn和線性回歸一樣,表現的不是特別好,來看看時間序列的表現

時間序列預測法其實是一種回歸預測方法,屬於定量預測,其基本原理是;一方面承認事物發展的延續性,運用過去時間序列的數據進行統計分析,推測出事物的發展趨勢;另一方面充分考慮到偶然因素影響而產生的隨機性,為了消除隨機波動的影響,利用歷史數據進行統計分析,並對數據進行適當處理,進行趨勢預測。

自動ARIMA

ARIMA是一種非常流行的時間序列預測統計方法。ARIMA模型使用過去的值來預測未來的值。ARIMA中有三個重要參數:

  • p(用來預測下一個值的過去值)

  • q(用來預測未來值的過去預測誤差)

  • d(差分的順序)

ARIMA的參數優化需要大量時間。因此我們將使用自動 ARIMA,自動選擇誤差最小的(p,q,d)最佳組合。

 

順便插一句,如果不使用自動選擇誤差的話,你可以通過計算數據的差分,作圖然后手動選擇p d q的大小,如果你對這一個方向感興趣,可以小窗我或者底下留言,在這里不多做介紹。

 

#導入庫

from pyramid.arima import auto_arima

#按照索引排序 

data = df.sort_index(ascending=True, axis=0)

 #划分訓練集、測試集

train = data[:987]

valid = data[987:]

 # 取出兩個集合中close這列的數據,第二行不是很清楚感覺沒用到,知道的大佬留言區指點迷津

training = train['Close']

validation = valid['Close']

 #建立模型(自動選擇參數)

model = auto_arima(training, start_p=1, start_q=1,max_p=3, max_q=3, m=12,start_P=0, seasonal=True,d=1, D=1, trace=True,error_action='ignore',suppress_warnings=True)

model.fit(training)

 #預測

forecast = model.predict(n_periods=248)

forecast = pd.DataFrame(forecast,index = valid.index,columns=['Prediction'])

結果

#計算rms

rms=np.sqrt(np.mean(np.power((np.array(valid['Close'])-np.array(forecast['Prediction'])),2)))

#下面兩行為結果,可不執行

rms

44.954584993246954

#plot繪圖 訓練的close,測試的close 和預測值

plt.plot(train['Close'])

plt.plot(valid['Close'])

plt.plot(forecast['Prediction'])

推論

正如我們前面看到的,自動ARIMA模型使用過去的數據來理解時間序列中的模式。利用這些值,該模型捕捉到該系列中的增長趨勢。

雖然使用這種技術的預測比以前實現的機器學習模型的預測要好得多,但是這些預測仍然與實際值相距甚遠。

從圖中可以明顯看出,該模型在序列中捕捉到了一種趨勢,但忽略了季節的影響。

 

參考:https://www.jiqizhixin.com/articles/2019-01-04-16


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM