文章目录
1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF
自相关函数反映了同一序列在不同时序的取值之间的相关性。
公式:
ACF(k)=ρk=Cov(yt,yt−k)Var(yt)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 inlineimport pandas as pdimport datetimeimport matplotlib.pylab as pltimport warningsimport seaborn as snsimport statsmodelsfrom matplotlib.pylab import stylefrom statsmodels.tsa.arima_model import ARIMAfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacfstyle.use('ggplot') plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False
2、数据读取与处理
还是读取道琼斯数据集,这里就不再说啦,这次以周为单位。
详情请看机器学习——时间序列ARIMA模型(三):AR、MA、ARMA、ARIMA模型定义及公式介绍及股价预测案例代码_天海一直在的博客-CSDN博客
stockFile = 'data2000_.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':'']
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()
在p取9时后面衰减趋于0且在置信区间内,所以p取9
后续可以根据BIC贝叶斯信息准则来验证,结果和此判断一致。
机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p q参数取值
如果觉得《机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA》对你有帮助,请点赞、收藏,并留下你的观点哦!