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

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

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

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

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

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

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

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

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

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

P=[0.50.5000.500.5000010010]

Для примера, P23=0.5 означает вероятность перехода реального ВВП от режима 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. The axes 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. The axes contains an object of type graphplot.

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

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

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

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

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

Figure contains an axes. The axes 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. The axes contains an object of type graphplot.

См. также

Объекты

Функции

Похожие темы