91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python做時間序列的方法

發布時間:2020-07-15 10:23:06 來源:億速云 閱讀:226 作者:清晨 欄目:編程語言

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

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

python做時間序列的方法

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

python做時間序列的方法

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

 python做時間序列的方法

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

差分–轉換為平穩序列

# 差分運算

# 默認1階差分

data_diff = data.diff()

# 差分后需要排空,

data_diff = data_diff.dropna()

data_diff.plot()
plt.show()

python做時間序列的方法

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

由acf,pacf判斷模型參數

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

python做時間序列的方法

python做時間序列的方法

這里選用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()

python做時間序列的方法

模型檢驗

這里選擇了 ‘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,那么相關系數與零沒有顯著差異,即為白噪聲序列。

 python做時間序列的方法

模型預測

# 模型預測

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做時間序列的方法

python做時間序列的方法

看完了這篇文章,相信你對python做時間序列的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳新县| 静乐县| 芦山县| 赤峰市| 石狮市| 玛多县| 乐亭县| 太湖县| 五台县| 沂源县| 星座| 习水县| 三台县| 邹平县| 沾益县| 潢川县| 平阳县| 宁强县| 沧州市| 太康县| 萍乡市| 大洼县| 松潘县| 眉山市| 克什克腾旗| 扶绥县| 遵义市| 宜宾县| 聂拉木县| 泸定县| 婺源县| 定南县| 商河县| 木里| 襄垣县| 平塘县| 利辛县| 隆林| 自治县| 蒙山县| 门头沟区|