首页 > 其他分享 >三变量的SVAR模型#step1:ADF平稳检验、差分、时序图

三变量的SVAR模型#step1:ADF平稳检验、差分、时序图

时间:2024-06-08 11:29:28浏览次数:18  
标签:stat end 检验 ADF SVAR fprintf step1 pValue

        无论是VAR,SVAR,ARMA还是ARIMA,大多数时间序列模型的第一步都是数据的平稳性检验,通常我们使用ADF检验

1.1ADF检验原假设

1.2ADF检验假设

  • 原假设(H0​):时间序列存在单位根(非平稳)。
  • 备择假设(H1​):时间序列不存在单位根(平稳)。

1.3ADF标准检验代码

% 生成一个示例时间序列数据
data = randn(100, 1); % 假设这是一个平稳的时间序列
% 进行 ADF 检验
[h, pValue, stat, cValue, reg] = adftest(data);
%h: 结果的二进制指示符。0 表示无法拒绝原假设,1 表示拒绝原假设。
%pValue: p 值,用于判断结果的显著性。
%stat: ADF 检验统计量。%cValue: 临界值。%reg: 回归结果的结构体。
% 显示结果
if h == 0
    disp('无法拒绝原假设:时间序列存在单位根(非平稳)。');
else
    disp('拒绝原假设:时间序列不存在单位根(平稳)。');
end
disp(['p 值: ', num2str(pValue)]);
disp(['检验统计量: ', num2str(stat)]);
disp(['临界值: ', num2str(cValue)]);

一般论文里只需要体现h, pValue, stat, cValue
1.4ADF平稳性检验、差分、时序图实例

 ADF判断各个时间序列的平稳性
%step1 先判断原序列和对数序列
PHE=data1(:,3); PGDP=data1(:,2);  EDR=data1(:,1);  YEAR=data(:,4); 
%给变量取对数
logPHE = log(PHE);  
logPGDP  = log(PGDP);  
logEDR = log(EDR);     
DataSet = [ logEDR  logPGDP  logPHE];
%检验
% 获取变量数量
num_variables = size(DataSet, 2);
% 循环对每个变量进行ADF检验
for i = 1:num_variables
    variable = DataSet(:, i);
    [h, pValue, stat] = adftest(variable);
    % 输出检验结果
    fprintf('变量 %d 的单位根检验结果:\n', i);
    fprintf('平稳性检验的p值为:%f\n', pValue);
    fprintf('检验统计量的值为:%f\n', stat);
    if h == 0
        fprintf('结论:变量是非平稳的\n');
    else
        fprintf('结论:变量是平稳的\n');
    end
    fprintf('\n');
end
% %如果连对数都不是平稳的,则一阶差分
% dlogPHE = logPHE(2: end) - logPHE(1: end-1);  
% dlogPGDP =logPGDP(2: end)  - logPGDP(1: end-1);   
% dlogEDR = logEDR(2: end) -  logEDR(1: end-1);  
% DataSet1 = [dlogPHE dlogPGDP dlogEDR ];
 DataSet1 = diff(DataSet);
 num_variables1 = size(DataSet1, 2);
% 循环对每个变量进行ADF检验
for i = 1:num_variables1
    variable1 = DataSet1(:, i);
    [h, pValue, stat] = adftest(variable1);
    % 输出检验结果
    fprintf('变量 %d 的单位根检验结果:\n', i);
    fprintf('平稳性检验的p值为:%f\n', pValue);
    fprintf('检验统计量的值为:%f\n', stat);
    if h == 0
        fprintf('结论:变量是非平稳的\n');
    else
        fprintf('结论:变量是平稳的\n');
    end
    fprintf('\n');
end
%画一阶差分的时序图图2
 datatu2 = DataSet1;
dataArray = DataSet1;
% 提取各列数据
years =1981:2022;
old_age_dependency_ratio = dataArray(:,1);
gdp_per_capita  =dataArray(:,2);
healthcare_expenditure_per_capita =dataArray(:,3); 
% 创建一个新的图形
figure;
% 绘制老年抚养比时序图
subplot(3, 1, 1);
plot(years, old_age_dependency_ratio, '-', 'Color', [0.8500, 0.3250, 0.0980], 'DisplayName', '老年抚养比(%)');
xlabel('年份');
ylabel('老年抚养比(%)');
title('老龄化');
% 绘制人均GDP时序图
subplot(3, 1, 2);
plot(years, gdp_per_capita, '-', 'Color', [0.9290, 0.6940, 0.1250], 'DisplayName', '人均GDP(元)');
xlabel('年份');
ylabel('人均GDP(元)');
title('经济增长');
% 绘制人均医疗保健支出时序图
subplot(3, 1, 3);
plot(years, healthcare_expenditure_per_capita, '-', 'Color', [0.4940, 0.1840, 0.5560],'DisplayName', '人均医疗保健支出(元)');
xlabel('年份');
ylabel('人均医疗保健支出(元)');
title('居民医疗保健消费');
% %如果一阶差分不平稳那就2阶再重复
%MATLAB中计算差分的函数是diff,
% 我们可以使用diff(A,n)命令计算向量A的n阶差分,当n等于1时,可以直接写成diff(A).
DataSet2=diff(DataSet1);
num_variables1 = size(DataSet2, 2);
% 循环对每个变量进行ADF检验
for i = 1:num_variables1
    variable1 = DataSet2(:, i);
    [h, pValue, stat] = adftest(variable1);
    % 输出检验结果
    fprintf('变量 %d 的单位根检验结果:\n', i);
    fprintf('平稳性检验的p值为:%f\n', pValue);
    fprintf('检验统计量的值为:%f\n', stat);
    if h == 0
        fprintf('结论:变量是非平稳的\n');
    else
        fprintf('结论:变量是平稳的\n');
    end
    fprintf('\n');
