Matlab马尔可夫区制转换动态回归模型估计GDP增长率

简介: Matlab马尔可夫区制转换动态回归模型估计GDP增长率

本文估计实际GDP增长率的两状态Markov区制转换动态回归模型 。

创建模型进行估计

通过指定转移矩阵和两个区制的AR(0)(仅常数)子模型的两状态离散时间马尔可夫链,为朴素估计量创建马尔可夫转换动态回归模型。标记状态。

mc(NaN(2),'StateNames',["增长" "衰退"]);

加载和预处理数据

加载GDP数据集。

Data 包含1947:Q1-2005:Q2期间实际GDP的季度数据。估计周期  为1947:Q2-2004:Q2。

通过以下方式将数据转换为年度序列:

  1. 估计期内将数据转换为季度比率
  2. 将季度比率年度化


diff(Data(2:230))./Data(2:229); % 季度比率100*((1 + qrate).^4 - 1);       % 年度比率

估计模型

模型拟合Mdl 年利率序列 arate


estimate(Mdl,Mdl0,arate);

EstMdl 是估计的(完全指定的)马尔可夫转换动态回归模型。 EstMdl.Switch 是估计的离散时间马尔可夫链模型(dtmc 对象), EstMdl.Submodels 是估计的单变量VAR(0)模型(varm 对象)的向量。

显示估计的特定于状态的动态模型。



varm with properties:


Description: "ARIMA(0,0,0) Model (Gaussian Distribution)"
SeriesNames: "Y1"
NumSeries: 1
P: 0
Constant: 4.90146
AR: {}
Trend: 0
Beta: [1×0 matrix]
Covariance: 12.087


1-Dimensional VAR(0) Model
varm with properties:


Description: "ARIMA(0,0,0) Model (Gaussian Distribution)"
SeriesNames: "Y1"
NumSeries: 1
P: 0
Constant: 0.0084884
AR: {}
Trend: 0
Beta: [1×0 matrix]
Covariance: 12.6876


1-Dimensional VAR(0) Model

显示估计的状态转移矩阵。



2×2


0.9088    0.0912
0.2303    0.7697

估计后的EM算法

在估计马尔可夫转换动态回归模型中考虑模型和数据 。

创建部分指定模型进行估计

创建完全指定的模型,其中包含估计过程的初始参数值。

加载并预处理数据。



diff(Data(2:230))./Data(2:229);
100*((1 + qrate).^4 - 1);

使模型拟合数据。当估计过程终止时,绘制对数似然比与迭代步骤。

Plot(Mdl,Mdl0);

 

使模型拟合模拟数据

 

使用来自已知数据生成过程(DGP)的模拟数据评估估计准确性。本示例使用任意参数值。

为DGP创建模型

为转换区制创建一个完全指定的两状态离散时间马尔可夫链模型。

P = [0.7 0.3; 0.1 0.9];

对于每个状态,为过程创建一个完全指定的AR(1)模型。


% 常数
C1 = 4;
C2 = -1;


% 自回归系数
AR1 = 0.5;
AR2 = 0.3;


% 方差
V1 = 3;
V2 = 2;


% AR 子模型
arima('Constant',C1,'AR',AR1,'Variance',V1);

为DGP创建完全指定的Markov转换动态回归模型。

模拟来自DGP的路径

从DGP生成10条长度为1000的随机路径。


rng(1); % 重现性
N = 10;
n = 1000;
simulate(DGP,n,'Numpaths',N);

Data 是模拟的1000 x 10矩阵。

创建估计模型

创建一个部分指定的马尔可夫转换动态回归模型,该模型具有与数据生成过程相同的结构,但是指定了未知的转移矩阵和未知的子模型系数。

创建包含初始值的模型

创建一个完全指定的马尔可夫转换动态回归模型,该模型具有与相同的结构 Mdl,但是将所有可估计的参数都设置为初始值。


P0 = 0.5*ones(2);
dtmc(P0);


ms(mc0,[mdl01,mdl02]);

估计模型

使模型拟合每个模拟路径。对于每条路径,在EM算法的每次迭代中绘制对数似然图。



