exponenta event banner

hitprob

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

Описание

пример

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

пример

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 - уникальный идентификатор, который можно использовать для запроса или изменения свойств графика.

Подробнее

свернуть все

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

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

Алгоритмы

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

{hiA=1,i∈AhiA=∑j=1NPijhjA,i∉A,

где

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

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

  • P = mc.P.

  • N = mc.NumStates [1].

Ссылки

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

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