真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python做時(shí)間序列的方法

小編給大家分享一下python做時(shí)間序列的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)主營(yíng)界首網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),界首h5微信小程序開(kāi)發(fā)搭建,界首網(wǎng)站營(yíng)銷推廣歡迎界首等地區(qū)企業(yè)咨詢

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

python做時(shí)間序列的方法

采用python進(jìn)行簡(jiǎn)易的時(shí)間序列預(yù)測(cè)流程

時(shí)間序列可視化——>序列平穩(wěn)——>acf,pacf尋找最優(yōu)參——>建立模型——>模型檢驗(yàn)——>模型預(yù)測(cè)

涉及到的工具包如下:

# -*- 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原始數(shù)據(jù)

時(shí)間序列是與時(shí)間相關(guān)的一組數(shù)據(jù),這里的數(shù)據(jù)主要是生成的模擬數(shù)據(jù),僅是為了練習(xí)一下處理【時(shí)間序列】的流程。

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')
# 這里要將數(shù)據(jù)類型轉(zhuǎn)換為‘float64’
data['income'] = data['income'].astype('float64')

數(shù)據(jù)可視化

這里主要是觀察數(shù)據(jù)是否是平穩(wěn)序列,如果不是則要進(jìn)行處理轉(zhuǎn)換為平穩(wěn)序列1

# 繪制時(shí)序圖

data.plot()
plt.show()

# 繪制自相關(guān)圖

plot_acf(data).show()

python做時(shí)間序列的方法

從時(shí)序圖中可以看出這組序列存在明顯的增長(zhǎng)趨勢(shì)。不是平穩(wěn)序列

 python做時(shí)間序列的方法

acf圖呈現(xiàn)出三角對(duì)稱趨勢(shì),進(jìn)一步說(shuō)明這組時(shí)間序列是一組單調(diào)趨勢(shì)的非平穩(wěn)序列。

差分–轉(zhuǎn)換為平穩(wěn)序列

# 差分運(yùn)算

# 默認(rèn)1階差分

data_diff = data.diff()

# 差分后需要排空,

data_diff = data_diff.dropna()

data_diff.plot()
plt.show()

python做時(shí)間序列的方法

可以看到在1階差分后序列已經(jīng)轉(zhuǎn)換為平穩(wěn)序列。

由acf,pacf判斷模型參數(shù)

plot_acf(data_diff).show()
plot_pacf(data_diff).show()

python做時(shí)間序列的方法

python做時(shí)間序列的方法

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

模型訓(xùn)練

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()

python做時(shí)間序列的方法

模型檢驗(yàn)

這里選擇了 ‘Ljung-Box檢驗(yàn)’,

# ARIMA   Ljung-Box檢驗(yàn) -----模型顯著性檢驗(yàn),Prod> 0.05,說(shuō)明該模型適合樣本

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'))

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

 python做時(shí)間序列的方法

模型預(yù)測(cè)

# 模型預(yù)測(cè)

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')

python做時(shí)間序列的方法

python做時(shí)間序列的方法

看完了這篇文章,相信你對(duì)python做時(shí)間序列的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


本文名稱:python做時(shí)間序列的方法
網(wǎng)頁(yè)URL:http://weahome.cn/article/igoedd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部