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

Figure contains an axes. The axes contains an object of type graphplot.

Симулируйте 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);

Figure contains an axes. The axes with title States Reached By Simulations contains an object of type image.

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

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

mc является dtmc объект.

Постройте график марковской цепи.

figure;
graphplot(mc);

Figure contains an axes. The axes contains an object of type graphplot.

Конечные 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)

Figure contains an axes. The axes with title States Reached By Simulations contains an object of type image.

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

свернуть все

Дискретная цепь Маркова с 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)-by- numSims числовая матрица положительных целых чисел. Первая строка содержит начальные состояния. Столбцы, по порядку, все симуляции начинаются в первом состоянии, затем все симуляции начинаются во втором состоянии и так далее.

Совет

  • Чтобы начать n симуляции из k состояний, использовать:

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

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

Введенный в R2017b