2013-05-13 2 views
1

제가타임 시리즈

트랜스 상태 K = 8의 상태 전이 확률 행렬을 가질 =

I를 이용하여 천이 행렬에서 시간 벡터/시계열을 생성해야
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에서이 상태 전이 확률 행렬에서 시계열을 생성하는 방법에 대해 제안 할 수 있습니까?

+0

작업 아래의 솔루션을 했습니까? –

+0

@HarshalPandya 이미 제공 한 코드가 있지만 불행히도이 경우에는 제 경우에 작동하지 않습니다. 내 질문은 전이 매트릭스에서 시계열 벡터를 생성해야합니다. 여기서 나는 시계열 벡터를 찾지 못한다. –

+0

내가 틀렸다고 정정 해 주지만, 전환 확률과 초기 상태가 주어진 연속적인 상태 샘플의 벡터 인 시계열이 아닙니다. 그렇다면 아래의 코드 설정에서 T = 100은 체인에 길이 100 인 벡터를 주며 시계열이됩니다. –

답변

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