Визуализируйте структуру цепи Маркова и эволюцию

Этот пример показывает, как визуализировать структуру и эволюцию модели Цепи Маркова использование функций построения графика dtmc. Рассмотрите Цепь Маркова с четырьмя состояниями, что модели действительная динамика валового внутреннего продукта (ВВП) в Создают Цепь Маркова из Стохастической Матрицы Перехода.

Создайте модель Цепи Маркова для действительного GDP. Задайте имена состояния.

P = [0.5 0.5 0.0 0.0;
     0.5 0.0 0.5 0.0;
     0.0 0.0 0.0 1.0;
     0.0 0.0 1.0 0.0];
stateNames = ["Regime 1" "Regime 2" "Regime 3" "Regime 4"];
mc = dtmc(P,'StateNames',stateNames);

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

figure;
imagesc(P);
colormap(jet);
colorbar;
axis square
h = gca;
h.XTick = 1:4;
h.YTick = 1:4;
title 'Transition Matrix Heatmap';

Ориентированный граф

Ориентированный граф или диграф, показывает состояния в цепочке как узлы и показывает выполнимые переходы между состояниями как ориентированные ребра. Выполнимый переход является переходом, чья вероятность появления больше, чем нуль.

Постройте диграф по умолчанию Цепи Маркова.

figure;
graphplot(mc);

Сравните вероятности перехода путем определения цветов обводки на основе вероятности перехода.

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

Идентифицируйте текущие и переходные состояния путем определения цветов узла и маркеров на основе типа состояния.

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

Состояния низкого среднего значения являются переходными и в конечном счете переход к текущим высоко-средним состояниям.

График собственного значения

График собственного значения показывает собственные значения на комплексной плоскости. eigplot возвращает график собственного значения и идентифицирует:

  • Собственное значение крыльца-Frobenius, которое гарантируется для неотрицательных матриц, с помощью полужирной звездочки

  • Спектральный разрыв, который является областью между радиусом с длиной, равной второму по величине значению собственного значения (SLEM) и радиусом с длиной 1

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

figure;
eVals = eigplot(mc)

eVals = 4×1

    0.8090
   -0.3090
    1.0000
   -1.0000

Два собственных значения имеют модуль 1, указывая, что Цепь Маркова имеет период 2.

Графики перераспределения

График перераспределения изображает перераспределения состояния в виде графика xt от начального распределения. А именно, xt=xt-1P=x0Pt. distplot отображает перераспределения на графике с помощью данных, сгенерированных redistribute и объектом Цепи Маркова. Можно построить перераспределения как статическую тепловую карту или как анимированные гистограммы или диграфы.

Сгенерируйте перераспределение с 10 шагами от начального распределения [0.50.500].

numSteps = 10;
x0 = [0.5 0.5 0 0];
X = redistribute(mc,numSteps,'X0',x0);

Постройте перераспределения как карту тепла.

figure;
distplot(mc,X);

Поскольку состояния 1 и 2 являются переходными, Цепь Маркова в конечном счете концентрирует вероятность к состояниям 3 и 4. Кроме того, как предлагает график собственного значения, утверждает 3, и 4, кажется, имеют период 2.

Постройте анимированную гистограмму. Установите частоту кадров на одну секунду.

figure;
distplot(mc,X,'Type','histogram','FrameRate',1);

График симуляции

График симуляции графики случайные обходы через Цепь Маркова, запускающуюся в конкретных начальных состояниях. simplot отображает симуляцию на графике с помощью данных, сгенерированных simulate и объектом Цепи Маркова. Можно построить симуляцию как статическую тепловую карту, отображающую пропорцию состояний, достигнутых на каждом шаге, тепловой карте реализованной матрицы перехода или анимированном диграфе, показывающем реализованные переходы.

Сгенерируйте 100 случайных обходов с десятью шагами, где каждое состояние инициализирует обход 25 раз.

x0 = [25 25 25 25];
X = simulate(mc,numSteps,'X0',x0);

Постройте симуляцию как тепловую карту, показывающую пропорцию состояний, достигнутых на каждом шаге.

figure;
simplot(mc,X);

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

figure;
simplot(mc,X,'Type','transition');

Реализованная матрица перехода кажется подобной теоретической матрице перехода.

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

Объекты

Функции

Похожие темы