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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Distribution of States contains an object of type image.

Перераспределение, кажется, обосновывается после нескольких шагов.

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

свернуть все

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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)- NumStates неотрицательная числовая матрица. Первой строкой является X0. Последующие строки являются перераспределениями на каждом шаге, который redistribute определяет матрицей перехода P.

Примечание

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

Советы

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

Введенный в R2017b