В этом примере показано, как визуализировать структуру и эволюцию модели Цепи Маркова использование 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.
График перераспределения изображает перераспределения состояния в виде графика от начального распределения. А именно, . 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');
Реализованная матрица перехода кажется похожей на теоретическую матрицу перехода.