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,yt−k)
其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。
但对于一个平稳的AR模型,求出其滞后值的自相关系数后,得到的并不是x(t)与x(t-k)之间单纯的相关关系,其中掺杂了其他随机变量的影响
2、偏自相关函数PACF
偏自相关系数PACF是严格这两个变量(现值和滞后值)之间的相关性,剔除了中间随机变量的干扰。
3、ARIMA(p,d,q)的阶数判断
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()
置信区间内q取1,后面突出的两点判断为离群奇异值不管
5、PACF
pacf = plot_pacf(stock_diff, lags=20)
plt.title("PACF")
pacf.show()
文章来源:https://www.toymoban.com/news/detail-423461.html
在p取9时后面衰减趋于0且在置信区间内,所以p取9
后续可以根据BIC贝叶斯信息准则来验证,结果和此判断一致。文章来源地址https://www.toymoban.com/news/detail-423461.html
到了这里,关于机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!