Матрица P перехода состояния характеризует дискретно-временную однородную цепь Маркова. Дополнительные сведения о поддерживаемых формах P см. в разделе Обзор структуры объектов цепочки дискретного времени Маркова. Если имеется теоретическая или эмпирическая матрица перехода состояний, создайте объект модели цепи Маркова с помощью dtmc. В противном случае можно создать цепочку Маркова из случайно сгенерированной матрицы перехода указанной структуры, например, из числа неосуществимых переходов, используя mcmix.
В этом примере показано, как создать объект цепи Маркова для моделирования гипотетического экономического цикла с использованием матрицы стохастического перехода.
Предположим, что динамическое поведение реального валового внутреннего продукта (ВВП) США переключается между четырьмя моделями:
Режим 1: Авторегрессионная модель с низкой средней и низкой волатильностью
Режим 2: Авторегрессионная модель с низкой средней и высокой волатильностью
Режим 3: Авторегрессионная модель с высокой средней и низкой волатильностью
Режим 4: Авторегрессионная модель с высоким средним значением и высокой волатильностью
Рассмотрим эту правую стохастическую матрицу перехода, содержащую вероятности переходов состояний между временными шагами t и t + 1, для всех t.
Например, 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);

После создания и печати цепи Маркова можно определить характеристики цепи, такие как ее стационарное распределение, используя 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);
В этом примере показано, как задать некоторые неосуществимые переходы и случайным образом распределить другие в матрице перехода для цепи Маркова.
Создайте цепочку Маркова из шести состояний из матрицы случайного перехода. Постройте график и укажите вероятности перехода с помощью краевых цветов.
rng(1); % For reproducibility numStates = 6; mc1 = mcmix(numStates); figure; graphplot(mc1,'ColorEdges',true)

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)