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 檢驗流程