Сравнение времени смешения марковских цепей

Этот пример сравнивает предполагаемое время смешения нескольких марковских цепей с отличными структурами. Теоремы сходимости обычно требуют эргодических уничаев. Поэтому перед сравнением временных оценок смешения этот пример гарантирует, что марковские цепи являются эргодическими унихенами.

Быстро смешивающаяся цепь

Создайте марковскую цепь с 23 состояниями из матрицы случайных переходов, содержащей 250 недопустимых переходов из 529 общих переходов. Недопустимый переход является переходом, вероятность наступления которого равна нулю. Постройте график марковской цепи и идентифицируйте классы с помощью цветов узлов и маркеров.

rng(1); % For reproducibility
numStates = 23;
Zeros1 = 250;
mc1 = mcmix(numStates,'Zeros',Zeros1);

figure;
graphplot(mc1,'ColorNodes',true);

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Aperiodic.

mc1 представляет собой унихейн, потому что это один, повторяющийся, апериодический класс.

Определите, является ли марковская цепь эргодичной.

tf1 = isergodic(mc1)
tf1 = logical
   1

tf1 = 1 указывает, что mc1 представляет собой эргодический унихаин.

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

figure;
eigplot(mc1);

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

Розовый диск на графике показывает спектральную погрешность (различие между двумя самыми большими модулями собственных значений). Спектральная погрешность определяет время смешения марковской цепи. Большие погрешности указывают на более быстрое смешивание, в то время как тонкие погрешности указывают на более медленное смешивание. В этом случае зазор является большим, что указывает на быстрое перемешивание цепи.

Оцените время смешения цепи.

[~,tMix1] = asymptotics(mc1)
tMix1 = 0.8357

В среднем это занимает 0.8357 шаги для общего расстояния изменения до распада в множителе e1.

Ожидаемое первое время столкновения для целевого состояния является другим способом просмотра скорости смешения марковской цепи. Расчет времени наезда не требует эргодичной марковской цепи.

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

hittime(mc1,1,'Graph',true);

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

Ожидаемое время первого столкновения для режима 1, начиная с режима 2, составляет приблизительно 16 временных шагов.

Медленно-смешивающаяся цепь

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

Zeros2 = 475;
mc2 = mcmix(numStates,'Zeros',Zeros2);

figure;
graphplot(mc2,'ColorNodes',true);

Figure contains an axes. The axes contains 6 objects of type graphplot, line. These objects represent Transient, Aperiodic.

mc2 представляет собой унихейн, потому что он имеет один, рекуррентный, апериодический класс и несколько переходных классов.

Определите, является ли марковская цепь эргодичной.

tf2 = isergodic(mc2)
tf2 = logical
   0

tf2 = 0 указывает, что mc2 не эргодичен.

Извлеките повторяющуюся подцепь из mc2. Определите, является ли подцепь эргодичной.

[bins,~,ClassRecurrence] = classify(mc2);
recurrentClass = find(ClassRecurrence,1);
recurrentState = find((bins == recurrentClass),1);
sc2 = subchain(mc2,recurrentState);
tf2 = isergodic(sc2)
tf2 = logical
   1

sc2 представляет собой эргодический унихаин.

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

figure;
eigplot(sc2);

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

Спектральная погрешность в подцепи намного тоньше, чем погрешность в mc1, что указывает на то, что подцепь смешивается медленнее.

Оцените время смешения подцепи.

[~,tMix2] = asymptotics(sc2)
tMix2 = 5.0201

В среднем это занимает 5.0201 шаги для общего расстояния изменения до распада в множителе e1.

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

sc2.StateNames(1)
ans = 
"2"
hittime(sc2,1,'Graph',true);

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

Ожидаемое время первого столкновения для режима 2, начиная с режима 8, составляет около 30 временных шагов.

Время смешения цепи гантеля

Создать «гантель» марковской цепи, содержащей по 10 состояний в каждом «весе» и три состояния в «планке».

  • Задайте случайные вероятности перехода между состояниями в каждом весе.

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

  • Задайте равномерные переходы между состояниями на панели.

w = 10;                             % Dumbbell weights
DBar = [0 1 0; 1 0 1; 0 1 0];       % Dumbbell bar
DB = blkdiag(rand(w),DBar,rand(w)); % Transition matrix

% Connect dumbbell weights and bar
DB(w,w+1) = 1;                       
DB(w+1,w) = 1; 
DB(w+3,w+4) = 1; 
DB(w+4,w+3) = 1;

mc3 = dtmc(DB);

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

figure;
h = graphplot(mc3,'ColorNodes',true);
h.NodeLabel = {};

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Aperiodic.

mc3 представляет собой унихейн, потому что он имеет один, рекуррентный, апериодический класс.

Определите, является ли марковская цепь эргодичной.

tf3 = isergodic(mc3)
tf3 = logical
   1

tf3 = 1 указывает, что mc3 является эргодическим.

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

figure;
eigplot(mc3);

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

Спектральная щель в подцепи очень тонкая, что указывает на то, что цепь гантеля смешивается очень медленно.

Оцените время смешения цепи гантели.

[~,tMix3] = asymptotics(mc3)
tMix3 = 90.4334

В среднем это занимает 90.4334 шаги для общего расстояния изменения до распада в множителе e1.

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

hittime(mc3,1,'Graph',true);

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

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

См. также

Объекты

Функции

Похожие темы