figure
hold on


for i = 1:N


estimate(Data(:,i),'Plot',true);




end


hold off

 

评估准确性

计算每个估计参数的蒙特卡洛平均值。

将总体参数与相应的蒙特卡洛估计进行比较。



DGPvsEstimate = 6×2


5.0000    5.0260
-2.0000   -1.9615
4.0000    3.9710
2.0000    1.9903
0.4000    0.4061
0.2000    0.2017


P = 2×2


0.7000    0.3000
0.1000    0.9000


PEstimate = 2×2


0.7065    0.2935
0.1023    0.8977


预采样数据

考虑 估计马尔可夫转换动态回归模型中的数据,但假设关注期间为1960:Q1–2004:Q2。另外,考虑向每个子模型添加一个自回归项。

创建部分指定的马尔可夫转换动态回归模型进行估计。指定AR(1)子模型。



arima(1,0,0);
ms(mc,[mdl; mdl]);

由于子模型是AR(1),因此每个子模型都需要进行一次预采样观察以初始化其动态分量以进行估计。

创建包含用于估计过程的初始参数值的模型。



P0 = 0.5*ones(2);
mc(P0,'StateNames');

加载数据。将整个集合转换为年化利率序列。

使用与年率序列相关的日期来确定预采样和估计采样周期。由于转换应用了一阶差分,因此必须从原始样本中删除第一个观察日期。


dates = datetime(dates(2:end),'ConvertFrom','datenum',...
'Format','yyyy:QQQ','Locale','en_US');
estPrd = datetime(["1960:Q2" "2004:Q2"],'InputFormat','yyyy:QQQ',...
'Format','yyyy:QQQ','Locale','en_US');

使模型拟合估计样本数据。指定预采样观测值,并在估计过程终止时在每次迭代时绘制对数似然度。

 

访问预期的平滑状态概率和对数似然

在估计马尔可夫转换动态回归模型中考虑模型和数据 。

创建部分指定的模型进行估计

创建完全指定的模型,其中包含估计过程的初始参数值。

加载并预处理数据。

使模型拟合数据。当算法终止时,返回预期的平滑状态概率和对数似然。

[EstMdl,SS,logL] = estimate(Mdl,Mdl0,arate);

SS 是预期平滑状态概率的228 x 2矩阵;行对应于估计样本中的周期,列对应于方案。 logL 是最终的对数似然。

显示估计样本中最后一个时期的预期平滑状态概率,并显示最终对数似然。



ans = 1×2


0.8985    0.1015


logL = -639.4962

执行约束估计

 

将模拟数据拟合到具有VARX子模型的Markov转换动态回归模型。指定用于估计的相等约束。

为DGP创建模型

为转换区制创建一个完全指定的三态离散时间马尔可夫链模型。


P = [0.8 0.1 0.1; 0.2 0.6 0.2; 0 0.1 0.9];
mc = dt(P);

对于每种状态,为响应过程创建一个完全指定的VARX(1)模型。为所有子模型指定相同的模型常数和滞后1 AR系数矩阵。对于每个模型,为一个外生变量指定不同的回归系数。



% 常数
C = [1;-1];


% 自回归系数
AR = {[0.6 0.1; 0.4 0.2]};


% 回归系数
Beta1 = [0.2;-0.4];




% VAR 子模型
dgp = varm('Constant',C,'AR',AR,'Covariance',5*eye(2));

为DGP创建完全指定的Markov转换动态回归模型。



ms(mc,[dgp1; dgp2; dgp3]);

模拟来自DGP的数据

通过从均值0和方差100的高斯分布中生成1000个观测值来模拟外生序列的数据。


rng(1); % 重现性
X = 10*randn(1000,1);

从DGP生成长度为1000的随机路径。为子模型回归指定模拟的外部数据。


Data = simulate(DGP,1000,'X',X);

Data 是模拟的1000 x 1向量。

创建估计模型

创建一个部分指定的马尔可夫转换动态回归模型,该模型具有与数据生成过程相同的结构,但是指定了未知的转换矩阵和未知的回归系数。指定常数和AR系数矩阵的真值。

