1

我有状态 K=8 的状态转移概率矩阵,

反式 =

0.9245    0.0755         0         0         0         0         0         0
0.0176    0.9399    0.0425         0         0         0         0         0
     0    0.0290    0.9263    0.0447         0         0         0         0
     0         0    0.0465    0.9228    0.0307         0         0         0
     0         0         0    0.0731    0.8979    0.0290         0         0
     0         0         0         0    0.0907    0.8857    0.0236         0
     0         0         0         0         0    0.1080    0.8750    0.0170
     0         0         0         0         0         0    0.1250    0.8750

我需要使用 Matlab 从转换矩阵生成时间向量/时间序列。谁能建议我如何从 Matlab 中的状态转移概率矩阵生成时间序列。

4

1 回答 1

0

如果通过生成您的意思是来自转换矩阵的样本,这应该有效:

function [chain,state] = simulate_markov(x,P,pi0,T); 
%% x = the quantity corresponding to each state, typical element x(i) 
%% P = Markov transition matrix, typical element p(i,j) i,j=1,...n 
%% pi0 = probability distribution over initial state 
%% T = number of periods to simulate 
%% 
%% chain = sequence of realizations from the simulation 
%% Modification of progam by L&S. 
n = length(x); %% what is the size of the state vector? 
E = rand(T,1); %% T-vector of draws from independent uniform [0,1] 
cumsumP = P*triu(ones(size(P))); 
 %% creates a matrix whose rows are the cumulative sums of 
 %% the rows of P 
%%%%% SET INITIAL STATE USING pi0 
E0 = rand(1,1); 
ppi0 = [0,cumsum(pi0)]; 
s0 = ((E0<=ppi0(2:n+1)).*(E0>ppi0(1:n)))'; 
s = s0; 
%%%%% ITERATE ON THE CHAIN 
for t=1:T, 
 state(:,t) = s; 
 ppi = [0,s'*cumsumP]; 
 s = ((E(t)<=ppi(2:n+1)).*(E(t)>ppi(1:n)))'; 
end 
chain = x'*state;

资料来源:http ://www-scf.usc.edu/~ngarnold/Markov%20Chains%20Notes.pdf

于 2013-05-13T14:41:37.460 回答