python時間序列分析

2021-12-30 02:32:54 字數 2448 閱讀 7028

什麼是時間序列

時間序列簡單的說就是各時間點上形成的數值串行,時間序列分析就是通過觀察歷史資料**未來的值。在這裡需要強調一點的是,時間序列分析並不是關於時間的回歸,它主要是研究自身的變化規律的(這裡不考慮含外生變數的時間序列)。

為什麼用python

用兩個字總結「情懷」,愛屋及烏,個人比較喜歡python,就用python擼了。能做時間序列的軟體很多,sas、r、spss、eviews甚至matlab等等,實際工作中應用得比較多的應該還是sas和r,前者推薦王燕寫的《應用時間序列分析》,後者推薦「基於r語言的時間序列建模完整教程」這篇博文(翻譯版)。python作為科學計算的利器,當然也有相關分析的包:statsmodels中tsa模組,當然這個包和sas、r是比不了,但是python有另乙個神器:pandas!pandas在時間序列上的應用,能簡化我們很多的工作。

環境配置

python推薦直接裝anaconda,它整合了許多科學計算包,有一些包自己手動去裝還是挺費勁的。statsmodels需要自己去安裝,這裡我推薦使用0.6的穩定版,0.7及其以上的版本能在github上找到,該版本在安裝時會用c編譯好,所以修改底層的一些**將不會起作用。

時間序列分析

1.基本模型

自回歸移動平均模型(arma(p,q))是時間序列中最為重要的模型之一,它主要由兩部分組成: ar代表p階自回歸過程,ma代表q階移動平均過程,其公式如下:

依據模型的形式、特性及自相關和偏自相關函式的特徵,總結如下:

在時間序列中,arima模型是在arma模型的基礎上多了差分的操作。

2.pandas時間序列操作

大熊貓真的很可愛,這裡簡單介紹一下它在時間序列上的可愛之處。和許多時間序列分析一樣,本文同樣使用航空乘客資料(airpassengers.csv)作為樣例。

資料讀取:

# -*- coding:utf-8 -*-

import numpy as np

import pandas as pd

from datetime import datetime

import matplotlib.pylab as plt

# 讀取資料,pd.read_csv預設生成dataframe物件,需將其轉換成series物件

df = pd.read_csv('airpassengers.csv', encoding='utf-8', index_col='date')

df.index = pd.to_datetime(df.index) # 將字串索引轉換成時間索引

ts = df['x'] # 生成pd.series物件

# 檢視資料格式

檢視某日的值既可以使用字串作為索引,又可以直接使用時間物件作為索引

ts['1949-01-01']

ts[datetime(1949,1,1)]

兩者的返回值都是第乙個序列值:112

如果要檢視某一年的資料,pandas也能非常方便的實現

切片操作:

注意時間索引的切片操作起點和尾部都是包含的,這點與數值索引有所不同

pandas還有很多方便的時間序列函式,在後面的實際應用中在進行說明。

3. 平穩性檢驗

我們知道序列平穩性是進行時間序列分析的前提條件,很多人都會有疑問,為什麼要滿足平穩性的要求呢?在大數定理和中心定理中要求樣本同分布(這裡同分布等價於時間序列中的平穩性),而我們的建模過程中有很多都是建立在大數定理和中心極限定理的前提條件下的,如果它不滿足,得到的許多結論都是不可靠的。以虛假回歸為例,當響應變數和輸入變數都平穩時,我們用t統計量檢驗標準化係數的顯著性。而當響應變數和輸入變數不平穩時,其標準化係數不在滿足t分布,這時再用t檢驗來進行顯著性分析,導致拒絕原假設的概率增加,即容易犯第一類錯誤,從而得出錯誤的結論。

平穩時間序列有兩種定義:嚴平穩和寬平穩

嚴平穩顧名思義,是一種條件非常苛刻的平穩性,它要求序列隨著時間的推移,其統計性質保持不變。對於任意的τ,其聯合概率密度函式滿足:

嚴平穩的條件只是理論上的存在,現實中用得比較多的是寬平穩的條件。

寬平穩也叫弱平穩或者二階平穩(均值和方差平穩),它應滿足:

時間序列分析

協方差矩陣和相關係數主要研究兩個連續變數的相似程度 相關性 協方差公式 協方差矩陣 相關係數 cov x,y var x var y 相關係數矩陣 可以使用ljung box方法進行檢驗。即box.test data,type ljung box lag num 來檢驗,當p value大於0.05...

時間序列分析

時間序列資料分為平穩 寬平穩 和非平穩兩種。平穩序列中也包括隨機序列,即序列資料之間沒有任何相關性或記憶性,純隨機的,這種序列沒有挖掘分析的必要。純隨機序列也稱為白雜訊序列。序列中的隨機變數之間的相關係數r k 0,k不為 0 經過預處理若發現序列是平穩非隨機序列,則可用的模型為arma。ar模型是...

時間序列分析

觀察變數動態的變化,我們需要動態序列,也即是我們的時間序列。時間序列的要素是時間 資料,所要解決的問題即是時間序列所帶來的序列相關性的問題。四種變動 長期變動趨勢 季節變動趨勢 週期變動趨勢 不規則變動趨勢 第一種想象為單增的曲線 第二三種可以想象為週期變化的折線 第四種想象為白雜訊 疊加模型 四種...