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);

Вычислите совершающие нападки вероятности для состояния 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);

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

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

Вероятность удара состояний 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);

Создайте Цепь Маркова с 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 array
    "4"    "15"

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

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

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

Состояния слева от состояний 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

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