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

В этом примере показано, как визуализировать структуру и эволюцию модели Марковской цепи с помощью dtmc Функции построения графика. Рассмотрим четырехгосударственную марковскую цепь, которая моделирует динамику реального валового внутреннего продукта (ВВП) в Create Markov Chain из Stochastic Transition Matrix.

Создайте модель марковской цепи для реального ВВП. Задайте имена состояний.

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. The axes with title Transition Matrix Heatmap contains an object of type image.

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

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

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

figure;
graphplot(mc);

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

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

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

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

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

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

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

Низкие средние состояния являются переходными и в конечном счете переходят к периодическим высоким средним состояниям.

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

h.NodeFontSize = 7;

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

Смесительные графики

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

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

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

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

Figure contains an axes. The axes 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. The axes contains 2 objects of type graphplot, line. This object represents Target States (ht = 0).

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

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

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

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

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

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

figure;
eVals = eigplot(mc)

Figure contains an axes. The axes 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. The axes 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. The axes 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. The axes with title States Reached By Simulations contains an object of type image.

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

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

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

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

См. также

Объекты

Функции

Похожие темы