exponenta event banner

классифицировать

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

Описание

пример

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 длина. bins(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.

Подробнее

свернуть все

Класс связи

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

Передаваемые классы эквивалентны сильно связанным компонентам в связанном диграфе [2]. Посмотрите graphplot.

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

Неприводимая цепь - это цепь Маркова, состоящая из одного сообщающегося класса.

Unichain

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

Алгоритмы

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

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

Ссылки

[1] Галлагер, Р. Г. Стохастические процессы: теория для применения. Кембридж, Великобритания: Cambridge University Press, 2013.

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

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

Представлен в R2017b