mcmix

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

Синтаксис

mc = mcmix(numStates)
mc = mcmix(numStates,Name,Value)

Описание

пример

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

пример

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

Примеры

свернуть все

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

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);

Сгенерируйте случайные матрицы перехода, содержащие конкретное количество нулей в случайных местоположениях. Нуль в месте (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);

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

свернуть все

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Местоположения и значения фиксированных вероятностей перехода, заданных как пара, разделенная запятой, состоящая из 'Fix' и 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. Стохастические процессы: теория для приложений. Кембридж, Великобритания: Издательство Кембриджского университета, 2013.

[2] Рог, R. и К. Р. Джонсон. Анализ матрицы. Кембридж, Великобритания: Издательство Кембриджского университета, 1985.

Введенный в R2017b