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

В этом примере показано, как визуализировать структуру и эволюцию модели Цепи Маркова использование 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;
h = graphplot(mc,'ColorEdges',true,'ColorNodes',true);

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

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

h.NodeFontSize = 7;

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

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

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

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

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

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

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

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

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

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

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

График собственного значения показывает собственные значения на комплексной плоскости. 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');

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

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

Объекты

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте