dtmc

Создание дискретной цепи Маркова

Описание

dtmc создает дискретную, конечную, однородную по времени цепь Маркова из заданной матрицы переходов состояний.

После создания dtmc объект, можно анализировать структуру и эволюцию цепи Маркова, и визуализировать цепочку Маркова различными способами, с помощью функций объекта.

Создание

Описание

пример

mc = dtmc(P) создает объект дискретной цепи Маркова mc заданный матрицей переходов состояний P.

пример

mc = dtmc(P,'StateNames',stateNames) опционально связывает имена stateNames в состояния.

Входные параметры

расширить все

Матрица переходов состояний, заданная как numStates-by- numStates неотрицательная числовая матрица.

P(i,j) является или теоретической вероятностью перехода от состояния i в состояние j или эмпирическое количество наблюдаемых переходов от состояния i в состояние j. P может быть полностью задан (все элементы являются неотрицательными числами), частично задан (элементы являются смесью неотрицательных чисел и NaN значения), или неизвестны (полностью состоят из NaN значения).

dtmc нормализует каждую строку P без каких-либо NaN значения в сумме по 1, затем сохраняет нормированную матрицу в свойстве P.

Типы данных: double

Свойства

расширить все

Можно задать значения свойств записи, когда вы создаете объект модели с помощью синтаксиса аргумента пары "имя-значение" или после того, как вы создаете объект модели с помощью записи через точку. Для примера - для модели двух состояний mc, для маркировки первого и второго состояний Depression и Recession, соответственно, введите:

mc.StateNames = ["Depression" "Recession"];

Это свойство доступно только для чтения.

Нормированная матрица перехода, заданная как numStates-by- numStates неотрицательная числовая матрица.

Если x является вектор-строка длины numStates определение распределения состояний в момент времени t (x суммы в 1), затем x*P - распределение состояний в момент времени t + 1.

NaN значения указывают на оценочные вероятности перехода. estimate функция msVAR обрабатывает известные элементы P как ограничения равенства во время оптимизации.

Типы данных: double

Это свойство доступно только для чтения.

Количество состояний, заданное как положительная скалярная величина.

Типы данных: double

Метки состояния, заданные как строковый вектор, вектор камеры из векторов символов или числовой вектор длины numStates. Элементы соответствуют строкам и столбцам P.

Пример: ["Depression" "Recession" "Stagnant" "Boom"]

Типы данных: string

Функции объекта

dtmc объекты требуют полностью заданной матрицы переходов P.

расширить все

asymptoticsОпределите асимптотику марковской цепи
isergodicПроверяйте марковскую цепь на эргодичность
isreducibleПроверяйте марковскую цепь на редуктивность
classifyКлассификация состояний марковской цепи
lazyНастройте инерцию состояния марковской цепи
subchainИзвлечение марковского подцепи
redistributeВычисление перераспределений цепей Маркова
simulateСимулируйте марковские ходы по состоянию цепи
distplotПостройте графики перераспределения цепей Маркова
eigplotПостроение собственных значений марковской цепи
graphplotПостройте график марковского цепного ориентированного графа
simplotПостроение симуляций цепи Маркова

Примеры

свернуть все

Рассмотрим эту теоретическую, правостохастическую переходную матрицу стохастического процесса.

P=[0.50.5000.500.5000010010].

Элемент Pij - вероятность того, что процесс переходит к состоянию j в момент t + 1, учитывая, что он находится в состоянии i в момент t, для всех t.

Создайте марковскую цепь, которая характеризуется переходной матрицей P.

P = [0.5 0.5 0 0; 0.5 0 0.5 0; 0 0 0 1; 0 0 1 0];
mc = dtmc(P);

mc является dtmc объект, который представляет марковскую цепь.

Отображение количества состояний в марковской цепи.

numstates = mc.NumStates
numstates = 4

Постройте ориентированный график марковской цепи.

figure;
graphplot(mc);

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

Заметьте, что состояния 3 и 4 образуют поглощающий класс, в то время как состояния 1 и 2 являются переходными.

Рассмотрим эту матрицу переходов, в каком элементе (i,j) - количество наблюдаемых переходов состояния i в состояние j.

P=[16231351110897612414151].

Для примера, P32=7 подразумевает, что состояние 3 переходит в состояние 2 семь раз.

P = [16 2  3  13;
     5  11 10 8;
     9  7  6  12;
     4  14 15 1];

