Matlab馬爾可夫區(qū)制轉(zhuǎn)換動(dòng)態(tài)回歸模型估計(jì)GDP增長(zhǎng)率
原文鏈接:http://tecdat.cn/?p=19918
?
本文估計(jì)實(shí)際GDP增長(zhǎng)率的兩狀態(tài)Markov區(qū)制轉(zhuǎn)換動(dòng)態(tài)回歸模型?。
創(chuàng)建模型進(jìn)行估計(jì)
通過(guò)指定轉(zhuǎn)移矩陣和兩個(gè)區(qū)制的AR(0)(僅常數(shù))子模型的兩狀態(tài)離散時(shí)間馬爾可夫鏈,為樸素估計(jì)量創(chuàng)建馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型。標(biāo)記狀態(tài)。
mc(NaN(2),'StateNames',["增長(zhǎng)" "衰退"]);
?
加載和預(yù)處理數(shù)據(jù)
加載GDP數(shù)據(jù)集。
Data
?包含1947:Q1-2005:Q2期間實(shí)際GDP的季度數(shù)據(jù)。估計(jì)周期??為1947:Q2-2004:Q2。
通過(guò)以下方式將數(shù)據(jù)轉(zhuǎn)換為年度序列:
在估計(jì)期內(nèi)將數(shù)據(jù)轉(zhuǎn)換為季度比率
將季度比率年度化
diff(Data(2:230))./Data(2:229); % 季度比率
100*((1 + qrate).^4 - 1); ? ? ? % 年度比率
估計(jì)模型
模型擬合Mdl
?年利率序列?arate
。
estimate(Mdl,Mdl0,arate);
EstMdl
?是估計(jì)的(完全指定的)馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型。?EstMdl.Switch
?是估計(jì)的離散時(shí)間馬爾可夫鏈模型(dtmc
?對(duì)象),?EstMdl.Submodels
?是估計(jì)的單變量VAR(0)模型(varm
?對(duì)象)的向量。
顯示估計(jì)的特定于狀態(tài)的動(dòng)態(tài)模型。
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
顯示估計(jì)的狀態(tài)轉(zhuǎn)移矩陣。
2×2
0.9088 ? ?0.0912
0.2303 ? ?0.7697
估計(jì)后的EM算法
在估計(jì)馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型中考慮模型和數(shù)據(jù)?。
創(chuàng)建部分指定模型進(jìn)行估計(jì)。
創(chuàng)建完全指定的模型,其中包含估計(jì)過(guò)程的初始參數(shù)值。
加載并預(yù)處理數(shù)據(jù)。
diff(Data(2:230))./Data(2:229);
100*((1 + qrate).^4 - 1);
使模型擬合數(shù)據(jù)。當(dāng)估計(jì)過(guò)程終止時(shí),繪制對(duì)數(shù)似然比與迭代步驟。
Plot(Mdl,Mdl0);

?
使模型擬合模擬數(shù)據(jù)
?
使用來(lái)自已知數(shù)據(jù)生成過(guò)程(DGP)的模擬數(shù)據(jù)評(píng)估估計(jì)準(zhǔn)確性。本示例使用任意參數(shù)值。
為DGP創(chuàng)建模型
為轉(zhuǎn)換區(qū)制創(chuàng)建一個(gè)完全指定的兩狀態(tài)離散時(shí)間馬爾可夫鏈模型。
P = [0.7 0.3; 0.1 0.9];
對(duì)于每個(gè)狀態(tài),為過(guò)程創(chuàng)建一個(gè)完全指定的AR(1)模型。
% 常數(shù)
C1 = 4;
C2 = -1;
% 自回歸系數(shù)
AR1 = 0.5;
AR2 = 0.3;
% 方差
V1 = 3;
V2 = 2;
% AR 子模型
arima('Constant',C1,'AR',AR1,'Variance',V1);
為DGP創(chuàng)建完全指定的Markov轉(zhuǎn)換動(dòng)態(tài)回歸模型。
模擬來(lái)自DGP的路徑
從DGP生成10條長(zhǎng)度為1000的隨機(jī)路徑。
rng(1); % 重現(xiàn)性
N = 10;
n = 1000;
simulate(DGP,n,'Numpaths',N);
Data
?是模擬的1000 x 10矩陣。
創(chuàng)建估計(jì)模型
創(chuàng)建一個(gè)部分指定的馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型,該模型具有與數(shù)據(jù)生成過(guò)程相同的結(jié)構(gòu),但是指定了未知的轉(zhuǎn)移矩陣和未知的子模型系數(shù)。
創(chuàng)建包含初始值的模型
創(chuàng)建一個(gè)完全指定的馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型,該模型具有與相同的結(jié)構(gòu)?Mdl
,但是將所有可估計(jì)的參數(shù)都設(shè)置為初始值。
P0 = 0.5*ones(2);
dtmc(P0);
ms(mc0,[mdl01,mdl02]);
估計(jì)模型
使模型擬合每個(gè)模擬路徑。對(duì)于每條路徑,在EM算法的每次迭代中繪制對(duì)數(shù)似然圖。
figure
hold on
for i = 1:N
estimate(Data(:,i),'Plot',true);
end
hold off

?
評(píng)估準(zhǔn)確性
計(jì)算每個(gè)估計(jì)參數(shù)的蒙特卡洛平均值。
將總體參數(shù)與相應(yīng)的蒙特卡洛估計(jì)進(jìn)行比較。
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
預(yù)采樣數(shù)據(jù)
考慮?估計(jì)馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型中的數(shù)據(jù),但假設(shè)關(guān)注期間為1960:Q1–2004:Q2。另外,考慮向每個(gè)子模型添加一個(gè)自回歸項(xiàng)。
創(chuàng)建部分指定的馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型進(jìn)行估計(jì)。指定AR(1)子模型。
arima(1,0,0);
ms(mc,[mdl; mdl]);
由于子模型是AR(1),因此每個(gè)子模型都需要進(jìn)行一次預(yù)采樣觀察以初始化其動(dòng)態(tài)分量以進(jìn)行估計(jì)。
創(chuàng)建包含用于估計(jì)過(guò)程的初始參數(shù)值的模型。
P0 = 0.5*ones(2);
mc(P0,'StateNames');
加載數(shù)據(jù)。將整個(gè)集合轉(zhuǎn)換為年化利率序列。
使用與年率序列相關(guān)的日期來(lái)確定預(yù)采樣和估計(jì)采樣周期。由于轉(zhuǎn)換應(yīng)用了一階差分,因此必須從原始樣本中刪除第一個(gè)觀察日期。
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');
使模型擬合估計(jì)樣本數(shù)據(jù)。指定預(yù)采樣觀測(cè)值,并在估計(jì)過(guò)程終止時(shí)在每次迭代時(shí)繪制對(duì)數(shù)似然度。

