Вычислите распределенность цепи Маркова на каждом временном шаге

Этот пример показывает, как вычислить и визуализировать перераспределения состояния, которые показывают эволюцию детерминированных дистрибутивов состояния в зависимости от времени от начального распределения.

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

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 временных шагов.

numSteps = 20;
X = redistribute(mc,numSteps);

X 21 7 матрица. Строка t содержит развитую распределенность на временном шаге t.

Визуализируйте перераспределения в карте тепла.

figure;
distplot(mc,X);

Периодичность цепочки очевидна.

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

lc = lazy(mc);
figure;
imagesc(lc.P);
colormap('jet');
axis square;
colorbar;
title('Theoretical Lazy Chain Transition Matrix')

lc является объектом dtmc. lazy создает ленивую цепочку путем добавления веса в вероятность персистентности, то есть, lazy осуществляет самоциклы.

Вычислите эволюцию распределения в ленивой цепочке для 20 временных шагов. Постройте перераспределения в тепловой карте.

X1 = redistribute(lc,numSteps);

figure;
distplot(lc,X1);

Просмотрите эволюцию распределенности как анимированная гистограмма. Задайте частоту кадров 1 секунды.

figure;
distplot(lc,X1,'Type','histogram','FrameRate',1)

Вычислите стационарное распределение ленивой цепочки. Сравните его с итоговым перераспределением в анимированной гистограмме.

xFix = asymptotics(lc)
xFix = 1×7

    0.1300    0.2034    0.1328    0.0325    0.1681    0.1866    0.1468

Стационарное распределение и итоговое перераспределение почти идентичны.

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

Объекты

Функции

Похожие темы