2018年11月17日 星期六

時間序列分析-ACF自我相關係數

(本篇文章利用Python實作)

今天要介紹的一樣是時間序列分析
而ACF這個統計量在時間序列分析中是很重要的統計量
因此利用這篇文章來跟大家談談他的意義和如何實做出來吧~

在一直以來的時間序列分析中
我們在探討的是要如何建立一個AR模型
其中無論要自己實作模型或是import套件
基本上都是要先決定要估計落後幾期的模型
而這個落後的期數應該如何決定就是一個大問題
而ACF就給了我們一個很好的參考指標

ACF:自我相關係數
正如其名 就是該變數與落後期的相關係數
應此可以了解到變數與落後期數的相關性
而這是今天主要會用到的套件
有興趣的同學可以來這裡深入了解喔
https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.acf.html
https://www.statsmodels.org/dev/generated/statsmodels.graphics.tsaplots.plot_acf.html
import numpy as np
import pandas as pd

一樣先匯入必備的套件
data = pd.read_csv('m_pg6116_3dx.csv')
data.head(3)

把資料匯入 印出來看看有沒有怪怪的
from statsmodels.tsa.stattools import acf
acf(data['sprtrn'])[0:13]

再import計算acf的函數
根據要求的格式輸入值就可以得到答案啦
(點擊看大圖)

這就是變數與落後期的自我相關係數啦
而第一個值一定是1 畢竟自己跟自己落後0期是一樣的東西
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data['sprtrn'], lags= 12, alpha=0.05)

而ACF通常會利用視覺化的圖來呈現
所以我們import這個函數來繪製出來吧
其中lag=12是我們想看到落後0~12期的自我相關係數
而alpha顯著水準我們通常使用5%
也就是他要超過5%我們才會說他顯著異於0
就來看看圖吧~
(點擊看大圖)

哪些值跟當期有無關係就可以輕鬆地看出了
落後5期的應該拒絕H0
也就是他顯著異於0
其他對於當期的影響都很小
因此我們就可以用ACF當作標準來判別ARMA的落後項應該怎麼設

所以今天學到的有:
了解ACF的意義
運用acf函數計算ACF
運用plot_acf函數將ACF結果視覺化

未來會繼續分享實例給大家囉~

沒有留言:

張貼留言