Matlab实现ADF检验,adftest函数使用详细说明(看完就会用) | 您所在的位置:网站首页 › adf检验r › Matlab实现ADF检验,adftest函数使用详细说明(看完就会用) |
目录
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 输出结果为: h = 0; pValue = 0.2810 stat = -0.9989 cValue = -1.9475 输出结果为: h = 1; pValue = 1.0000e-03 stat = -4.3792 cValue = -1.9476 |
CopyRight 2018-2019 实验室设备网 版权所有 |