日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python时间序列预测报错_python如何做时间序列

發布時間:2025/3/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python时间序列预测报错_python如何做时间序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python做時間序列的方法:首先導入需要的工具包,輸入“data.plot()”,“plt().show()”命令繪制時序圖;然后由acf,pacf判斷模型參數即可。

采用python進行簡易的時間序列預測流程

時間序列可視化——>序列平穩——>acf,pacf尋找最優參——>建立模型——>模型檢驗——>模型預測

涉及到的工具包如下:#?-*-?coding:utf-8?-*-

import?pandas?as?pd

import?numpy?as?np

import?matplotlib.pyplot?as?plt

from?random?import?randrange

from?statsmodels.graphics.tsaplots?import?plot_acf,?plot_pacf

from?statsmodels.tsa.arima_model?import?ARIMA

from?statsmodels.api?import?tsa原始數據

時間序列是與時間相關的一組數據,這里的數據主要是生成的模擬數據,僅是為了練習一下處理【時間序列】的流程。def?generate_data(start_date,?end_date):

df?=?pd.DataFrame([300? ?i?*?30? ?randrange(50)?for?i?in?range(31)],?columns=['income'],

index=pd.date_range(start_date,?end_date,?freq='D'))

return?df

data?=?generate_data('20170601',?'20170701')

#?這里要將數據類型轉換為‘float64’

data['income']?=?data['income'].astype('float64')

數據可視化

這里主要是觀察數據是否是平穩序列,如果不是則要進行處理轉換為平穩序列1

# 繪制時序圖data.plot()

plt.show()

# 繪制自相關圖

plot_acf(data).show()

從時序圖中可以看出這組序列存在明顯的增長趨勢。不是平穩序列

acf圖呈現出三角對稱趨勢,進一步說明這組時間序列是一組單調趨勢的非平穩序列。

差分–轉換為平穩序列

# 差分運算

# 默認1階差分data_diff?=?data.diff()

# 差分后需要排空,data_diff?=?data_diff.dropna()

data_diff.plot()

plt.show()

可以看到在1階差分后序列已經轉換為平穩序列。

由acf,pacf判斷模型參數plot_acf(data_diff).show()

plot_pacf(data_diff).show()

這里選用ARIMA模型,參數為(1, 1, 1)

模型訓練arima?=?ARIMA(data,?order=(1,?1,?1))

result?=?arima.fit(disp=False)

print(result.aic,?result.bic,?result.hqic)

plt.plot(data_diff)

plt.plot(result.fittedvalues,?color='red')

plt.title('ARIMA?RSS:?%.4f'?%?sum(result.fittedvalues?-?data_diff['income'])?**?2)

plt.show()

模型檢驗

這里選擇了 ‘Ljung-Box檢驗’,

# ARIMA?? Ljung-Box檢驗 -----模型顯著性檢驗,Prod> 0.05,說明該模型適合樣本resid?=?result.resid

r,?q,?p?=?tsa.acf(resid.values.squeeze(),?qstat=True)

print(len(r),?len(q),?len(p))

test_data?=?np.c_[range(1,?30),?r[1:],?q,?p]

table?=?pd.DataFrame(test_data,?columns=['lag',?'AC',?'Q',?'Prob(>Q)'])

print(table.set_index('lag'))

檢驗的結果就是看最后一列前十二行的檢驗概率(一般觀察滯后1~12階),如果檢驗概率小于給定的顯著性水平,比如0.05、0.10等就拒絕原假設,其原假設是相關系數為零。就結果來看,如果取顯著性水平為0.05,那么相關系數與零沒有顯著差異,即為白噪聲序列。

模型預測

# 模型預測pred?=?result.predict('20170701',?'20170710',?typ='levels')

print(pred)

x?=?pd.date_range('20170601',?'20170705')

plt.plot(x[:31],?data['income'])

#?lenth?=?len()

plt.plot(pred)

plt.show()

print('end')

您可能感興趣的文章:

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python时间序列预测报错_python如何做时间序列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。