ms(mcEst,[mdl; mdl; mdl]);

由于常数和AR系数矩阵的值被指定在 Mdlestimate 将它们作为用于估计等式约束。

创建包含初始值的模型

创建具有与相同结构的完全指定的马尔可夫转换动态回归模型 Mdl,但将所有可估计参数设置为初始值,并将具有相等约束的参数设置为中指定的值 Mdl

估计模型

使模型拟合模拟数据。指定回归的外部数据。在EM算法的每次迭代中绘制对数似然。



figure
EstMdl = estimate(Mdl,Mdl0,Data,'X',X,'IterationPlot',true);

 

评估准确性

将估计的回归系数向量和转移矩阵与其真实值进行比较。



Beta1 = 2×1


0.2000
-0.4000


Beta1Estimate = 2×1


0.1596
-0.4040


Beta2 = 2×1


0.6000
-1.0000


Beta2Estimate = 2×1


0.5888
-0.9771


Beta3 = 2×1


0.9000
-1.3000


Beta3Estimate = 2×1


0.8987
-1.2991


P = 3×3


0.8000    0.1000    0.1000
0.2000    0.6000    0.2000
0    0.1000    0.9000


PEstimate = 3×3


0.7787    0.0856    0.1357
0.1366    0.6906    0.1727
0.0086    0.0787    0.9127



相关文章
|
4天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
26 8
车辆行驶控制运动学模型的matlab建模与仿真,仿真输出车辆动态行驶过程
该课题在MATLAB2022a中建立了车辆行驶控制运动学模型并进行仿真,展示车辆动态行驶过程。系统仿真结果包含四张图像,显示了车辆在不同时间点的位置和轨迹。核心程序定义了车辆参数和初始条件,使用ode45求解器模拟车辆运动。车辆运动学模型基于几何学,研究车辆空间位姿、速度随时间变化,假设车辆在平面运动且轮胎无滑动。运动学方程描述位置、速度和加速度关系,模型预测控制用于优化轨迹跟踪,考虑道路曲率影响,提升弯道跟踪性能。
|
1天前
|
算法
m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真
**MATLAB2022a模拟展示了遗传算法在AWGN信道中估计SNR的效能。该算法利用生物进化原理全局寻优,解决通信系统中复杂环境下的SNR估计问题。核心代码执行多代选择、重组和突变操作,逐步优化SNR估计。结果以图形形式对比了真实SNR与估计值,并显示了均方根误差(RMSE),体现了算法的准确性。**
8 0
|
1月前
|
机器学习/深度学习 算法
【MATLAB】基于VMD-SSA-LSTM的回归预测模型
【MATLAB】基于VMD-SSA-LSTM的回归预测模型
46 4
|
12天前
|
资源调度 SoC
基于UKF无迹卡尔曼滤波的电池Soc估计matlab仿真
**摘要:** 使用MATLAB2022a,基于UKF的电池SOC估计仿真比较真实值,展示非线性滤波在电动车电池管理中的效用。电池电气模型描述电压、电流与SoC的非线性关系,UKF利用无迹变换处理非线性,通过预测和更新步骤实时估计SoC,优化状态估计。尽管UKF有效,但依赖准确模型参数。
|
1月前
|
机器学习/深度学习 算法
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
39 0
【MATLAB】基于EMD-PCA-LSTM的回归预测模型
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络模型的鱼眼镜头中人员检测算法matlab仿真
该内容是一个关于基于YOLOv2的鱼眼镜头人员检测算法的介绍。展示了算法运行的三张效果图,使用的是matlab2022a软件。YOLOv2模型结合鱼眼镜头畸变校正技术,对鱼眼图像中的人员进行准确检测。算法流程包括图像预处理、网络前向传播、边界框预测与分类及后处理。核心程序段加载预训练的YOLOv2检测器,遍历并处理图像,检测到的目标用矩形标注显示。
|
1月前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。
|
1月前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)
|
1月前
|
数据安全/隐私保护
matlab程序, 脉冲波合成与提取,滑冲效应、方向性效应,自定义脉冲模型,提取脉冲波
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章