hitprob

Вычислите вероятности удара Цепи Маркова

Описание

пример

hp = hitprob(mc,target) возвращает вероятность hp из удара заданного подмножества состояний target, начало от каждого состояния в Цепи Маркова mc. Если target формирует текущий класс, элементы hp absorption probabilities.

пример

hp = hitprob(mc,target,'Graph',true) строит ориентированного графа mc с цветами узла, представляющими совершающие нападки вероятности. Цветная полоса обобщает расцветку.

[hp,h] = hitprob(mc,target,'Graph',true) также возвращает указатель графика. Используйте h изменить свойства графика после того, как вы создаете его.

[hp,h] = hitprob(ax,mc,target,'Graph',true) графики на осях заданы ax вместо текущей системы координат (gca).

Примеры

свернуть все

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

P=[10001/201/2001/201/20001].

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

P = [1 0 0 0; 1/2 0 1/2 0; 0 1/2 0 1/2; 0 0 0 1];
mc = dtmc(P);

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

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

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

Вычислите совершающие нападки вероятности для состояния 1, начав с каждого состояния в Цепи Маркова.

hp = hitprob(mc,1)
hp = 4×1

    1.0000
    0.6667
    0.3333
         0

Поскольку состояние 1 является целью, вероятностью состояния, 1 достижением себя является 1.

Состояние 1 достижимо от состояний 2 и 3. Поэтому совершающие нападки вероятности для состояния 1 начало от тех состояний положительны.

Поскольку состояние 1 недостижимо от состояния 4, состояние 4 имеет совершающую нападки вероятность 0 для состояния 1. Поэтому состояние 4 является удаленным состоянием относительно состояния 1.

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

P=[1/201/2000001/302/30001/403/4000002/301/30001/41/81/81/81/41/801/2000001/2].

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

P = [1/2 0   1/2 0   0   0   0
     0   1/3 0   2/3 0   0   0
     1/4 0   3/4 0   0   0   0
     0   2/3 0   1/3 0   0   0
     1/4 1/8 1/8 1/8 1/4 1/8 0
     1/6 1/6 1/6 1/6 1/6 1/6 0
     1/2 0   0   0   0   0   1/2];
mc = dtmc(P);

Постройте диграф Цепи Маркова mc. Задайте цвета узла, представляющие совершающие нападки вероятности для состояния 1, начав с каждого состояния в Цепи Маркова.

hitprob(mc,1,'Graph',true);

Figure contains an axes object. The axes object contains 2 objects of type graphplot, line. This object represents Target State (hp = 1).

Постройте другой диграф. Включайте состояние 3 как целевое состояние.

hitprob(mc,[1 3],'Graph',true);

Figure contains an axes object. The axes object contains 2 objects of type graphplot, line. This object represents Target States (hp = 1).

Вероятность удара состояний 1 или 3 от состояния 6 является приблизительно 0,5.

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

rng(4) % For reproducibility
mc = mcmix(20,'Zeros',375);

Постройте показ диграфа, для каждого состояния, вероятности перехода к подклассу, содержащему состояния 1 и 2.

target = [1 2];
hitprob(mc,target,'Graph',true);

Figure contains an axes object. The axes object contains 2 objects of type graphplot, line. This object represents Target States (hp = 1).

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

rng(4)
mc = mcmix(20,'Zeros',375);

Найдите текущий класс в Цепи Маркова mc путем выполнения этой процедуры:

  1. Классифицируйте состояния путем передачи mc к classify. Возвратите массив членств в классе ClassStates и логический вектор, задающий, является ли классами текущий ClassRecurrence.

  2. Извлеките текущие классы из массива классов путем индексации в массив с помощью логического вектора.

[~,ClassStates,ClassRecurrence] = classify(mc);
s = ClassStates{ClassRecurrence}
s = 1x2 string
    "4"    "15"

Состояния 4 и 15 формируют текущий класс.

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

subplot(2,1,1)
graphplot(mc,'ColorNodes',true)
legend off
subplot(2,1,2)
hitprob(mc,s,'Graph',true);

Figure contains 2 axes objects. Axes object 1 contains 20 objects of type graphplot, line. These objects represent Transient, Period = 2, Aperiodic. Axes object 2 contains 2 objects of type graphplot, line. This object represents Target States (hp = 1).

Состояния слева от состояний 2, 11, 18, и 13 являются удаленными относительно текущего класса. Поэтому их вероятность поглощения 0.

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

свернуть все

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

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

  • Для числового вектора, элементов target соответствуйте строкам матрицы перехода mc.P.

  • Для вектора строки или вектора ячейки из векторов символов, элементов target должны быть имена состояния в mc.StateNames.

Пример: ["Regime 1" "Regime 2"]

Типы данных: double | string | cell

Оси, на которых можно построить в виде Axes объект.

По умолчанию, hitprob графики к текущей системе координат (gca).

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

свернуть все

Удар вероятностей, возвращенных как числовой вектор из длины mc.NumStates. hp (i) вероятность удара заданного подмножества цели, утверждает target от начального состояния i.

hp не вероятностное распределение; его элементы не должны суммировать к 1.

Обработайте к графику графика, возвращенному как графический объект когда 'Graph' аргументом пары "имя-значение" является trueH уникальный идентификатор, который можно использовать, чтобы запросить или изменить свойства графика.

Больше о

свернуть все

Удаленное состояние

Remote states является теми состояниями, от которых целевые состояния недостижимы. Удаленное состояние имеет совершающую нападки вероятность 0 и ожидаемое первое время удара Inf. Для получения дополнительной информации об ожидаемых первых временах удара смотрите hittime.

Алгоритмы

hitprob использование linprog найти минимальную норму неотрицательным решением системы:

{hiA=1,iAhiA=j=1NPijhjA,iA,

где

  • hiA = hp (i), вероятность удара подмножества состояний A, начинающийся с i состояния.

  • A является набором индексов состояний в target.

  • P = mc.P.

  • N = mc.NumStates [1].

Ссылки

[1] Норрис, J. R. Цепи Маркова. Кембридж, Великобритания: Издательство Кембриджского университета, 1997.

Введенный в R2019b