机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值

文章目录

    • 1、自相关函数ACF
    • 2、偏自相关函数PACF
    • 3、ARIMA(p,d,q)的阶数判断
    • 4、代码实现
      • 1、引入所需依赖
      • 2、数据读取与处理
      • 3、一阶差分与绘图
      • 4、ACF
      • 5、PACF

1、自相关函数ACF

自相关函数反映了同一序列在不同时序的取值之间的相关性。

公式:
A C F ( k ) = ρ k = C o v ( y t , y t − k ) V a r ( y t ) ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})} ACF(k)=ρk=Var(yt)Cov(yt,ytk)
其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。

但对于一个平稳的AR模型,求出其滞后值的自相关系数后,得到的并不是x(t)与x(t-k)之间单纯的相关关系,其中掺杂了其他随机变量的影响

2、偏自相关函数PACF

偏自相关系数PACF是严格这两个变量(现值和滞后值)之间的相关性,剔除了中间随机变量的干扰。

3、ARIMA(p,d,q)的阶数判断

机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值_第1张图片

q看ACF,p看PACF,d看差分阶数

4、代码实现

1、引入所需依赖

%matplotlib inline
import pandas as pd
import datetime
import matplotlib.pylab as plt
import warnings
import seaborn as sns
import statsmodels
from matplotlib.pylab import style
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

style.use('ggplot')   
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False 

2、数据读取与处理

还是读取道琼斯数据集,这里就不再说啦,这次以周为单位。

详情请看机器学习——时间序列ARIMA模型(三):AR、MA、ARMA、ARIMA模型定义及公式介绍及股价预测案例代码_天海一直在的博客-CSDN博客

stockFile = 'data2000_2021.csv'
stock = pd.read_csv(stockFile, index_col=0, parse_dates=[0])#将索引index设置为时间,parse_dates对日期格式处理为标准格式。
stock.head(10)
stock_week = stock['close'].resample('W').mean()
stock_train = stock_week['2000':'2019']

3、一阶差分与绘图

stock_train.plot(figsize=(9,5))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title("Stock Close")
sns.despine()
#一阶差分
stock_diff = stock_train.diff()
stock_diff = stock_diff.dropna()
plt.figure()
plt.plot(stock_diff)
plt.title('一阶差分')
plt.show()

4、ACF

acf = plot_acf(stock_diff, lags=20)
plt.title("ACF")
acf.show()

机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值_第2张图片

置信区间内q取1,后面突出的两点判断为离群奇异值不管

5、PACF

pacf = plot_pacf(stock_diff, lags=20)
plt.title("PACF")
pacf.show()

机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值_第3张图片

在p取9时后面衰减趋于0且在置信区间内,所以p取9
后续可以根据BIC贝叶斯信息准则来验证,结果和此判断一致。

你可能感兴趣的:(Python,机器学习,机器学习,人工智能,概率论)