【MATLAB第33期】源码分享 | 基于MATLAB的时间序列平稳性检测
一、平稳性检测
1、KPSS测试
2、ADF测试
3、PP测试
若adf1或者kpss0或者pp==0,则表明是平稳时间序列。
反之,则表明是非平稳时间序列。
二、代码展示
clc,
clear all,
close all,
format short,
%% 1.从源读取数据(Excel文件,*.xlsx格式)并打印
input = readtable('ch02_EXAMPLE 3.xlsx', 'Sheet',"Sheet1",...
'Range',"A:C"); %选择Sheet1 表格,A-C列数据
ts = timeseries(input.DATA,input.DATE); %建立时间序列数据 ,第一列时间,第二列数据
ts.Name = 'CPI数据'; %数据标题
ts.TimeInfo.Units = 'years';
ts.TimeInfo.StartDate = '1954'; % 设置开始时间(年份)
ts.TimeInfo.Format = 'yyyy'; % 设置在x轴上显示的格式
ts.Time = ts.Time - ts.Time(1); %
plot(ts, 'Color', '#7E2F8E', 'LineJoin','round', 'Marker', '.')
xlabel('Time (years)', 'fontsize',12)
ylabel('INF_C', 'fontsize',12)
%% 1.平稳性,KPSS测试
[kpss_H, kpss_pVal, kpss_stat, kpss_crit] = kpsstest(input.DATA,'trend',true);
kpss_test_results={'测试拒绝决定H值','p值','统计量','临界值';...
kpss_H, kpss_pVal, kpss_stat, kpss_crit}
%% 2.平稳性,ADF测试
[adf_H, adf_pval, adf_stat, adf_crit] = adftest(input.DATA);
ADF_test_results={'测试拒绝决定H值','p值','统计量','临界值';...
adf_H, adf_pval, adf_stat, adf_crit}
%% 3.平稳性,PP测试
[pp_H, pp_pVal, pp_stat, pp_crit] = pptest(input.DATA);
PP_test_results={'测试拒绝决定H值','p值','统计量','临界值';...
pp_H, pp_pVal, pp_stat, pp_crit}
三、效果展示
1.kpss_test_results :
{'测试拒绝决定H值'} {'p值' } {'统计量' } {'临界值' }
{[ 1]} {[0.0100]} {[0.6618]} {[0.1460]}
2.ADF_test_results :
{'测试拒绝决定H值'} {'p值' } {'统计量' } {'临界值' }
{[ 0]} {[0.3255]} {[-0.8769]} {[-1.9476]}
3.PP_test_results :
{'测试拒绝决定H值'} {'p值' } {'统计量' } {'临界值' }
{[ 0]} {[0.3255]} {[-0.8769]} {[-1.9476]}
四、代码及案例数据获取
后台私信回复“33”即可获得下载链接