时间序列学习(4):平稳性检验(单位根检验、ADF检验)

article/2025/10/8 21:33:23

时间序列学习(4):平稳性检验(单位根检验、ADF检验)

      • 1、单位根检验
      • 2、ADF检验
      • 3、指数走势的检验
      • 4、对数收益率序列检验

相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。

这篇笔记来就谈一谈平稳性的检验。

到目前为止,我们有了以下的时间序列模型:

  • 白噪声;
  • 随机游走;
  • AR模型;
  • MA模型;
  • ARMA模型。

我们知道白噪声、MA模型一定是平稳的(这里的平稳都是弱平稳);随机游走一定是不平稳的;ARMA模型取决于其AR部分。

所以唯一需要做平稳性检验的就是AR模型。

1、单位根检验

先来看一阶AR模型,即AR(1)的情况,其模型如下:

r t = α 1 r t − 1 + w t r_t=\alpha_1r_{t-1}+w_t rt=α1rt1+wt

如果 α 1 = 1 \alpha_1=1 α1=1,该模型就是随机游走,我们知道它是不平稳的。换个思路想象一下,当 α 1 = 1 \alpha_1=1 α1=1,那么前一时刻的收益率对当下时刻的影响是100%的,不会减弱;那么就算是很远的某个时刻,当下对它的影响还是不会消除,所以方差(表现在波动)是受前面所有时刻的影响,是和 t t t相关的,因此不平稳;

如果 α 1 > 1 \alpha_1\gt1 α1>1,那么当前时刻的波动不仅受前面时刻的影响,还被放大了,所以肯定不平稳;

只有当 α 1 < 1 \alpha_1\lt1 α1<1的时候,前面时刻的波动对当前时刻的影响会逐渐减小。可以计算此时的自协方差以及自相关系数是一个固定值。所以这种情况下,序列是平稳的。

对于高阶的AR模型也是一样的,一个AR (P)阶 模型如下:

r t = ∑ i = 1 P α i r t − i + w t r_t=\sum^P_{i=1}\alpha_ir_{t-i}+w_t rt=i=1Pαirti+wt

如果 α 1 , . . . , α 2 \alpha_1,...,\alpha_2 α1,...,α2都小于1,那么这个序列是平稳的;存在某一个 α i ≥ 1 \alpha_i\ge1 αi1,这个序列就不是平稳的。

要判断 α 1 , . . . , α 2 \alpha_1,...,\alpha_2 α1,...,α2是否都小于1,一般利用AR模型的特征方程,如下:

1 − α 1 x − α 2 x 2 − . . . − α p x p = 0 1-\alpha_1x-\alpha_2x^2-...-\alpha_px^p=0 1α1xα2x2...αpxp=0

这个方程有p个根。

检验AR序列是否平稳,就是检验是否存在某个根大于等于1。这个过程叫单位根检验

2、ADF检验

单位根检验有诸多方法,其中较为经典是ADF检验

ADF检验的全称是Augmented Dickey-Fuller test,它是Dickey-Fuller(DF)检验的扩展。DF检验只能应用于一阶AR模型的情况。当序列为高阶时,存在滞后相关性,于是可以使用更适用的ADF检验。

整个检验过程涉及到很多数学和统计学处理,在此不详述,下面直接看在Python中如何使用吧。

3、指数走势的检验

我们还是采用从第1篇笔记就采用的数据,即沪深300于2018年1月1日至2019年12月13日的走势。

其走势如下:

prices = get_price('000300.XSHG', start_date='2018-01-01', end_date='2019-12-13', frequency='daily', fields='close')
fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])ax.plot(prices, color="blue", linewidth=1.5, linestyle="-", label=r'hs300')
plt.legend(loc='upper right', frameon=False)

在这里插入图片描述

采用statsmodels中的相关包对序列prices进行检验:

from statsmodels.stats.diagnostic import unitroot_adfunitroot_adf(prices.close)

或者采用下面的函数,一样的:

from statsmodels.tsa.stattools import adfulleradfuller(prices.close)

结果如下:

(-1.932446672214747,0.3169544458085871,9,465,{'1%': -3.4444914328761977,'5%': -2.8677756786103683,'10%': -2.570091378194011},4819.095453869604)

上述取值分别为:

  • t-检验值;
  • P-Value
  • 滞后阶数(lags)
  • 样本数
  • 1%,5%,10%的边界值
  • 最大信息准则(参数中autolag需不为None)

ADF检验基于统计中的假设检验方式,利用t-检验来观测显著性。这些细节不介绍了。

上述结果可以这样来看,如果

  • t-检验值大于某个临界值,那么在这个临界值以内序列的不平稳性比较显著;
  • 或者,p-Value大于某个临界值的百分位(即,1%,5%,10%),那么序列的不平稳性比较显著。

