dtmc

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

Описание

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

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

Создание

Синтаксис

mc = dtmc(P)
mc = dtmc(P,'StateNames',stateNames)

Описание

пример

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

пример

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

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

развернуть все

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

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

dtmc нормирует каждую строку P, чтобы суммировать к 1, затем хранит нормированную матрицу в свойстве P.

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

Свойства

развернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

развернуть все

asymptoticsОпределите Цепь Маркова 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);

Заметьте, что утверждает 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);

Отобразите нормированную матрицу перехода, сохраненную в мГц. Проверьте, что элементы в строках суммируют к 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);

Считайте деловой цикл с двумя состояниями США действительным валовым национальным продуктом (ВНП) в [3] p. 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);

Чтобы помочь вам исследовать функции объекта 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)

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

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

Также можно создать объект Цепи Маркова использование mcmix.

Ссылки

[1] Gallager, R.G. Стохастические процессы: теория для приложений. Кембридж, Великобритания: Издательство Кембриджского университета, 2013.

[2] Haggstrom, O. Конечные цепи Маркова и алгоритмические приложения. Кембридж, Великобритания: Издательство Кембриджского университета, 2002.

[3] Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.

[4] Норрис, J. R. Цепи Маркова. Кембридж, Великобритания: Издательство Кембриджского университета, 1997.

Введенный в R2017b