exponenta event banner

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

Матрица P перехода состояния характеризует дискретно-временную однородную цепь Маркова. Дополнительные сведения о поддерживаемых формах P см. в разделе Обзор структуры объектов цепочки дискретного времени Маркова. Если имеется теоретическая или эмпирическая матрица перехода состояний, создайте объект модели цепи Маркова с помощью 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.

См. также

Объекты

Функции

Связанные темы