Идентифицируйте классы в цепи Маркова

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

Создайте Цепь Маркова с восемью состояниями из случайным образом сгенерированной матрицы перехода с 50 неосуществимыми переходами в случайных местоположениях. Неосуществимый переход является переходом, чья вероятность появления является нулем. Присвойте произвольные имена к состояниям.

numStates = 8;
Zeros = 50;
stateNames = strcat(repmat("Regime ",1,8),string(1:8));
rng(1617676169) % For reproducibility
mc = mcmix(8,'Zeros',Zeros,'StateNames',stateNames);

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

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

Figure contains an axes. The axes contains 5 objects of type graphplot, line. These objects represent Transient, Aperiodic.

Цепь имеет четыре класса, три переходных процесса и один апериодический. Апериодический класс состоит из четырех текущих состояний.

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

  • Индексы класса, bins

  • Членства в классе, ClassStates

  • Являются ли классы текущими, ClassRecurrence

  • Периоды класса, ClassPeriod

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

     3     4     4     2     1     4     3     4

ClassStates=1×4 cell array
    {["Regime 5"]}    {["Regime 4"]}    {1x2 string}    {1x4 string}

ClassRecurrence = 1x4 logical array

   0   0   0   1

ClassPeriod = 1×4

     1     1     1     1

ClassStates{:}
ans = 
"Regime 5"
ans = 
"Regime 4"
ans = 1x2 string
    "Regime 1"    "Regime 7"

ans = 1x4 string
    "Regime 2"    "Regime 3"    "Regime 6"    "Regime 8"

classify присваивает номера интервала каждому состоянию, чтобы идентифицировать членство в классе. Программируемые результаты совпадают с визуальными результатами.

Чтобы охарактеризовать асимптотическое поведение цепи, изолируйте текущий класс путем формирования подцепи. Создать подцепь:

  1. Идентифицируйте текущий класс в Цепи Маркова.

  2. Идентифицируйте количество интервала текущего класса.

  3. Передайте объект Цепи Маркова и номер интервала к subchain.

recurrentClass = find(ClassRecurrence,1);
recurrentState = find((bins == recurrentClass),1); 

sc = subchain(mc,recurrentState);

sc dtmc объект модели, представляющий текущий класс в mc.

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

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

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

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

Смотрите также

Объекты

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте