问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

从0开始理解时间序列模型中的ACF和PACF

创作时间:
作者:
@小白创作中心

从0开始理解时间序列模型中的ACF和PACF

引用
CSDN
1.
https://blog.csdn.net/wq2571931803/article/details/140574751

在时间序列分析中,ACF(自相关函数)和PACF(偏自相关函数)是两个非常重要的概念,它们帮助我们理解数据的自相关性,并选择合适的时间序列模型。本文将通过股价预测的例子,深入浅出地解释这两个概念及其应用。

ACF

先了解一下概念,我不喜欢用公式套话讲。

ACF(自相关函数):就是看看当前的股票价格和之前的股票价格之间有没有关系。比如说,今天的价格和昨天的价格是不是有联系,今天的价格和前天的价格是不是有联系,依此类推。
如果 ACF 值很高,说明今天的价格和之前某一天的价格关系很大。这可能意味着股票价格有某种规律,比如每隔几天就有一个相似的趋势(这就是所谓的“季节性”或“趋势”)。

假设我们有一系列的开盘价:

  • 今天的开盘价(D0):100元
  • 昨天的开盘价(D1):98元
  • 前天的开盘价(D2):97元
  • 大前天的开盘价(D3):96元
  • 四天前的开盘价(D4):95元

那么ACF看的是:

  • 今天的开盘价和昨天的开盘价之间的关系。
  • 今天的开盘价和前天的开盘价之间的关系。
  • 今天的开盘价和大前天的开盘价之间的关系。

我们计算的式子是

我们计算出

自相关函数(ACF)的值也在 -1 和 1 之间。,ACF()里面的1,2,3,4是代表相较与前面的前几天,如ACF(1)代表乡较与前一天,2代表相较与前两天

ACF正相关:如果 ACF 是正值,说明当前的开盘价和之前某一天的开盘价之间有正相关关系。也就是说,如果之前某一天的开盘价较高,那么当前的开盘价也可能较高;反之亦然。

比如:ACF(1)=0.335 表示今天的开盘价和昨天的开盘价有正相关关系。昨天的开盘价高,今天的开盘价也可能高。

ACF负相关:如果 ACF 是负值,说明当前的开盘价和之前某一天的开盘价之间有负相关关系。也就是说,如果之前某一天的开盘价较高,那么当前的开盘价可能较低;反之亦然。

比如:ACF(3)=−0.346 表示今天的开盘价和大前天的开盘价有负相关关系。大前天的开盘价高,今天的开盘价可能低。

当然这些只是可能,对于股价预测来说,它不靠谱,因为这只是理论罢了,真正的股票没有规律,如果有我也不会这么穷了。

那么我们是不是得到了结论:如果ACF越高,就代表以前的股价和现在的股价相关性高,那么你仔细想想,相关性高代表什么?那是不是代表着

之前的价格和今天的价格可以建立某种关系趋势函数,我们可以从前面之前的价格推断出我们今天的价格。

什么是季节性?趋势?

举个例子:我开了一个冰淇淋店,一般是夏天收益高,其他季节淡吧,那么我卖东西是不是可以遵循这个规律,夏天多进点货,其他季节少一点。那么着就是季节性,也就是趋势。夏天多来电,其他季节少来点。

模型选择问题

那我们进行深度学习训练,或者进行股价预测的时候,我们该怎么确定是要高ACF和低ACF呢?

这个是根据模型来选择的

高的 ACF 值:适合使用复杂的时间序列模型(如 ARIMA 或 SARIMA),因为这些模型可以捕捉到数据中的自相关性和季节性成分。

低的 ACF 值:适合使用简单的平滑模型或移动平均模型,因为数据自相关性较弱。

ACF处理问题

再我们进行股价预测的时候,我们一般考虑为有一支非常平稳的趋势线让股价上涨,为什么?因为有利我们模型的数据处理,以(informer)为例子。加入编码的时候数据突然忽高,那么得到的上下文信息就稳定,我们预测的结果就会有偏差。所以我们一般会进行处理,让它趋于平稳上涨。

那么一般用什么呢?(这里只介绍一种)

