redistribute

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

Описание

пример

X = redistribute(mc,numSteps) возвращает данные X об эволюции равномерного распределения состояний в дискретную цепь Маркова mc после того, как он продвигается numSteps временные шаги.

пример

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

Примеры

свернуть все

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

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 дискретных временных шагов. Предположим, что начальное равномерное распределение по состояниям.

X = redistribute(mc,10)
X = 11×4

    0.2500    0.2500    0.2500    0.2500
    0.0869    0.2577    0.3088    0.3467
    0.1073    0.2990    0.1536    0.4402
    0.0533    0.2133    0.1844    0.5489
    0.0641    0.2010    0.1092    0.6257
    0.0379    0.1473    0.1162    0.6985
    0.0404    0.1316    0.0765    0.7515
    0.0266    0.0997    0.0746    0.7991
    0.0259    0.0864    0.0526    0.8351
    0.0183    0.0670    0.0484    0.8663
      ⋮

X является матрицей 11 на 4. Строки соответствуют временным шагам, а столбцы - состояниям.

Визуализация государственного перераспределения.

figure;
distplot(mc,X)

Figure contains an axes. The axes with title Distribution of States contains an object of type image.

После 10 переходов распределение, по-видимому, оседает с большинством массы вероятностей в состоянии 4.

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

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
x0 = rand(mc.NumStates,1);
rd = redistribute(mc,20,'X0',x0);

Постройте график перераспределения.

figure;
distplot(mc,rd);

Figure contains an axes. The axes with title Distribution of States contains an object of type image.

Перераспределение предполагает, что цепь является периодической с периодом в три.

Снимите периодичность, создав ленивую версию марковской цепи.

lc = lazy(mc);

Вычислите 20-шаговое перераспределение ленивой цепи с помощью случайных начальных значений. Постройте график перераспределения.

x0 = rand(mc.NumStates,1);
lrd1 = redistribute(lc,20,'X0',x0);

figure;
distplot(lc,lrd1);

Figure contains an axes. The axes with title Distribution of States contains an object of type image.

Перераспределение, по-видимому, происходит после нескольких шагов.

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

свернуть все

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

Количество дискретных временных шагов для вычисления, заданное как положительное целое число.

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

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

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

Пример: 'X0',[0.5 0.25 0.25] задает начальное распределение состояний [0.5 0.25 0.25].

Начальное распределение, заданное как разделенная разделенными запятой парами, состоящая из 'X0' и неотрицательный числовой вектор NumStates длина. redistribute нормализует X0 так, чтобы это исчислялось 1.

По умолчанию это равномерное распределение состояний.

Пример: 'X0',[0.5 0.25 0.25]

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

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

свернуть все

Эволюция вероятностей состояний, возвращенная как (1 + numSteps)-by- NumStates неотрицательная числовая матрица. Первая строка X0. Последующие строки являются перераспределениями на каждом шаге, которые redistribute определяется матрицей переходов P.

Примечание

Если mc является эргодическим, и numSteps достаточно велик, X(end,:) аппроксимирует x = asymptotics(mc). Посмотрите asymptotics.

Совет

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

Введенный в R2017b