mcmix

Создайте случайную марковскую цепь с заданной структурой смешения

Описание

пример

mc = mcmix(numStates) возвращает дискретную цепь Маркова mc содержащие numStates состояния. mc характеризуется случайными вероятностями перехода.

пример

mc = mcmix(numStates,Name,Value) использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение", для структурирования mc для моделирования различного времени смешивания. Для примера можно управлять шаблоном допустимых переходов.

Примеры

свернуть все

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

rng(1); % For reproducibility
mc = mcmix(6);

mc является dtmc объект.

Отобразите матрицу переходов.

mc.P
ans = 6×6

    0.2732    0.1116    0.1145    0.1957    0.0407    0.2642
    0.3050    0.2885    0.0475    0.0195    0.1513    0.1882
    0.0078    0.0439    0.0082    0.2439    0.2950    0.4013
    0.2480    0.1481    0.2245    0.0485    0.1369    0.1939
    0.2708    0.2488    0.0580    0.1614    0.0137    0.2474
    0.2791    0.1095    0.0991    0.2611    0.1999    0.0513

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

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

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

Сгенерируйте матрицы случайных переходов, содержащие заданное количество нулей в случайных местоположениях. Нуль в местоположении (i, j) указывает, что состояние i не переходит в состояние j.

Сгенерируйте две марковские цепи с 10 состояниями из матриц случайных переходов. Задайте случайное размещение 10 нулей в одной цепи и 30 нулей в другой цепи.

rng(1); % For reproducibility
numStates = 10;
mc1 = mcmix(numStates,'Zeros',10);
mc2 = mcmix(numStates,'Zeros',30);

mc1 и mc2 являются dtmc объекты.

Оцените время смешения для каждой марковской цепи.

[~,tMix1] = asymptotics(mc1)
tMix1 = 0.7567
[~,tMix2] = asymptotics(mc2)
tMix2 = 0.8137

mc1, марковская цепь с более высокой связностью, смешивается быстрее, чем mc2.

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

Сгенерируйте матрицу 4 на 4 отсутствующих (NaN) значения, который представляет матрицу переходов.

P = NaN(4);

Задайте, что состояние 1 переходит в состояние 2 с вероятностью 0,5, и что состояние 2 переходит в состояние 1 с той же вероятностью.

P(1,2) = 0.5;
P(2,1) = 0.5;

Создайте марковскую цепь, характеризующуюся частично известной матрицей переходов. Для остальных неизвестных вероятностей перехода задайте, что пять переходов недопустимы для 5 случайных переходов. Недопустимый переход является переходом, вероятность наступления которого равна нулю.

rng(1); % For reproducibility
mc = mcmix(4,'Fix',P,'Zeros',5);

mc является dtmc объект. За исключением фиксированных элементов (1,2) и (2,1) матрицы перехода, mcmix помещает пять нулей в случайные местоположения и генерирует случайные вероятности для остальных девяти местоположений. Вероятности в определенной сумме строк - 1.

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

P = mc.P
P = 4×4

         0    0.5000    0.1713    0.3287
    0.5000         0    0.1829    0.3171
    0.1632         0    0.8368         0
         0    0.5672    0.1676    0.2652

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

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

Входные параметры

свернуть все

Количество состояний, заданное в виде положительного целого числа.

Если вы не задаете никаких аргументов пары "имя-значение", mcmix создает марковскую цепь со случайными вероятностями перехода.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Zeros',10 места 0 в 10 случайных местоположениях в матрице переходов.

Местоположения и значения фиксированных вероятностей перехода, заданные как разделенная разделенными запятой парами, состоящая из 'Fix' и a numStates-by- numStates числовая матрица.

Вероятности в любой строке должны иметь сумму, меньшую или равную 1. Строки, которые суммируются с 1 также исправьте 0 значения в остальной части строки.

mcmix присваивает случайные вероятности местоположениям, содержащим NaN значения.

Пример: 'Fix',[0.5 NaN NaN; NaN 0.5 NaN; NaN NaN 0.5]

Типы данных: double

Количество нулевых вероятностей перехода для назначения случайным местоположениям в матрице переходов, заданное как разделенная разделенными запятой парами, состоящая из 'Zeros' и положительное целое число, меньше NumStates. mcmix функция присваивает Zeros нули к расположениям, содержащим NaN в Fix.

Пример: 'Zeros',10

Типы данных: double

Метки состояния, заданные как разделенная разделенными запятой парами, состоящая из строкового вектора, вектора камер из векторов символов или числового вектора numStates длина. Элементы соответствуют строкам и столбцам матрицы перехода.

Пример: 'StateNames',["Depression" "Recession" "Stagnant" "Boom"]

Типы данных: double | string | cell

Выходные аргументы

свернуть все

Дискретная цепь Маркова, возвращается как dtmc объект.

Ссылки

[1] Gallager, R.G. Stochastic Processes: Theory for Applications. Кембридж, Великобритания: Cambridge University Press, 2013.

[2] Хорн, Р. и К. Р. Джонсон. Матричный анализ. Кембридж, Великобритания: Cambridge University Press, 1985.

Введенный в R2017b