exponenta event banner

перераспределить

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

Описание

пример

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

Примечание

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

Совет

Визуализация данных, созданных redistribute, использовать distplot.

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