我们看到上面的结果,t-检验值明显大于10%的临界值,p-Value明显大于10%。

所以上面的指数走势序列是显著的不平稳的。我们在第2篇笔记说走势序列近似于随机游走,所以这个检验结果符合预期。

4、对数收益率序列检验

我们同样针对沪深300于2018年1月1日至2019年12月13日的日对数收益率序列进行检验。

import pandas as pd
import mathprices = get_price('000300.XSHG', start_date='2018-01-01', end_date='2019-12-13', frequency='daily', fields='close')returns = {'return':{}}
for i in range(len(prices)):current_price = prices.iloc[i,0]if i == 0:current_return = 0else:last_price = prices.iloc[i-1,0]current_return = math.log(current_price)-math.log(last_price)date = list(prices.index)[i]returns['return'][date] = current_return
return_df = pd.DataFrame(returns, columns=['return'], index=list(prices.index))fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
ax.plot(return_df, color="blue", linewidth=1.5, linestyle="-", label=r'hs300-daily-log-returns')
plt.legend(loc='upper right', frameon=False)

在这里插入图片描述

检验结果如下:

unitroot_adf(return_df.loc[:,'return'])
(-6.9332827227876,1.070439257686785e-09,8,466,{'1%': -3.4444609168389615,'5%': -2.8677622536920317,'10%': -2.5700842229549266},-2646.8267439593874)

这个结果里,t-检验值远小于1%的临界值,P-Value也远小于1%。所以,序列没有显著的不平稳性。因而我们可以认为该序列是平稳的。

这里要注意的一点是:当我们采用ADF进行检验的时候,我们实际上已经假设用AR模型对序列进行建模了。


http://chatgpt.dhexx.cn/article/D876Obt5.shtml

相关文章

Spectral clustering(谱聚类)算法的实现

目录 1.作者介绍2.关于谱聚类的介绍2.1 谱聚类概述2.2 无向权重图2.3 邻接矩阵2.4 相似矩阵2.5 度矩阵2.6 拉普拉斯矩阵2.7 K-Means 3.Spectral clustering&#xff08;谱聚类&#xff09;算法实现3.1 数据集3.2 导入所需要的包3.3 获取特征值和特征向量3.4 利用K-Means聚类3.5…

Python学习4-谱聚类

一&#xff0c;谱聚类原理 谱聚类算法原理可以参考如下链接。 这个视频推导出了拉普拉斯矩阵&#xff0c;但没有更新后续优化问题。 机器学习-白板推导系列(二十二)-谱聚类&#xff08;Spectral Clustering&#xff09;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV…

机器学习-层次聚类(谱系聚类)算法

文章目录 简介距离矩阵最短距离法最长距离法类平均法重心法python应用 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 层次聚类&#xff08;Hierarchical Clustreing&#xff09;又…

到底什么是谱聚类算法?

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达本文转自&#xff1a;视学算法 谱聚类算法是目前最流行的聚类算法之一&#xff0c;其性能及适用场景优于传统的聚类算法如k-均值算法&#xff0c;本文对谱聚类算法进行了…

图像聚类-谱聚类

最近做的一个东西跟这个相关&#xff0c;本来希望是用深度学习对于没有标签的图像数据进行分类&#xff0c;但是通常情况下&#xff0c;深度学习是对有标签的数据进行学习&#xff0c;目的是用来自动提取特征&#xff0c;代替传统的手工提取特征。因此&#xff0c;比较容易想到…

聚类算法实践(二)——谱聚类、Chameleon聚类

上一篇文章里说到的层次聚类和K-means聚类&#xff0c;可以说是聚类算法里面最基本的两种方法&#xff08;wiki的cluster analysis页面都把它们排前两位&#xff09;。这次要探讨的&#xff0c;则是两个相对“高级”一点的方法&#xff1a;谱聚类和chameleon聚类。 4、谱聚类 …

谱聚类的案例

1. 政治博客数据集(见附件Pol_Blogs_CSV文件) 数据集网址一: Political blogs 数据集网址二: http://www.casos.cs.cmu.edu/computational_tools/datasets/external/polblogs/index11.php 政治博客数据是由Adamic和Glance于2005年收集并分析的. 该数据集包含了2004年美国总…

谱聚类算法 matlab

1、谱聚类算法步骤公式 &#xff08;1&#xff09;整理数据集&#xff0c;使数据集中数据在0-1之间。假设数据集m行n列。 &#xff08;2&#xff09;求邻接矩阵W。元素值为每一点到其他点之间距离&#xff0c;即权重。 &#xff08;3&#xff09;求相似度矩阵S&#xff0c;相…

