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. The axes 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. The axes 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. The axes 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. The axes 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. Axes 1 contains 20 objects of type graphplot, line. These objects represent Transient, Period = 2, Aperiodic. Axes 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' Аргумент пары "имя-значение" true. h является уникальным идентификатором, который можно использовать для запроса или изменения свойств графика.

Подробнее о

свернуть все

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

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

Алгоритмы

hitprob использование linprog для нахождения неотрицательного решения минимальной нормы в системе:

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

где

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

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

  • P = mc.P.

  • N = mc.NumStates [1].

Ссылки

[1] Norris, J. R. Markov Chains. Кембридж, Великобритания: Cambridge University Press, 1997.

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