Определите асимптотику марковской цепи
Рассмотрим эту теоретическую, правостохастическую переходную матрицу стохастического процесса.
Создайте марковскую цепь, которая характеризуется переходной матрицей P.
P = [ 0 0 1/2 1/4 1/4 0 0 ;
0 0 1/3 0 2/3 0 0 ;
0 0 0 0 0 1/3 2/3;
0 0 0 0 0 1/2 1/2;
0 0 0 0 0 3/4 1/4;
1/2 1/2 0 0 0 0 0 ;
1/4 3/4 0 0 0 0 0 ];
mc = dtmc(P);Постройте ориентированный график марковской цепи. Укажите вероятность перехода при помощи краевых цветов.
figure;
graphplot(mc,'ColorEdges',true);
Определите стационарное распределение цепи Маркова.
xFix = asymptotics(mc)
xFix = 1×7
0.1300 0.2034 0.1328 0.0325 0.1681 0.1866 0.1468
Потому что xFix является вектор-строка, это уникальное стационарное распределение mc.
Создайте пятигосударственную переходную матрицу эмпирических отсчётов путем генерации блочной диагональной матрицы, составленной из дискретных равномерных рисок.
m = 100; % Maximal count rng(1); % For reproducibility P = blkdiag(randi(100,2) + 1,randi(100,3) + 1)
P = 5×5
43 2 0 0 0
74 32 0 0 0
0 0 16 36 43
0 0 11 41 70
0 0 20 55 22
Создайте и постройте график марковской цепи, который характеризуется переходной матрицей P.
mc = dtmc(P); figure; graphplot(mc)

Определите стационарное распределение и время смешения марковской цепи.
[xFix,tMix] = asymptotics(mc)
xFix = 2×5
0.9401 0.0599 0 0 0
0 0 0.1497 0.4378 0.4125
tMix = 0.8558
Строки xFix соответствуют стационарным распределениям двух независимых рекуррентных классов mc.
Создайте отдельные марковские цепи, представляющие рекуррентные подцепи mc.
mc1 = subchain(mc,1); mc2 = subchain(mc,3);
mc1 и mc2 являются dtmc объекты. mc1 - повторяющийся класс, содержащий состояние 1, и mc2 - повторяющийся класс, содержащий состояние 3.
Сравните время смешения подцепей.
[x1,t1] = asymptotics(mc1)
x1 = 1×2
0.9401 0.0599
t1 = 0.7369
[x2,t2] = asymptotics(mc2)
x2 = 1×3
0.1497 0.4378 0.4125
t2 = 0.8558
mc1 приближается к своему стационарному распределению быстрее, чем mc2.
Создать «гантель» марковской цепи, содержащей по 10 состояний в каждом «весе» и три состояния в «планке».
Задайте случайные вероятности перехода между состояниями в каждом весе.
Если марковская цепь достигает состояния в весе, ближайшем к планке, задайте высокую вероятность перехода к планке.
Задайте равномерные переходы между состояниями на панели.
rng(1); % For reproducibility 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; mc = dtmc(DB);
Визуализируйте матрицу переходов с помощью тепловой карты.
figure;
imagesc(mc.P);
colormap(jet);
axis square;
colorbar;
Постройте ориентированный график марковской цепи. Подавление меток узлов.
figure;
h = graphplot(mc);
h.NodeLabel = {};
Постройте графики собственных значений цепи гантелей.
figure; eigplot(mc);

Тонкий, красный диск на графике показывает спектральную погрешность (различие между двумя самыми большими модулями собственных значений). Спектральная погрешность определяет время смешения марковской цепи. Большие погрешности указывают на более быстрое смешивание, в то время как тонкие погрешности указывают на более медленное смешивание. В этом случае спектральная погрешность является тонкой, что указывает на длительное время смешивания.
Оцените время смешения цепи гантели и определите, является ли цепь эргодичной.
[~,tMix] = asymptotics(mc)
tMix = 85.3258
tf = isergodic(mc)
tf = logical
1
В среднем, время, которое требуется для общего расстояния изменения между любым начальным распределением и стационарным распределением, чтобы распадаться в множителе составляет около 85 шагов.
mc - Цепь Маркова в дискретном времениdtmc объектДискретная цепь Маркова с NumStates состояния и матрица переходов P, заданный как dtmc объект. P должен быть полностью задан (нет NaN записи).
xFix - Стационарное распределениеСтационарное распределение, с xFix*P = xFix, возвращенный как неотрицательная числовая матрица с NumStates столбцы. Количество строк xFix количество независимых повторяющихся классов в mc.
Для unichains распределение уникально, и xFix является 1-by- NumStates вектор.
В противном случае каждая строка xFix представляет отдельное стационарное распределение в mc.
tMix - Время смешенияВремя смешения, возвращаемое как положительный числовой скаляр.
Если μ, второй по величине модуль собственного значения (SLEM) P, существует и не является нулем, тогда предполагаемое время смешивания является .
Примечание
Если P является неотрицательной стохастической матрицей, затем марковской цепью mc он характеризует имеет левый собственный вектор xFix с собственным значением 1. Теорема Перрона-Фробениуса [2] подразумевает, что если mc является unichain (цепь с одним повторяющимся классом связи), затем xFix уникальна. Для сокращаемых цепей с несколькими рекуррентными классами, собственное значение 1 имеет более высокую кратность, и xFix является неоднородным. Если цепь периодическая, xFix является стационарным, но не ограничивающим, потому что произвольные начальные распределения не сходятся к нему. xFix является уникальным и ограничивающим только для эргодических цепей. Посмотрите classify.
Для эргодических цепей, tMix является характерным временем для сходимости любого начального распределения к xFix. В частности, это время для общего расстояния изменения между начальным распределением и xFix распадаться в множителе e = exp(1). Время смешения является мерой относительной связности переходных структур в различных цепях.
[1] Gallager, R.G. Stochastic Processes: Theory for Applications. Кембридж, Великобритания: Cambridge University Press, 2013.
[2] Хорн, Р. и К. Р. Джонсон. Матричный анализ. Кембридж, Великобритания: Cambridge University Press, 1985.
[3] Seneta, E. Неотрицательные матрицы и марковские цепи. Нью-Йорк, Нью-Йорк: Springer-Verlag, 1981.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.