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. The axes 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. The axes 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. The axes 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

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

Алгоритмы

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

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

Ссылки

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

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

[3] Джарвис, Дж. П. и Д. Р. Шиер. «Граф-теоретический анализ конечных марковских цепей». В прикладном математическом моделировании: междисциплинарный подход. Бока Ратон: CRC Press, 2000.

Введенный в R2017b