??♂? 个人主页: @AI_magician ?主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 ???景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!???
【数据挖掘 & 机器学习 | 时间序列】时间序列必备工具箱: 自相关与偏相关检验 作者: 计算机魔术师 版本: 1.0 ( 2023.11.18 )
摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅
该文章收录专栏 [?— 《深入解析机器学习:从原理到应用的全面指南》 —?]
@toc
和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。首先需要明确一点的是,时间序列可以分为平稳序列,即存在某种周期,季节性及趋势的方差和均值不随时间变化的序列,及非平稳序列。
传统预测方法可以分为两种,一种是更加传统的,如移动平均法,指数平均法等;一种是用的还算较多的,即AR,MA,ARMA等,下面主要介绍一下这三种方法,这类方法比较适用于小规模,单变量的预测,比如某门店的销量预测等。
在对时间序列进行建模时,我们需要对时间序列数据进行必要的检验,以下是平稳性检验及白噪声检验等。
名称 | 介绍 | 优缺点 |
---|---|---|
Augmented Dickey-Fuller (ADF) 检验(平稳性) | ADF检验用于检验时间序列数据的单位根(unit root),进而判断数据是否平稳。它基于自回归模型,通过比较单位根存在和不存在的两种情况下的残差和临界值来进行检验。 | 优点:广泛应用于平稳性检验,包括单变量和多变量时间序列数据;缺点:对数据存在线性关系的假设,不适用于非线性关系的检验。 |
Ljung-Box 检验(白噪声) | Ljung-Box检验用于检验时间序列数据中的自相关性和偏相关性,从而判断数据是否具有白噪声特性。该检验基于计算残差的自相关函数(ACF)和偏相关函数(PACF),并与临界值进行比较。 | 优点:适用于白噪声检验,可以检测时间序列数据中的高阶自相关性和偏相关性;缺点:对数据独立同分布的假设,不适用于非独立同分布的数据。 |
KPSS 检验(平稳性) | KPSS检验(Kwiatkowski-Phillips-Schmidt-Shin)用于检验时间序列数据的平稳性。与ADF检验相反,KPSS检验的零假设是数据平稳。检验基于对数据的滞后差分过程进行建模,并通过比较测试统计量和临界值进行判断。 | 优点:适用于平稳性检验,可以检测数据的趋势性;缺点:对数据存在趋势的假设,不适用于非趋势性数据的检验。 |
Jarque-Bera 检验(正态性) | Jarque-Bera检验用于检验时间序列数据的正态性。它基于样本偏度和峰度的比较,通过计算测试统计量并与临界值进行比较来判断数据是否符合正态分布。 | 优点:适用于正态性检验,可以检测数据的偏态和峰态;缺点:对数据满足独立同分布的假设,不适用于非独立同分布的数据。 |
自相关函数(ACF)和偏自相关函数(PACF)是用于分析时间序列数据的常用工具。它们可以帮助我们确定时间序列数据中的自相关和偏自相关结构,从而选择合适的模型来进行预测和分析。
首先,让我们了解一下自相关和偏自相关的概念。
自相关是指时间序列数据与其自身在不同时间点的相关性。简单来说,它衡量了时间序列数据在过去时间点与当前时间点之间的相关性。自相关函数(ACF)用于度量自相关的强度。
偏自相关是指在控制其他时间点的影响后,某一时间点与当前时间点之间的相关性。也就是说,偏自相关关注的是两个时间点之间的直接关系,而忽略了其他时间点的影响。偏自相关函数(PACF)用于度量偏自相关的强度。
ACF和PACF之间存在密切的关系,可以互相推导和解释。下面是它们的大致原理和关系:
为了更好地理解ACF和PACF,你可以将它们想象成一个投影。ACF是将时间序列数据投影到不同滞后时间点上的相关性,而PACF则是在控制其他滞后时间点的影响后,将时间序列数据投影到当前时间点上的相关性。
ADF代表"Augmented Dickey-Fuller",即"增广迪基-富勒"。ADF检验是一种常用的单位根检验方法,用于确定时间序列数据是否具有单位根(即非平稳性)。它是由迪基和富勒在1981年提出的,DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用ADF检验,所以说ADF是对DF检验的扩展。
ADF检验就是判断序列是否存在单位根:如果序列平稳,就不存在单位根;否则,就会存在单位根。
所以,ADF检验的 H0 假设就是存在单位根,如果得到的显著性检验统计量小于三个置信度(10%,5%,1%),则对应有(90%,95,99%)的把握来拒绝原假设。
以下是ADF算法的具体步骤:
步骤1:对原始时间序列进行差分,直到得到一个差分序列,使其具有更好的平稳性。计算一阶差分序列:
。
步骤2:构建回归方程。将差分序列
作为因变量,前向滞后差分序列
作为自变量,构建回归方程:
,其中
和
是回归系数,
是误差项。
步骤3:对回归方程进行估计,并计算残差。使用最小二乘法估计回归方程的系数
和
。然后计算残差序列
,表示观测值和回归方程的预测值之间的差异。
步骤4:进行单位根检验。对残差序列
进行单位根检验,以确定时间序列的平稳性。ADF测试统计量的计算公式为:
其中,
是ADF回归系数是ADF检验回归模型中时间趋势系数(β)的估计值,ADF标准误差是ADF回归系数的标准误差。。该统计量的值与临界值进行比较,以确定是否可以拒绝原假设。(用估计量除以估计量的标准误。)
步骤5:确定临界值。ADF测试的临界值取决于所选的显著性水平(例如5%或1%)。根据不同的样本量和回归方程的特性,可以使用预先计算的临界值表或近似公式来确定临界值。
步骤6:进行统计显著性检验。将ADF统计量与对应的临界值进行比较。如果ADF统计量的绝对值大于临界值,则可以拒绝原假设,并得出时间序列是平稳的结论。否则,不能拒绝原假设,时间序列被认为具有单位根,即非平稳。
请注意,ADF测试还可以进行更高阶的差分,以进一步提高时间序列的平稳性。对于更高阶差分,ADF测试的公式和步骤类似,只是回归方程和单位根检验统计量的计算会有所不同。
ADF检验可以通过python中的 statsmodels 模块,这个模块提供了很多统计模型。
# 定义单位根检验函数
def testStationarity(ts):
dftest = ADF(ts)
# 对ADF求得的值进行语义描述
dfoutput = pd.Series(dftest[0:4], index = ['Test Statistic','p-value','#Lags Used',
'Number of Observations Used'])
for key, value in dftest[4].items():
dfoutput['Critical Value (%s)'%key] = value
return dfoutput
PACF(Partial Autocorrelation Function,偏自相关函数)是用于时间序列分析的一种工具,它衡量了一个时间序列在给定滞后阶数的情况下,与自身滞后的系数相关性。PACF在建立自回归模型(AR)时非常有用,它帮助确定AR模型的滞后阶数。
PACF算法的详细步骤
,其中
。
其中,
是滞后阶数,
是
和
的协方差,
和
分别是
和
的方差。 计算自相关系数
的方法有多种,常用的是Pearson相关系数或样本自相关函数。
其中,
表示在给定
的条件下,
和
的相关系数。 偏自相关系数反映了两个变量之间的线性关系,排除了其他变量的影响,因此在建立AR模型时非常有用。
,并假设
。 b. 对于
,计算
的值。 i. 通过回归分析,将
回归到
上,得到残差序列
。 ii. 计算残差序列
的自相关系数
。 iii. 计算
的值:
c. 重复步骤 b 直到计算出所有的
。
,可以绘制PACF图,以帮助确定AR模型的滞后阶数。在PACF图中,滞后阶数为
的偏自相关系数表示为
。
这就是PACF算法的详细步骤和数学公式推导。通过计算偏自相关系数,我们可以确定AR模型的滞后阶数,从而更好地理解和预测时间序列数据。
参考文章:
http://t.csdnimg.cn/u7pIm