Моделируйте случайные обходы через цепь Маркова

Этот пример показывает, как сгенерировать и визуализировать случайные обходы через Цепь Маркова.

Рассмотрите эту теоретическую, правильно-стохастическую матрицу перехода стохастического процесса.

P=[001/21/41/400001/302/300000001/32/3000001/21/2000003/41/41/21/2000001/43/400000].

Создайте Цепь Маркова, которая характеризуется матрицей P перехода.

P = [ 0   0  1/2 1/4 1/4  0   0 ;
      0   0  1/3  0  2/3  0   0 ;
      0   0   0   0   0  1/3 2/3;
      0   0   0   0   0  1/2 1/2;
      0   0   0   0   0  3/4 1/4;
     1/2 1/2  0   0   0   0   0 ;
     1/4 3/4  0   0   0   0   0 ];
mc = dtmc(P);

Постройте ориентированного графа Цепи Маркова и идентифицируйте классы с помощью цветов узла и маркеров.

figure;
graphplot(mc,'ColorNodes',true);

mc представляет один текущий класс с периодом 3.

Моделируйте один случайный обход 20 шагов через цепочку. Запустите в случайном начальном состоянии.

rng(1); % For reproducibility
numSteps = 20;
X = simulate(mc,numSteps);

X 21 1 вектор, содержащий индексы состояний, которые посещают во время случайного обхода. Первая строка содержит реализованное начальное состояние.

Постройте тепловую карту случайного обхода.

figure;
simplot(mc,X);

Время возврата к любому состоянию является кратным три.

Покажите случайный обход через Цепь Маркова как анимация через диграф. Задайте частоту кадров 1 секунды.

figure;
simplot(mc,X,'FrameRate',1,'Type','graph');

Моделируйте 100 случайных обходов: 50 запусков с состояния 1, 49 запусков с состояния 2 и 1 запуск с состояния 6. Постройте тепловую карту симуляции.

x0 = [50 49 0 0 0 1 0];
X1 = simulate(mc,numSteps,'X0',x0);

figure;
simplot(mc,X1);

X1 20 100 матрица случайных обходов. Первые 50 столбцов соответствуют обходам, начинающим с состояния 1, следующие 49 столбцов соответствуют обходам, начинающим с состояния 2, и последний столбец соответствует обходу, начинающему с состояния 6.

Три периодических подкласса очевидны.

Просмотрите реализованную матрицу перехода 100 случайных обходов как тепловая карта.

figure;
simplot(mc,X1,'Type','transitions');

Визуально сравните реализованные и теоретические матрицы перехода.

figure;
imagesc(mc.P);
colormap('jet');
axis square;
colorbar;
title('Theoretical Transition Matrix')

Матрицы перехода подобны.

Смотрите также

Объекты

Функции

Похожие темы