end

一般经济变量的时间序列数据都是不平稳的,取对数可以有效消除异方差性,再对对数化后的数据进行一阶差分看平稳性
1.5实例时序图

标签:stat,end,检验,ADF,SVAR,fprintf,step1,pValue
From: https://blog.csdn.net/m0_56619132/article/details/139408802

相关文章

  • [UE 虚幻引擎] DTLoadFbx 运行时加载FBX本地模型插件说明
    本插件可以在打包后运行时动态加载FBX模型。 新建一个Actor并添加一个DTRuntimeFbxComponent。然后直接调用组件的函数LoadFile加载显示模型(注:不支持模型动画)FilePath:加载模型的绝对路径。CreateCollision:是否创建碰撞体。本组件是继承于UProceduralMeshC......
  • 马尔可夫转换MSVAR模型预测资产收益率时间序列可视化分析|附数据代码
    原文链接:https://tecdat.cn/?p=36166原文出处:拓端数据部落公众号在现代金融市场中,资产收益率序列的预测一直是投资者和金融机构关注的焦点。资产收益率的波动不仅反映了市场的风险水平,也直接影响到投资组合的表现和风险管理策略的制定。然而,金融市场的复杂性和不确定性使得资产......
  • Gradformer: 通过图结构归纳偏差提升自注意力机制的图Transformer
    这是4月刚刚发布在arxiv上的论文,介绍了一种名为“Gradformer”的新型图Transformer,它在自注意力机制中引入了指数衰减掩码。以下是主要创新点:指数衰减掩码: Gradformer在其自注意力模块中集成了衰减掩码。该掩码随着图结构中节点之间的距离减小而呈指数递减。这种设计使模型能够......
  • 古典密码之棋盘密码(ADFGVX,ADFGX,Polybius)
    引言棋盘密码只加密字母,不区分大小写(ADFGVX棋盘还可加密数字),若输入其它字符则原样保留。若输入多行(段落),每行是单独加密的。Polybius/ADFGX棋盘由于I/J在同一格,解密后需人工确认I和J。ADFGX/ADFGVX棋盘原则上需要密钥二次加密,但可留空不使用密钥。若使用,则必须符合棋盘密码严......
  • web前端之node读取文件夹名称及html文件的标题、文件系统、路径处理、模块、正则、isD
    MENU代码解析代码constfs=require('fs');constpath=require('path');//文件夹路径//C:\mssj\web\web-case\case\nodeJs\index.js//C:\mssj\web\web-case\case\nodeJs\index.html//C:\mssj\web\web-case\case\ajaxProgressMoni......
  • FastAPI系列:上传文件File和UploadFile
    上传文件#file仅适用于小文件@app.post("/files/")asyncdefcreate_file(file:bytes|None=File(default=None)):ifnotfile:return{"message":"Nofilesent"}else:return{"file_size":len(file)}......
  • R语言平稳性ADF检验、ARCH-LM效应检验分析收盘价收益率数据可视化
    全文链接:https://tecdat.cn/?p=35081数据读取和处理是金融分析中非常重要的一步。为了减少误差,在估计时我们可以对每个交易日的收盘价进行自然对数处理,即对日收益率进行计算。本文通过R软件对金融数据帮助客户进行读取和处理,并进行了收益率波动图、收益率序列的平稳性检验、自相......
  • java工作流引擎-j-roadflow-plus使用快速入门
    新建一个流程并发布运行需要以下步骤:1、新建表单。    在表单管理中新建表单,并设计表单,在表单中拖入控件。        点新建按钮会进入表单设计界面,并自动弹出表单属性设置。        输入表单名称,选择数据连接,数据表选择已有的测试表rf_form_test,主键选id......
  • adfs证书更新
    adfs更换服务通信证书1.将pfx证书安装到所有adfs服务器上,位置:证书\计算机\个人2.右击证书>所有任务>管理私钥>添加,将ADFS部署过程中添加的ADFS服账户赋权,读取权限即可查看adfs服务,可以看到所用的服务账户3.通过powershell命令设置新证书:dircert:\LocalMachine\My#获取新证书......
  • 自定义ADFS登录页
    修改adfs登录页公司名称:Set-AdfsGlobalWebContent-CompanyName"ExchangeOWA" 参考:ADFS自定义:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-fs/operations/ad-fs-customization-in-windows-server#custom-themes-and-advanced-custom-themes 修改ADFS登录页......