差分:我们一般是先画出数据的差分图,看是否有趋势或者季节性。

那么大家肯定想知道什么是季节性,如下图,这个是冰淇淋的销售季度图,我们发现它总是有规律的起浮。那么这就是有规律的。

看不懂看下面这个画出来的ACF图,你看1,2,3,4总是有规律的上下上下浮动。这就是不平稳的。

所以需要差分处理。那我们处理前后的图变成什么样子呢?

处理前的

处理后的:发现是不是平稳一些

PACF(偏自相关系数)

讲白话,比如ACF是前几天对当天的影响,那么PACF是前面的某一天对当天的影响。

我们还是之前的那个股价的例子:

  • 今天的开盘价(D0):100元
  • 昨天的开盘价(D1):98元
  • 前天的开盘价(D2):97元
  • 大前天的开盘价(D3):96元
  • 四天前的开盘价(D4):95元

得到

  • PACF(1) = 0.8
  • PACF(2) = 0.3
  • PACF(3) = -0.1
  • PACF(4) = -0.2

偏自相关函数(PACF)的值通常在 -1 和 1 之间,正值代表正相关,负值代表负相关,意义和前面ACF一样,只不过是针对前面的特指某一天而言。PACF()里面的1,2,3,4是代表相较与前面的第几天比如PACF(1)代表前一天对今天的影响,PACF(2)代表倒数第二天对今天的影响。。。。

PACF(1) = 0.8:昨天的开盘价较高,今天的开盘价也可能较高。正相关性较强,表示昨天的开盘价对今天的开盘价有显著的正面影响。前天的开盘价较高,今天的开盘价也可能较高,但这种影响比滞后 1 的影响要小一些。

**PACF(2) = 0.3:**前天的开盘价(D2 = 97元)对今天的开盘价(D0 = 100元)有中等程度的直接影响,而这种影响不是通过昨天的开盘价间接产生的。大前天的开盘价较高,今天的开盘价可能略低,但这种负相关性很弱。

PACF(3) = -0.1四天前的开盘价(D4 = 95元)对今天的开盘价(D0 = 100元)有中等程度的负相关影响。四天前的开盘价较高,今天的开盘价可能较低。负相关性表明四天前的开盘价对今天的开盘价有一定的反向影响。

模型选择

那么我们模型所需要数据的PACF是越大越好还是越小越好呢?

答案是看你的模型复杂度。

PACF 值越大:表示滞后期的直接相关性越强,应在模型中考虑这些滞后期。
PACF 值越小:表示滞后期的直接相关性越弱,可以忽略这些滞后期。

那么我们人事一下这个

AR项(自回归项,Autoregressive term)是时间序列模型中表示当前值与其过去值之间关系的一部分。意思就是当前值可以通过过去值的线性组合来解释。

首先我们看ACF和PACF是否显著是用其值的绝对值是否大于你的置信区间来定义的!

比如 你模型定义|PACF|>0.2就是很好了,那么PACF(2)=0.3就是显著的。

对于我们的简单模型来说 如lstm

简单模型只选择 PACF 图中最显著的几个滞后期作为自回归项(AR 项)。

例如,若 PACF(1) 显著,可以选择 AR(1) 模型;若 PACF(1) 和 PACF(2) 显著,可以选择 AR(2) 模型。

简单模型的参数较少,更容易解释和理解。

例如,AR(1) 模型只考虑前一天的股价对今天股价的影响,AR(2) 模型则考虑前两天的股价对今天股价的影响。

对于复杂模型 如informer

复杂模型可能选择多个显著的滞后期作为自回归项,甚至包括一些不那么显著但仍有一定相关性的滞后期。

例如,若 PACF(1)、PACF(2)、PACF(3) 显著,可以选择 AR(3) 模型;若 PACF(4)、PACF(5) 也有一定相关性,可以考虑更高阶的模型。

复杂模型试图捕捉数据中的更多细节和复杂关系,适用于数据中存在复杂模式或长记忆效应的情况。

例如,ARIMA(3,1,2) 模型同时考虑了多个自回归项和移动平均项,适合处理更复杂的时间序列数据。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号