Matlab实现ADF检验,adftest函数使用详细说明(看完就会用)

article/2025/10/8 21:36:12

目录

  • ADF检验简介
  • adftest的使用及参数介绍
    • ——简单调用:h = adftest(y)
    • ——多参数调用:[h,pValue,stat,cValue] = adftest(y,'alpha',0.05)
  • adftest如何判断是否平稳?
    • ——原假设与备择假设
    • ——通过h判断是否平稳
    • ——通过pValue判单是否平稳
    • ——通过stat和cValue判断是否平稳
  • 应用举例(以1978年到2020年的中国GDP为例):
    • 原始序列的ADF检验
    • 一阶差分序列的ADF检验
    • 二阶差分序列
  • 完整代码及数据
  • 作者水平有限,第一次发文,有错误及需要改正的地方请指正

ADF检验简介

ADF检验全称为Augmented Dickey-Fuller test。通常在使用时间序列模型(如ARMA,ARIMA)的时候用于检验时间序列数据的平稳性。他主要通过检验数据是否有单位根判断序列是否平稳。

adftest的使用及参数介绍

——简单调用:h = adftest(y)

输入参数:
y:进行检验的时间序列
输出参数:
h:检验结果
h = 0,说明序列不平稳;
h = 1,说明序列平稳。

——多参数调用:[h,pValue,stat,cValue] = adftest(y,‘alpha’,0.05)

输入参数:
y:进行检验的时间序列
‘alpha’,0.05:组合起来使用可以改变假设检验的显著性水平,如果不设置则默认为0.05

输出参数:
h:检验结果
pValue:假设检验的P值,依据他的大小可以判断是否拒绝原假设
stat:检验统计量,与cValue一起可以决定是否拒绝原假设
cValue:假设检验的临界值,与stat一起可以决定是否拒绝原假设
(下文会介绍三种利用输出参数判断是否平稳的方法,他们的结果是统一的,会一种就行)

adftest如何判断是否平稳?

——原假设与备择假设

原假设:存在单位根(时间序列不平稳)
备择假设:不存在单位根(时间序列平稳)

——通过h判断是否平稳

h = 0时,我们无法拒绝原假设,也就是接受原假设→序列存在单位根→时间序列不平稳
h = 1时,我们拒绝原假设→序列不存在单位根→时间序列平稳

——通过pValue判单是否平稳

pValue>0.05(显著性水平,这里用0.05举例):我们无法拒绝原假设,也就是接受原假设→序列存在单位根→时间序列不平稳
pValue<0.05:我们拒绝原假设→序列不存在单位根→时间序列平稳

——通过stat和cValue判断是否平稳

stat>cValue:落在接受域,我们无法拒绝原假设,也就是接受原假设→序列存在单位根→时间序列不平稳
stat<cValue:落在拒绝域,我们拒绝原假设→序列不存在单位根→时间序列平稳

应用举例(以1978年到2020年的中国GDP为例):

原始序列的ADF检验

