Создайте и измените объекты модели цепи Маркова

Матрица переходов P характеризует дискретное время, гомогенную временем Цепь Маркова. Для получения дополнительной информации на поддерживаемых формах P, см. Обзор Среды Объекта Дискретной цепи Маркова. Если вы имеете теоретическую или эмпирическую матрицу переходов, создаете объект модели Цепи Маркова при помощи dtmc. В противном случае можно создать Цепь Маркова из случайным образом сгенерированной матрицы перехода заданной структуры, такой как количество неосуществимых переходов, при помощи mcmix.

Создайте цепь Маркова из стохастической матрицы перехода

В этом примере показано, как создать объект Цепи Маркова смоделировать гипотетический экономический цикл с помощью стохастической матрицы перехода.

Предположим, что динамическое поведение действительного валового внутреннего продукта (ВВП) США переключается между четырьмя моделями:

  • Режим 1: авторегрессивная модель с низкой средней и низкой волатильностью

  • Режим 2: авторегрессивная модель с низкой средней и высокой волатильностью

  • Режим 3: авторегрессивная модель с высокой средней и низкой волатильностью

  • Режим 4: авторегрессивная модель с высокой средней и высокой волатильностью

Рассмотрите эту правильно-стохастическую матрицу перехода, содержащую вероятности изменений состояния между временными шагами t и t + 1 для всего t.

P=[0.50.5000.500.5000010010]

Например, P23=0.5 означает вероятность, что действительные переходы GDP от Режима 2 к Режиму 3 в следующем временном шаге 0.5.

Установите матрицу перехода на переменную.

P = [0.5 0.5 0.0 0.0;
     0.5 0.0 0.5 0.0;
     0.0 0.0 0.0 1.0;
     0.0 0.0 1.0 0.0];

Создайте объект Цепи Маркова, охарактеризованный матрицей P перехода.

mc = dtmc(P)
mc = 
  dtmc with properties:

             P: [4x4 double]
    StateNames: ["1"    "2"    "3"    "4"]
     NumStates: 4

mc dtmc объект. MATLAB® отображает свойства и соответствующие значения mc в командной строке.

Ассоциация имен к состояниям улучшает отображения функционального выхода и графики цепи. Когда вы создаете объект Цепи Маркова, можно сопоставить имена к состояниям при помощи 'StateNames' аргумент пары "имя-значение". После того, как вы создадите объект, можно сопоставить имена к состояниям путем установки StateNames свойство с помощью записи через точку.

Партнер называет к состояниям в mc при помощи записи через точку. Элементы вектора строки, содержащего имена, соответствуют строкам и столбцам P.

stateNames = ["Regime 1" "Regime 2" "Regime 3" "Regime 4"];
mc.StateNames = stateNames;

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

figure;
graphplot(mc);

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

После создания и графического вывода Цепи Маркова, можно определить характеристики цепи, такие как ее стационарное распределение при помощи asymptotics или его эволюция распределенности при помощи redistribution.

Создайте цепь Маркова из случайной матрицы перехода

В этом примере показано, как создать объект Цепи Маркова из правильно-стохастической матрицы перехода, которая случайным образом сгенерирована. Такая Цепь Маркова удобна для исследования и тестирования.

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

rng(1); % For reproducibility
numStates = 5;
mc = mcmix(numStates)
mc = 
  dtmc with properties:

             P: [5x5 double]
    StateNames: ["1"    "2"    "3"    "4"    "5"]
     NumStates: 5

mc dtmc объект.

Отобразите матрицу перехода и проверьте, что сумма каждой строки равняется 1.

mc.P
ans = 5×5

    0.3259    0.0358    0.1149    0.3602    0.1632
    0.0298    0.1478    0.2409    0.2626    0.3189
    0.0162    0.3982    0.3469    0.1166    0.1221
    0.0944    0.2965    0.0102    0.4389    0.1600
    0.3439    0.2710    0.2938    0.0404    0.0509

sum(mc.P,2)
ans = 5×1

    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

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

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

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

Задайте структуру для случайной цепи Маркова

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

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

rng(1); % For reproducibility
numStates = 6;
mc1 = mcmix(numStates);

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

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

mcmix производит Цепь Маркова, таким образом, что все состояния являются персистентными, и все состояния достижимы от любого другого состояния.

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

Fix = ones(numStates) - eye(numStates);
Fix(Fix == 1) = NaN;
zeros = 12;
mc2 = mcmix(numStates,'Zeros',zeros,'Fix',Fix);

Отобразите матрицу перехода mc2. Постройте диграф mc2 и укажите на вероятности перехода при помощи цветов обводки.

mc2.P
ans = 6×6

         0    0.4845         0    0.0344         0    0.4811
    0.5107         0    0.0791         0         0    0.4102
    0.1397    0.2701         0    0.2954    0.2948         0
    0.4767    0.5233         0         0         0         0
    0.3710         0    0.5550         0         0    0.0740
    0.0179    0.1947    0.7874         0         0         0

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

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

Смотрите также

Объекты

Функции

Похожие темы