从GDP到股价手把手教你用Matlab的adftest函数检验5类真实数据的平稳性时间序列分析中数据的平稳性检验是建模前的关键步骤。Matlab的adftest函数作为Augmented Dickey-Fuller检验的实现工具能帮助我们快速判断各类数据的平稳性特征。本文将带你跨越单一GDP数据的局限探索金融、商业、气象等多元场景下的实战应用。1. ADF检验核心原理与Matlab实现ADF检验通过判断时间序列是否存在单位根来检验平稳性。其原假设为序列存在单位根非平稳备择假设为序列不存在单位根平稳。在Matlab中adftest函数提供了四种判断方式% 基础调用方式 [h,pValue,stat,cValue] adftest(data,alpha,0.05);判断标准对照表判断依据非平稳条件平稳条件h值h0h1p值p0.05p≤0.05统计量statcValuestatcValue实际应用中金融数据往往呈现以下非平稳特征趋势性随时间持续上升或下降季节性周期性波动模式随机游走无确定方向的随机波动2. 金融数据实战股价与收益率分析以标普500指数日收盘价为例原始价格序列通常呈现明显趋势% 加载金融数据 sp500 readtable(sp500_daily.csv); prices sp500.Close; % 原始序列检验 [h_price, p_price] adftest(prices); disp([原始价格序列h值,num2str(h_price), p值,num2str(p_price)]); % 计算对数收益率 returns price2ret(prices); [h_return, p_return] adftest(returns); disp([收益率序列h值,num2str(h_return), p值,num2str(p_return)]);典型输出结果对比原始价格序列h0, p0.98非平稳对数收益率序列h1, p0.001平稳提示金融建模通常直接使用收益率序列因其天然满足平稳性要求3. 商业数据分析零售销售额的季节性处理月度零售数据常同时包含趋势和季节成分sales csvread(monthly_sales.csv); figure; subplot(2,1,1); plot(sales); title(原始销售额); % 季节性差分 sales_diff diff(sales,12); % 12个月周期 subplot(2,1,2); plot(sales_diff); title(季节性差分后); % 检验结果对比 [h_orig, p_orig] adftest(sales); [h_diff, p_diff] adftest(sales_diff);处理技巧先进行季节性差分消除周期影响若仍不平稳再进行一阶常规差分最终应确保h1且p0.054. 气象数据应用气温序列的平稳性检验日均气温数据具有明显的季节波动特征temp_data readtable(daily_temperature.csv); temp temp_data.Value; % 消除年周期效应 temp_detrend temp - movmean(temp,365); % 检验结果 [h_temp, p_temp] adftest(temp); [h_detrend, p_detrend] adftest(temp_detrend); % 可视化对比 figure; plot(temp_detrend); xlabel(天数); ylabel(调整后温度);关键发现原始气温序列h0非平稳去除年周期后h1平稳移动平均窗口应匹配数据周期特性5. 互联网数据分析用户活跃度检验网站日活跃用户(DAU)数据常见模式dau xlsread(dau_stats.xlsx); log_dau log(dau); % 对数变换 % 检验与差分 [h_log, p_log] adftest(log_dau); dau_diff diff(log_dau); [h_diff, p_diff] adftest(dau_diff); % 建立特征矩阵 timestamps 1:length(dau); X [timestamps, sin(2*pi*timestamps/7)]; % 加入周周期特征处理建议先进行对数变换稳定方差检查并消除趋势成分考虑加入周期性虚拟变量最终确保残差序列通过ADF检验6. 宏观经济数据多指标联合分析GDP、CPI、失业率等指标的协同检验macro_data readtable(macro_indicators.csv); gdp macro_data.GDP; cpi macro_data.CPI; % 多变量检验 [h_gdp, p_gdp] adftest(gdp); [h_cpi, p_cpi] adftest(cpi); % 协整检验 [~,~,~,~,reg] egcitest([gdp,cpi]); disp([协整检验p值,num2str(reg.pValue)]);重要结论单个宏观经济指标多为非平稳序列但指标间可能存在协整关系需先进行ADF检验再开展协整分析实际项目中我常创建自动化检验函数批量处理多个指标function results batch_adftest(data, names) results table(); for i 1:size(data,2) [h,p,stat,cv] adftest(data(:,i)); results.(names{i}) [h,p,stat,cv]; end end调用方式indicators [gdp, cpi]; names {GDP,CPI}; res batch_adftest(indicators, names);