clc;
clear;
data = readtable("data.xlsx");
data = table2array(data);
data = data(:,2)
plot(data,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(data,'alpha',0.05)

输出结果为:
h = 0; (h等于0→接受原假设→有单位根→不平稳)
pValue = 0.9990 (p大于0.05→接受原假设→有单位根→不平稳)
stat = 13.4332 (stat>cValue→接受原假设→有单位根→不平稳)
cValue = -1.9474
原始时间序列折线图
从折线图和函数返回结果看,该序列都是不平稳的。

一阶差分序列的ADF检验

%%  接上述代码
datad1 = diff(data,1)
figure
plot(datad1,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(datad1,'alpha',0.05)

输出结果为:
h = 0;
pValue = 0.2810
stat = -0.9989
cValue = -1.9475
一阶差分序列折线图
从折线图可见一阶差分仍然具有显著上升趋势,序列不平稳,与函数返回结果契合。

二阶差分序列

datad2 = diff(data,2)
figure
plot(datad2,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(datad2,'alpha',0.05)

输出结果为:
h = 1;
pValue = 1.0000e-03
stat = -4.3792
cValue = -1.9476
二阶差分序列的折线图
由折线图,数据在0附近随机波动,表现为平稳序列,与函数返回值契合。

完整代码及数据

clc;
clear;
data = readtable("data.xlsx");
data = table2array(data);
data = data(:,2)
%可注释上面三行,将下一行取消注释
%data = [3678.70250000000	4100.45370000000	4587.58110000000	4935.83280000000	5373.35010000000	6020.92410000000	7278.50230000000	9098.94800000000	10376.1545000000	12174.5947000000	15180.3865000000	17179.7417000000	18872.8688000000	22005.6285000000	27194.5309000000	35673.2304000000	48637.4503000000	61339.8913000000	71813.6296000000	79715.0445000000	85195.5071000000	90564.3758000000	100280.139300000	110863.123000000	121717.424700000	137422.034900000	161840.160900000	187318.903100000	219438.474800000	270092.323700000	319244.612800000	348517.743700000	412119.255800000	487940.180500000	538579.953500000	592963.229500000	643563.104500000	688858.218000000	746395.059500000	832035.948600000	919281.129100000	990865.111300000	1015986.20000000]'
plot(data,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(data,'alpha',0.05)
%%  一阶差分
datad1 = diff(data,1)
figure
plot(datad1,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(datad1,'alpha',0.05)
%%  二阶差分
datad2 = diff(data,2)
figure
plot(datad2,'LineWidth',1.5)
[h,pValue,stat,cValue] = adftest(datad2,'alpha',0.05)
%adftest:原假设:存在单位根(说明这是一个非平稳的时间序列)  备择假设:不存在单位根(说明这是一个平稳时间序列)
%h = 0则不能拒绝原假设,那么接受原假设,说明时间序列不平稳

作者水平有限,第一次发文,有错误及需要改正的地方请指正


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

相关文章

时间序列研(part8)--ADF检验

学习笔记,仅供参考,有错必纠 文章目录 时间序列ADF检验多重单位根的检验方法结构突变与单位根检验外生性结构突变点的检验方法内生性结构突变点的检验方法 时间序列 ADF检验 如果被检验的真实过程是一个AR 过程,而检验式是AR(1)形式&#xff…

时间序列分析(7)| ADF检验

上篇介绍了DF检验,该检验仅用于AR(1)过程的单位根检验,对于AR()过程来说,需要使用拓展DF检验(augmented Dickey-Fuller,ADF)。 1 模型检验形式 AR()过程的形式如下: 上式可以转换成如下形式&…

matlab实现adf检验,ADF检验MATLAB程序资料

ADF-situation1-statistic1-2.m %ADF检验法p取2. %AR(2)过程临界值的确定 T5000; N200; w1zeros(1,T); w2zeros(1,T); for t1:T sita10.7; sita20.3; rusita1sita2; labuda1-sita2; %p2; erandn(1,N); y1(1)e(1); y1(2)sita1*y1(1)e(2); for j3:N y1(j)sita1*y1(j-1)sita2*y1(j…

Python ADF检验

转自:https://pengfoo.com/post/machine-learning/2017-01-24 Abstract 在ARMA/ARIMA这样的自回归模型中,模型对时间序列数据的平稳是有要求的,因此,需要对数据或者数据的n阶差分进行平稳检验,而一种常见的方法就是AD…

ADF单位根检验三种形式_Eviews之ADF单位根检验

本文使用的数据是2010-01-04——2020-03-05沪深300指数的每日收盘价,走势图如下: 接下来,开始使用eviews8.0检验: 1、双击点开所要检验的时间序列数据 2、点击view,然后再选择Unit Root Test 3、检验类型选择ADF检验。检验的顺序一般是 原始数据->一阶差分->二阶差分…

时间序列分析之ADF检验

ADF检验 在使用很多时间序列模型的时候,如 ARMA、ARIMA,都会要求时间序列是平稳的,所以一般在研究一段时间序列的时候,第一步都需要进行平稳性检验,除了用肉眼检测的方法,另外比较常用的严格的统计检验方法…

ADF检验数据平稳性

目录 1 背景 2 单位根 3 单位根检验 4 ADF检验 5 python 实现与结果解释 1 背景 在使用很多时间序列模型的时候,如 ARMA、ARIMA,都会要求时间序列是平稳的,所以一般在研究一段时间序列的时候,第一步都需要进行平稳性检验&…

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

时间序列学习(4):平稳性检验(单位根检验、ADF检验) 1、单位根检验2、ADF检验3、指数走势的检验4、对数收益率序列检验 相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。 这篇笔记来就谈一谈平稳性…

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

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

Python学习4-谱聚类

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

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

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

到底什么是谱聚类算法?

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

图像聚类-谱聚类

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

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

上一篇文章里说到的层次聚类和K-means聚类,可以说是聚类算法里面最基本的两种方法(wiki的cluster analysis页面都把它们排前两位)。这次要探讨的,则是两个相对“高级”一点的方法:谱聚类和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、谱聚类算法步骤公式 (1)整理数据集,使数据集中数据在0-1之间。假设数据集m行n列。 (2)求邻接矩阵W。元素值为每一点到其他点之间距离,即权重。 (3)求相似度矩阵S,相…

谱聚类(Spectral Clustering)详解

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

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

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

聚类--谱聚类

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

MATLAB 谱聚类

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