1 ADF检验也叫扩展的迪克富勒检验,主要作用是检测序列的平稳性,也是最常用检测序列平稳性的检验方法。
2 何为:平稳性?单位根?(略),见这部分随便的其他内容有讲解。是建模对数据的先决条件。
3 ADF检验的三种情形:
4 在MATLAB中常用的adf检验的操作:
4.1 经过差分使序列平稳。
% 如果结果h=0,表示拒绝原假设,数据不平稳
% 如果结果h=1,表示不拒绝原假设,数据平稳
% 注意这里和上图不一样,原假设为平稳1,。
%% 单位根检验实例 % Load Canadian inflation rate data. load Data_Canada Y = DataTable.INF_C; % Test the time series for a unit root. h = adftest(Y); disp(h); % 显示结果: % h = % logical % 0 % 非平稳 % 如果结果h=0,表示拒绝原假设,数据不平稳 % 如果结果h=1,表示不拒绝原假设,数据平稳 %% 使序列进行平稳,进行一阶差分 Y1 = diff(Y); % 经过一阶差分 h1 = adftest(Y1); disp(h1); % h1 = % logical % 1 % 平稳 % 如果结果h=0,表示拒绝原假设,数据不平稳 % 如果结果h=1,表示不拒绝原假设,数据平稳
4.2 adf检验的其他输出内容,详细见MATLAB,doc中的内容
%% 另外,adf检验还有其他的输出内容。 [h2,pValue,stat,cValue,reg] = adftest(Y1); % h2 = % logical % 1 % pValue = % p值 % 1.0000e-03 % stat = % -4.8186 % cValue = % -1.9478 % reg = % 包含以下字段的 struct: % % num: 40 % size: 39 % names: {'a'} % coeff: 0.2285 % se: 0.1601 % Cov: 0.0256 % tStats: [1×1 struct] % FStat: [1×1 struct] % yMu: 0.0028 % ySigma: 1.5513 % yHat: [39×1 double] % res: [39×1 double] % DWStat: 1.8378 % SSR: 4.6502 % SSE: 86.7950 % SST: 91.4452 % MSE: 2.2841 % RMSE: 1.5113 % RSq: 0.0509 % aRSq: 0.0509 % LL: -70.9449 % AIC: 143.8898 % AIC信息准则 % BIC: 145.5533 % BIC信息准则 % HQC: 144.4866 % HQC信息准则
4.3 据上图,三种情形在MATLAB的adftest中的选择。
%% 输入adf检验其他的内容
[h3,~,~,~,reg3] = adftest(Y1,'model','AR');
[h4,~,~,~,reg4] = adftest(Y1,'model','ARD');
[h5,~,~,~,reg5] = adftest(Y1,'model','TS');
disp([h3,h4,h5]);
disp([reg3.AIC,reg4.AIC,reg5.AIC;reg3.BIC,reg4.BIC,reg5.BIC...
;reg3.HQC,reg4.HQC,reg5.HQC]);
% 'model','AR';表示无截距项,无趋势项的单位根检验
% 'model','ARD';表示有截距项,无趋势项的单位根检验
% 'model','TS';表示由截距项,有趋势项的单位根检验
% 另外,AIC,BIC,HQC准则在reg结构体内,可以调用用值观察那种情形平稳
% 默认为'AR'形式,也就是不含截距项,不含趋势项的单位根检验
4.4 如果选择滞后项,可以用用户设定的方式,如果滞后项设定为0,为DF检验。建议用户这里不用自己设定
%% 滞后项 [h6,~,~,~,reg6] = adftest(Y1,'model','AR','lags',0); %DF检验形式 [h7,~,~,~,reg7] = adftest(Y1,'model','AR','lags',[0,1,2]);% 也可以对趋势项进行遍历
5 检验流程