?
訪問(wèn)預(yù)期的平滑狀態(tài)概率和對(duì)數(shù)似然
在估計(jì)馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型中考慮模型和數(shù)據(jù)?。
創(chuàng)建部分指定的模型進(jìn)行估計(jì)。
創(chuàng)建完全指定的模型,其中包含估計(jì)過(guò)程的初始參數(shù)值。
加載并預(yù)處理數(shù)據(jù)。
使模型擬合數(shù)據(jù)。當(dāng)算法終止時(shí),返回預(yù)期的平滑狀態(tài)概率和對(duì)數(shù)似然。
[EstMdl,SS,logL] = estimate(Mdl,Mdl0,arate);
SS
?是預(yù)期平滑狀態(tài)概率的228 x 2矩陣;行對(duì)應(yīng)于估計(jì)樣本中的周期,列對(duì)應(yīng)于方案。?logL
?是最終的對(duì)數(shù)似然。
顯示估計(jì)樣本中最后一個(gè)時(shí)期的預(yù)期平滑狀態(tài)概率,并顯示最終對(duì)數(shù)似然。
ans = 1×2
0.8985 ? ?0.1015
logL = -639.4962
執(zhí)行約束估計(jì)
?
將模擬數(shù)據(jù)擬合到具有VARX子模型的Markov轉(zhuǎn)換動(dòng)態(tài)回歸模型。指定用于估計(jì)的相等約束。
為DGP創(chuàng)建模型
為轉(zhuǎn)換區(qū)制創(chuàng)建一個(gè)完全指定的三態(tài)離散時(shí)間馬爾可夫鏈模型。
P = [0.8 0.1 0.1; 0.2 0.6 0.2; 0 0.1 0.9];
mc = dt(P);
對(duì)于每種狀態(tài),為響應(yīng)過(guò)程創(chuàng)建一個(gè)完全指定的VARX(1)模型。為所有子模型指定相同的模型常數(shù)和滯后1 AR系數(shù)矩陣。對(duì)于每個(gè)模型,為一個(gè)外生變量指定不同的回歸系數(shù)。
% 常數(shù)
C = [1;-1];
% 自回歸系數(shù)
AR = {[0.6 0.1; 0.4 0.2]};
% 回歸系數(shù)
Beta1 = [0.2;-0.4];
% VAR 子模型
dgp = varm('Constant',C,'AR',AR,'Covariance',5*eye(2));
為DGP創(chuàng)建完全指定的Markov轉(zhuǎn)換動(dòng)態(tài)回歸模型。
ms(mc,[dgp1; dgp2; dgp3]);
模擬來(lái)自DGP的數(shù)據(jù)
通過(guò)從均值0和方差100的高斯分布中生成1000個(gè)觀測(cè)值來(lái)模擬外生序列的數(shù)據(jù)。
rng(1); % 重現(xiàn)性
X = 10*randn(1000,1);
從DGP生成長(zhǎng)度為1000的隨機(jī)路徑。為子模型回歸指定模擬的外部數(shù)據(jù)。
Data = simulate(DGP,1000,'X',X);
Data
?是模擬的1000 x 1向量。
創(chuàng)建估計(jì)模型
創(chuàng)建一個(gè)部分指定的馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型,該模型具有與數(shù)據(jù)生成過(guò)程相同的結(jié)構(gòu),但是指定了未知的轉(zhuǎn)換矩陣和未知的回歸系數(shù)。指定常數(shù)和AR系數(shù)矩陣的真值。
ms(mcEst,[mdl; mdl; mdl]);
由于常數(shù)和AR系數(shù)矩陣的值被指定在?Mdl
,?estimate
?將它們作為用于估計(jì)等式約束。
創(chuàng)建包含初始值的模型
創(chuàng)建具有與相同結(jié)構(gòu)的完全指定的馬爾可夫轉(zhuǎn)換動(dòng)態(tài)回歸模型?Mdl
,但將所有可估計(jì)參數(shù)設(shè)置為初始值,并將具有相等約束的參數(shù)設(shè)置為中指定的值?Mdl
。
估計(jì)模型
使模型擬合模擬數(shù)據(jù)。指定回歸的外部數(shù)據(jù)。在EM算法的每次迭代中繪制對(duì)數(shù)似然。
figure
EstMdl = estimate(Mdl,Mdl0,Data,'X',X,'IterationPlot',true);

?
評(píng)估準(zhǔn)確性
將估計(jì)的回歸系數(shù)向量和轉(zhuǎn)移矩陣與其真實(shí)值進(jìn)行比較。
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

最受歡迎的見(jiàn)解
1.用R語(yǔ)言模擬混合制排隊(duì)隨機(jī)服務(wù)排隊(duì)系統(tǒng)
2.R語(yǔ)言中使用排隊(duì)論預(yù)測(cè)等待時(shí)間
3.R語(yǔ)言中實(shí)現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型
4.R語(yǔ)言中的馬爾科夫機(jī)制轉(zhuǎn)換(Markov regime switching)模型
5.matlab貝葉斯隱馬爾可夫hmm模型
6.用R語(yǔ)言模擬混合制排隊(duì)隨機(jī)服務(wù)排隊(duì)系統(tǒng)
7.Python基于粒子群優(yōu)化的投資組合優(yōu)化
8.R語(yǔ)言馬爾可夫轉(zhuǎn)換模型研究交通傷亡人數(shù)事故預(yù)測(cè)
9.用機(jī)器學(xué)習(xí)識(shí)別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用
?