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

В этом примере показано, как визуализировать структуру и эволюцию модели Цепи Маркова использование 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 contains an axes object. The axes object with title Transition Matrix Heatmap contains an object of type image.

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

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

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

figure;
graphplot(mc);

Figure contains an axes object. The axes object contains an object of type graphplot.

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

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

Figure contains an axes object. The axes object contains an object of type graphplot.

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

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

Figure contains an axes object. The axes object contains 3 objects of type graphplot, line. These objects represent Transient, Period = 2.

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

Размер стандартного шрифта меток узла является 8 точками. Уменьшайте размер шрифта до 7 точек.

h.NodeFontSize = 7;

Figure contains an axes object. The axes object contains 3 objects of type graphplot, line. These objects represent Transient, Period = 2.

Смешивание графиков

asymptotics функция возвращает смесительное время Цепи Маркова. Однако, но hitprob и hittime функции позволяют вам визуализировать смешивание путем графического вывода совершающих нападки вероятностей и ожидали сначала поражать времена в диграфе.

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

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

hitprob(mc,"Regime 1",'Graph',true);

Figure contains an axes object. The axes object contains 2 objects of type graphplot, line. This object represents Target State (hp = 1).

Вероятность совершающего нападки режима 1 от режима 3 или 4 0, потому что режимы 3 и 4 формируют абсорбирующий подкласс.

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

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

target = ["Regime 3" "Regime 4"];
hittime(mc,target,'Graph',true);

Figure contains an axes object. The axes object contains 2 objects of type graphplot, line. This object represents Target States (ht = 0).

Начинаясь с режима 1, ожидаемое первое время удара для подкласса является 6 временными шагами.

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

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

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

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

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

figure;
eVals = eigplot(mc)

Figure contains an axes object. The axes object contains 5 objects of type line, patch. These objects represent Eigenvalues, Spectral Gap.

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);

Figure contains an axes object. The axes object with title Distribution of States contains an object of type image.

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

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

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

Figure contains an axes object. The axes object with title Distribution of States contains an object of type categoricalhistogram. This object represents Step 10.

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

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

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

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

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

figure;
simplot(mc,X);

Figure contains an axes object. The axes object with title States Reached By Simulations contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Transitions Realized By Simulations contains an object of type image.

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

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

Объекты

Функции

Похожие темы