谱聚类(Spectral Clustering)详解

原文地址为&#xff1a; 谱聚类(Spectral Clustering)详解 谱聚类(Spectral Clustering)详解 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图&#xff0c;使子图内部尽量相似&#xff0c;而子图间距离尽量距离较远&…

从拉普拉斯矩阵说到谱聚类

从拉普拉斯矩阵说到谱聚类 0 引言 11月1日上午&#xff0c;机器学习班 第7次课&#xff0c;邹讲聚类&#xff08;PPT&#xff09;&#xff0c;其中的谱聚类引起了自己的兴趣&#xff0c;邹从最基本的概念&#xff1a;单位向量、两个向量的正交、方阵的特征值和特征向量&#xf…

聚类--谱聚类

前言&#xff1a;关于谱聚类&#xff0c;已经有很多厉害的老师和大牛写过教程博客等&#xff0c;也有很不错的tutorial文章可供参考。此博文仅记述个人的一些总结、思考、疑问&#xff0c;算是对现有谱聚类学习资源的一个小补充。 1. 谱聚类简述 说到聚类&#xff0c;可能最先…

MATLAB 谱聚类

k-means 可以说是思想最简单的聚类了&#xff0c;但是它在应对非凸数据时却显得手足无措&#xff0c;例如如下的数据分类&#xff1a; 各类之间虽然间隔较远&#xff0c;但是非凸&#xff0c;这时候就需要引入谱聚类了(以下为谱聚类效果)。 本文参考 [1]Ulrike von Luxburg. A…

谱聚类算法详解

谱聚类&#xff08;Spectral Clustering&#xff09;算法简单易行&#xff0c;其聚类性能优于传统的K-means算法。谱聚类将数据的划分转化为对图的分割&#xff0c;是一种基于图论的聚类方法&#xff0c;其直观理解为根据图内点的相似度将图分为多个子图&#xff0c;使子图内部…

谱聚类算法简单理解

一、算法思想 谱聚类是基于图论的知识所演化出的算法&#xff0c;在聚类中广泛使用。主要思想是将所有的数据看成空间中的点&#xff0c;这些点之间可以用边连接起来&#xff0c;距离较远的两点之间边的权重值较低&#xff0c;距离较近的两点间边的权重值较高&#xff0c;然后…

了解聚类是什么。聚类方法:k-means、核聚类、层次聚类、谱聚类

聚类 1.什么是聚类2.聚类方法2.1 划分式聚类方法k-meansk-meansbi-kmeans 基于密度的方法DBSCANOPTICS算法 层次化聚类算法核聚类支持向量聚类谱聚类引言优缺点步骤 参考文档:参考 1.什么是聚类 定义 聚类(Clustering) 是按照某个特定标准(如距离)把一个数据集分割成不同的类…

【聚类】谱聚类解读、代码示例

【聚类】谱聚类详解、代码示例 文章目录 【聚类】谱聚类详解、代码示例1. 介绍2. 方法解读2.1 先验知识2.1.1 无向权重图2.1.2 拉普拉斯矩阵 2.2 构建图&#xff08;第一步&#xff09;2.2.1 ϵ \epsilon ϵ 邻近法2.2.2 k 近邻法2.2.3 全连接法 2.3 切图&#xff08;第二步&a…

谱聚类(Spectral Clustering)原理及Python实现

谱聚类原理及Python实现 图模型 无向带权图模型 G<V,E> G < V , E > &#xff0c;每一条边上的权重 wij w i j 为两个顶点的相似度&#xff0c;从而可以定义相似度矩阵 W W ,此外还可以定义度矩阵D" role="presentation" style="position: …

谱聚类算法(Spectral Clustering)

谱聚类算法(Spectral Clustering) 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图&#xff0c;使子图内部尽量相似&#xff0c;而子图间距离尽量距离较远&#xff0c;以达到常见的聚类的目的。其中的最优是指最优目标…

谱聚类(spectral clustering)及其实现详解

Preface 开了很多题&#xff0c;手稿都是写好一直思考如何放到CSDN上来&#xff0c;一方面由于公司技术隐私&#xff0c;一方面由于面向对象不同&#xff0c;要大改&#xff0c;所以一直没贴出完整&#xff0c;希望日后可以把开的题都补充全。 先把大纲列出来&#xff1a; 一…

谱聚类算法

1. 算法思想 将所有的数据看成空间中的点&#xff0c;这些点之间可以用边连接起来。距离较远的点之间边的权重低&#xff0c;距离较近的点间边的权重高。然后对原图进行切图&#xff0c;使得不同子图间边的权重之和尽可能低&#xff0c;子图内边的权重之和尽可能高&#xff0c…