simulate

Симулируйте обходы состояния Цепи Маркова

Описание

пример

X = simulate(mc,numSteps) возвращает данные X на случайных обходах длины numSteps через последовательности состояний в дискретной цепи Маркова mc.

пример

X = simulate(mc,numSteps,'X0',x0) опционально задает начальное состояние симуляций x0.

Примеры

свернуть все

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

P=[001/21/41/400001/302/300000001/32/3000001/21/2000003/41/41/21/2000001/43/400000].

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

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

Постройте ориентированного графа Цепи Маркова. Укажите на вероятность перехода при помощи цветов обводки.

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

Симулируйте случайный обход с 20 шагами, который начинает со случайного состояния.

rng(1); % For reproducibility
numSteps = 20;
X = simulate(mc,numSteps)
X = 21×1

     3
     7
     1
     3
     6
     1
     3
     7
     2
     5
      ⋮

X 21 1 матрица. Строки соответствуют шагам в случайном обходе. Поскольку X(1) 3, случайный обход начинается в состоянии 3.

Визуализируйте случайный обход.

figure;
simplot(mc,X);

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

rng('default'); % For reproducibility 
mc = mcmix(4,'Zeros',8);

mc dtmc объект.

Постройте диграф Цепи Маркова.

figure;
graphplot(mc);

4 состояния абсорбирующее состояние.

Запустите три симуляции с 10 шагами для каждого состояния.

x0 = 3*ones(1,mc.NumStates);
numSteps = 10;
X = simulate(mc,numSteps,'X0',x0);

X 11 12 матрица. Строки соответствуют шагам в случайном обходе. Столбцы 1-3 являются симуляциями, которые запускаются в состоянии 1; столбец 4-6 является симуляциями, которые запускаются в состоянии 2; столбцы 7-9 являются симуляциями, которые запускаются в состоянии 3; и столбцы 10-12 являются симуляциями, которые запускаются в состоянии 4.

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

figure;
simplot(mc,X)

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

свернуть все

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

Номер дискретного времени продвигается в каждую симуляцию в виде положительного целого числа.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'X0',[1 0 2] задает симуляцию три раза, первая симуляция запускается в состоянии 1, и итоговые два запускаются в состоянии 3.

Начальные состояния симуляций в виде разделенной запятой пары, состоящей из 'X0' и вектор из неотрицательных целых чисел NumStates длина. X0 обеспечивает счета для количества симуляций, чтобы начаться в каждом состоянии. Общее количество симуляций (numSims) sum(X0).

Значением по умолчанию является одна симуляция, начинающаяся со случайного начального состояния.

Пример: 'X0',[10 10 0 5]

Типы данных: double

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

свернуть все

Индексы состояний посещают во время симуляций, возвращенных как (1 + numSteps)- numSims числовая матрица положительных целых чисел. Первая строка содержит начальные состояния. Столбцы, в порядке, являются всеми симуляциями, начинающимися в первом состоянии, затем все симуляции, начинающиеся во втором состоянии, и так далее.

Советы

  • Запустить n симуляции от k состоянияИспользование:

    X0 = zeros(1,NumStates);
    X0(k) = n;

  • Визуализировать данные, созданные simulateИспользование simplot.

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