Создайте марковскую цепь, которая характеризуется переходной матрицей P.

mc = dtmc(P);

Отобразите нормированную матрицу перехода, сохраненную в mc. Проверьте, что элементы в строках равны 1 для всех строк.

mc.P
ans = 4×4

    0.4706    0.0588    0.0882    0.3824
    0.1471    0.3235    0.2941    0.2353
    0.2647    0.2059    0.1765    0.3529
    0.1176    0.4118    0.4412    0.0294

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

     1
     1
     1
     1

Постройте ориентированный график марковской цепи.

figure;
graphplot(mc);

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

Рассмотрим двухгосударственный бизнес-цикл реального валового национального продукта (ВНП) США в [3] стр. 697. В момент t реальный GNP может быть в состоянии расширения или сужения. Предположим, что следующие операторы верны в течение периода дискретизации.

  • Если реальный GNP расширяется в момент t, то вероятность того, что он продолжится в состоянии расширения в момент t + 1, является p11=0.90.

  • Если реальный GNP сжимается в момент t, то вероятность того, что он продолжится в состоянии сужения в момент t + 1, является p22=0.75.

Создайте матрицу перехода для модели.

p11 = 0.90;
p22 = 0.75;

P = [p11 (1 - p11); (1 - p22) p22];

Создайте марковскую цепь, которая характеризуется переходной матрицей P. Пометьте два состояния.

mc = dtmc(P,'StateNames',["Expansion" "Contraction"])
mc = 
  dtmc with properties:

             P: [2x2 double]
    StateNames: ["Expansion"    "Contraction"]
     NumStates: 2

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

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

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

Чтобы помочь вам исследовать dtmc функции объекта, mcmix создает марковскую цепь из матрицы случайных переходов, используя только заданное количество состояний.

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

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

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

mc является dtmc объект.

Постройте график собственных значений переходной матрицы на комплексной плоскости.

figure;
eigplot(mc)

Figure contains an axes. The axes contains 5 objects of type line, patch. These objects represent Eigenvalues, Spectral Gap.

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

Рассмотрим марковско-переключательную авторегрессию (msVAR) модель для ВВП США, содержащая четыре экономических режима: депрессию, рецессию, стагнацию и экспансию. Чтобы оценить вероятности перехода механизма переключения, вы должны задать dtmc модель с неизвестными записями матрицы перехода в msVAR среда.

Создайте 4-режимную марковскую цепь с неизвестной матрицей перехода (все NaN записи). Укажите имена режимов.

P = nan(4);
statenames = ["Depression" "Recession" ...
    "Stagnation" "Expansion"];

mcUnknown = dtmc(P,'StateNames',statenames)
mcUnknown = 
  dtmc with properties:

             P: [4x4 double]
    StateNames: ["Depression"    "Recession"    "Stagnation"    "Expansion"]
     NumStates: 4

mcUnknown.P
ans = 4×4

   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

Предположим, экономическая теория утверждает, что экономика США никогда не переходит к экспансии от рецессии или депрессии. Создайте 4-режимную марковскую цепь с частично известной матрицей переходов, представляющей ситуацию.

P(1,4) = 0;
P(2,4) = 0;

mcPartial = dtmc(P,'StateNames',statenames)
mcPartial = 
  dtmc with properties:

             P: [4x4 double]
    StateNames: ["Depression"    "Recession"    "Stagnation"    "Expansion"]
     NumStates: 4

mcPartial.P
ans = 4×4

   NaN   NaN   NaN     0
   NaN   NaN   NaN     0
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

The estimate функция msVAR обрабатывает известные элементы mcPartial.P как ограничения равенства во время оптимизации.

Для получения дополнительной информации о моделях динамической регрессии Маркова-переключения смотрите msVAR.

Альтернативы

Можно также создать объект цепи Маркова с помощью mcmix.

Ссылки

[1] Gallager, R.G. Stochastic Processes: Theory for Applications. Кембридж, Великобритания: Cambridge University Press, 2013.

[2] Haggstrom, O. Finite Markov Chains and Algorithmic Applications. Кембридж, Великобритания: Cambridge University Press, 2002.

[3] Гамильтон, Джеймс Д. Анализ временных рядов. Princeton, NJ: Princeton University Press, 1994.

[4] Norris, J. R. Markov Chains. Кембридж, Великобритания: Cambridge University Press, 1997.

Введенный в R2017b