classify

Классифицируйте состояния Цепи Маркова

Описание

пример

bins = classify(mc) состояния разделов дискретной цепи Маркова mc в непересекающиеся классы передачи и возвращается, класс маркирует bins идентификация связывающегося класса, которому принадлежит каждое состояние.

пример

[bins,ClassStates,ClassRecurrence,ClassPeriod] = classify(mc) дополнительно возвращает состояния в каждом классе (ClassStates), являются ли классы текущими (ClassRecurrence), и периоды класса (ClassPeriod).

Примеры

свернуть все

Рассмотрите эту теоретическую, правильно-стохастическую матрицу перехода стохастического процесса.

P=[0.50.5000.50.40.1000010010].

Создайте Цепь Маркова, которая характеризуется матрицей P перехода.

P = [0.5 0.5 0 0; 0.5 0.4 0.1 0; 0 0 0 1; 0 0 1 0];
mc = dtmc(P);

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

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

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

Состояния 3 и 4 принадлежите связывающемуся классу с периодом 2. Состояния 1 и 2 являются переходными.

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

bins = classify(mc)
bins = 1×4

     1     1     2     2

bins вектор 1 на 4 из связывающихся меток класса. Элементы bins соответствуйте состояниям в mc.StateNames. Например, bins(3) = 2 указывает на тот 3 состояния находится в связывающемся классе 2.

Идентифицируйте связывающиеся классы Цепи Маркова. Затем определите, являются ли классы текущими и их периодичность.

Сгенерируйте случайную Цепь Маркова с семью состояниями. Укажите, что 40 случайными элементами в матрице перехода должен быть нуль.

rng(1); % For reproducibility
mc = mcmix(7,'Zeros',40);

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

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

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

Идентифицируйте связывающиеся классы в mc, и затем определите:

  • Связывающийся класс, которому принадлежит каждое состояние

  • Является ли каждый класс передачи текущим

  • Период каждого класса

[bins,ClassStates,ClassRecurrence,ClassPeriod] = classify(mc)
bins = 1×7

     6     4     6     3     2     5     1

ClassStates=1×6 cell array
    {["7"]}    {["5"]}    {["4"]}    {["2"]}    {["6"]}    {["1"    "3"]}

ClassRecurrence = 1x6 logical array

   0   0   0   0   0   1

ClassPeriod = 1×6

     1     1     1     1     1     2

mc имеет семь классов. Каждое состояние является своим собственным классом передачи, кроме состояний 1 и 3, которые вместе составляют класс 6. Класс 6 единственный текущий класс; классы 1 - 5 являются переходными. Класс 6 имеет период 2; все другие классы являются апериодическими.

Идентифицируйте связывающиеся классы Цепи Маркова. Затем извлеките любые текущие подцепи из Цепи Маркова.

Сгенерируйте случайную Цепь Маркова с семью состояниями. Укажите, что 40 случайными элементами в матрице перехода должен быть нуль.

rng(1); % For reproducibility
mc = mcmix(7,'Zeros',40);

Идентифицируйте все классы передачи в Цепи Маркова и являются ли классы текущими.

[bins,~,ClassRecurrence] = classify(mc);
recurrentClass = find(ClassRecurrence,1) 
recurrentClass = 6
recurrentState = find((bins == recurrentClass))
recurrentState = 1×2

     1     3

Класс 6, состоявший из состояний 1 и 3, единственный текущий класс в mc.

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

sc = subchain(mc,recurrentState);

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

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

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

свернуть все

Дискретная цепь Маркова с NumStates состояния и матрица перехода PВ виде dtmc объект. P должен быть полностью задан (никакой NaN записи).

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

свернуть все

Передача членства в классе помечает для каждого состояния, возвращенного как числовой вектор из NumStates длина. интервалы (j) метка для связывающегося класса к который j состояния принадлежит. Значения интервала лежат в диапазоне от 1 до NumClasses.

Имена состояния в каждом классе, возвращенном как вектор ячейки из длины NumClasses содержа векторы строки. ClassNames {j} список имен состояния в классе j. Имена состояния заданы в mc.StateNames.

Флаги повторения класса, возвращенные как логический вектор из NumClasses длина.

ClassRecurrence (j) указывает ли класс j является текущим (true) или переходный процесс (false).

Периоды класса, возвращенные как числовой вектор из длины NumClasses. ClassPeriod (j) период класса j. Апериодические классы имеют период 1.

Примечание

Порядок классов в ClassStates, ClassRecurrence, и ClassPeriod соответствует классификационным индексам, присвоенным в bins.

Больше о

свернуть все

Передача класса

Communicating classes Цепи Маркова является классами эквивалентности, сформированными под отношением взаимной достижимости. Таким образом, два состояния находятся в том же классе, если и только если каждый достижим от другого с ненулевой вероятностью в конечном числе шагов.

Связывающиеся классы эквивалентны компонентам strongly connected в связанном диграфе [2]. Смотрите graphplot.

Неприводимая цепь

irreducible chain является Цепь Маркова, состоящая из одного класса передачи.

Unichain

unichain является Цепь Маркова, состоящая из одного текущего класса и любых переходных классов что переход к текущему классу.

Алгоритмы

  • classify определяет повторение и быстротечность от outdegree supernode, сопоставленного с каждым классом передачи в сжатом диграфе [1]. outdegree 0 соответствует повторению; outdegree, который больше 0, соответствует быстротечности. Смотрите graphplot.

  • classify определяет периодичность с помощью поиска в ширину циклов в связанном диграфе, как в [3]. Период класса является наибольшим общим делителем длин всех циклов, происходящих в любом состоянии в классе.

Ссылки

[1] Gallager, R.G. Стохастические процессы: теория для приложений. Кембридж, Великобритания: Издательство Кембриджского университета, 2013.

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

[3] Джарвис, J. P. и D. R. Более застенчивый. "Теоретический графиком анализ конечных цепей Маркова". В прикладном математическом моделировании: мультидисциплинарный подход. Бока-Ратон: нажатие CRC, 2000.

Введенный в R2017b