В этом примере показано, как визуализировать структуру и эволюцию модели цепи Маркова с помощью dtmc функции печати. Рассмотрим цепочку Маркова из четырех государств, которая моделирует динамику реального валового внутреннего продукта (ВВП) в «Создать цепочку Маркова из стохастической матрицы перехода».
Создание модели цепи Маркова для реального ВВП. Укажите имена состояний.
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 возвращает график собственных значений и идентифицирует:
Собственное значение Перрона-Фробениуса, которое гарантировано для неотрицательных матриц, с использованием жирной звездочки.
Спектральный зазор, представляющий собой область между радиусом с длиной, равной второй наибольшей величине собственного значения (SLEM), и радиусом с длиной 1. Спектральный промежуток определяет время смешения цепи Маркова. Большие зазоры указывают на более быстрое перемешивание, в то время как тонкие зазоры указывают на более медленное перемешивание.
Постройте график и верните собственные значения матрицы перехода на комплексной плоскости.
figure; eVals = eigplot(mc)

eVals = 4×1
0.8090
-0.3090
1.0000
-1.0000
Два собственных значения имеют модуль 1, указывающий, что цепочка Маркова имеет период 2.
График перераспределения отображает перераспределение состояния из начального распределения. В частности, x0Pt.distplot перераспределение участков с использованием данных, генерируемых redistribute и цепной объект Маркова. Перераспределение можно построить в виде статической тепловой карты или анимированных гистограмм или диаграмм.
Создайте 10-ступенчатое перераспределение из начального распределения ′.
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');

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