simsmooth

Класс: ssm

Более сглаженная симуляция модели в пространстве состояний

Синтаксис

X = simsmooth(Mdl,Y)
X = simsmooth(Mdl,Y,Name,Value)

Описание

пример

X = simsmooth(Mdl,Y) возвращает моделируемые состояния (X) путем применения симуляции, более сглаженной к независимой от времени или изменяющейся во времени модели в пространстве состояний (Mdl) и ответы (Y). Таким образом, программное обеспечение использует вперед фильтрацию и заднюю выборку, чтобы получить один случайный путь из апостериорного распределения состояний.

пример

X = simsmooth(Mdl,Y,Name,Value) возвращает моделируемые состояния с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

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

Стандартная модель в пространстве состояний, заданная как anssm объект модели, возвращенный ssm или estimate. Стандартная модель в пространстве состояний имеет конечные элементы ковариационной матрицы начального состояния. Таким образом, Mdl не может быть объектом модели dssm.

Если Mdl не полностью задан (то есть, Mdl содержит неизвестные параметры), то задайте значения для неизвестных параметров с помощью Params ' ' аргумент пары Name,Value. В противном случае программное обеспечение выдает ошибку.

Наблюдаемые данные об ответе, к которым Mdl является подходящим, задан как числовая матрица или вектор ячейки числовых векторов.

  • Если Mdl независим от времени относительно уравнения наблюдения, то Y является T-by-n матрица, где каждая строка соответствует периоду, и каждый столбец соответствует конкретному наблюдению в модели. T является объемом выборки, и m является количеством наблюдений на период. Последняя строка Y содержит последние наблюдения.

  • Если Mdl время, отличаясь относительно уравнения наблюдения, то Y является T-by-1 вектор ячейки. Каждый элемент вектора ячейки соответствует периоду и содержит nt - размерный вектор наблюдений в течение того периода. Соответствующие размерности содействующих матриц в Mdl.C{t} и Mdl.D{t} должны быть сопоставимы с матрицей в Y{t} в течение всех периодов. Последняя ячейка Y содержит последние наблюдения.

Элементы NaN указывают на недостающие наблюдения. Для получения дополнительной информации о том, как Фильтр Калмана размещает недостающие наблюдения, см. Алгоритмы.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Количество выходных аргументов отображения параметра к матрице функционирует для неявно заданных моделей в пространстве состояний, заданных как пара, разделенная запятой, состоящая из 'NumOut' и положительного целого числа.

Если вы неявно задаете модель в пространстве состояний, и вы не предоставляете NumOut, то программное обеспечение автоматически обнаруживает количество выходных аргументов функции отображения параметра к матрице. Такое обнаружение использует дополнительные ресурсы и может замедлить более сглаженную симуляцию.

Для явным образом заданных моделей программное обеспечение игнорирует NumOut и отображает предупреждающее сообщение.

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

Пример: 'NumPaths',1000

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

Значения для неизвестных параметров в модели в пространстве состояний, заданной как разделенная от столбца пара, состоящая из 'Params' и числового вектора.

Элементы Params соответствуют неизвестным параметрам в матрицах модели в пространстве состояний A, B, C, и D, и, опционально, начальное состояние означают Mean0 и ковариационную матрицу Cov0.

  • Если вы создали Mdl явным образом (то есть, путем определения матриц без функции отображения параметра к матрице), то программное обеспечение сопоставляет элементы Params к NaN s в матрицах модели в пространстве состояний и значениях начального состояния. Программное обеспечение ищет NaN s по столбцам выполняющий приказ A, B, C, D, Mean0 и Cov0.

  • Если бы вы создали Mdl неявно (то есть, путем определения матриц с функцией отображения параметра к матрице), то необходимо установить начальные значения параметров для матриц модели в пространстве состояний, значений начального состояния и типов состояния в функции отображения параметра к матрице.

Если Mdl содержит неизвестные параметры, то необходимо задать их значения. В противном случае программное обеспечение игнорирует значение Params.

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

Предскажите порог неуверенности, заданный как пара, разделенная запятой, состоящая из 'Tolerance' и неотрицательного скаляра.

Если неуверенность прогноза для конкретного наблюдения является меньше, чем Tolerance во время числовой оценки, то программное обеспечение удаляет неуверенность, соответствующую наблюдению от ковариационной матрицы прогноза перед ее инверсией.

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

Пример: 'Tolerance',le-15

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

Выходные аргументы

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

Моделируемые состояния, возвращенные как числовая матрица или матрица ячейки векторов.

Если Mdl является независимой от времени моделью относительно состояний, то X является numObs-by-m-by-numPaths массив. Таким образом, каждая строка соответствует периоду, каждый столбец соответствует состоянию в модели, и каждая страница соответствует демонстрационному пути. Последняя строка соответствует последним моделируемым состояниям.

Если Mdl является изменяющейся во времени моделью относительно состояний, то X является numObs-by-numPaths матрица ячейки векторов. X{t,j} содержит вектор длины mt моделируемых состояний в течение периода t демонстрационного пути j. Последняя строка X содержит последний набор моделируемых состояний.

Примеры

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

Предположим, что скрытый процесс является моделью AR (1). Впоследствии, уравнение состояния

xt=0.5xt-1+ut,

где ut является Гауссовым со средним значением 0 и стандартным отклонением 1.

Сгенерируйте случайную последовательность 100 наблюдений от xt, предположение, что ряд запускается в 1,5.

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

Предположим далее, что скрытый процесс подвергается аддитивной погрешности измерения. Впоследствии, уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним значением 0 и стандартным отклонением 0.75. Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний.

Используйте случайный скрытый процесс состояния (x) и уравнение наблюдения, чтобы сгенерировать наблюдения.

y = x + 0.75*randn(T,1);

Задайте четыре содействующих матрицы.

A = 0.5;
B = 1;
C = 1;
D = 0.75;

Задайте модель в пространстве состояний с помощью содействующих матриц.

Mdl = ssm(A,B,C,D)
Mdl = 
State-space model type: ssm

State vector length: 1
Observation vector length: 1
State disturbance vector length: 1
Observation innovation vector length: 1
Sample size supported by model: Unlimited

State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...

State equation:
x1(t) = (0.50)x1(t-1) + u1(t)

Observation equation:
y1(t) = x1(t) + (0.75)e1(t)

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1   
 x1  1.33 

State types
     x1     
 Stationary 

Mdl является моделью ssm. Проверьте, что модель правильно задана с помощью отображения в Командном окне. Программное обеспечение выводит, что процесс состояния является стационарным. Впоследствии, программное обеспечение устанавливает среднее значение начального состояния и ковариацию к среднему значению и отклонению стационарного распределения модели AR (1).

Моделируйте один путь каждое из состояний и наблюдений. Укажите, что пути охватывают 100 периодов.

simX = simsmooth(Mdl,y);

simX 100 1 вектор моделируемых состояний.

Постройте истинные значения состояния с моделируемыми состояниями.

figure;
plot(1:T,x,'-k',1:T,simX,':r','LineWidth',2);
title 'True State Values and Simulated States';
xlabel 'Period';
ylabel 'State';
legend({'True state values','Simulated state values'});

По умолчанию simulate моделирует один путь для каждого состояния в модели в пространстве состояний. Чтобы провести исследование Монте-Карло, задайте, чтобы моделировать большое количество путей с помощью аргумента пары "имя-значение" 'NumPaths'.

Функция simsmooth чертит случайные выборки от распределения сглаживавших состояний или распределения состояния, учитывая все данные и параметры. Это - определение апостериорного распределения состояния. Предположим, что скрытый процесс является AR (1). Впоследствии, уравнение состояния

xt=0.5xt-1+ut,

где ut является Гауссовым со средним значением 0 и стандартным отклонением 1.

Сгенерируйте случайную последовательность 100 наблюдений от xt, предположение, что ряд запускается в 1,5.

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

Предположим далее, что скрытый процесс подвергается аддитивной погрешности измерения. Впоследствии, уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним значением 0 и стандартным отклонением 0.75. Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний.

Используйте случайный скрытый процесс состояния (x) и уравнение наблюдения, чтобы сгенерировать наблюдения.

y = x + 0.75*randn(T,1);

Задайте четыре содействующих матрицы.

A = 0.5;
B = 1;
C = 1;
D = 0.75;

Задайте модель в пространстве состояний с помощью содействующих матриц.

Mdl = ssm(A,B,C,D);

Сглаживайте состояния модели в пространстве состояний.

xsmooth = smooth(Mdl,y);

Чертите 1 000 путей от апостериорного распределения x1.

N = 1000;
SimX = simsmooth(Mdl,y,'NumPaths',N);

SimX является 1 100 1000 массивом. Строки соответствуют периодам, столбцы соответствуют отдельным государствам, и листы соответствуют отдельным путям.

Поскольку SimX имеет одноэлементную размерность, сверните его так, чтобы ее листы соответствовали столбцам с помощью squeeze.

SimX = squeeze(SimX);

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

xbar = mean(SimX,2);
xstd = std(SimX,[],2);
ci = [xbar - 1.96*xstd, xbar + 1.96*xstd];

Постройте сглаживавшие состояния и средние значения и 95% доверительных интервалов ничьих в каждый период.

figure;
plot(xsmooth,'k','LineWidth',2);
hold on;
plot(xbar,'--r','LineWidth',2);
plot(1:T,ci(:,1),'--r',1:T,ci(:,2),'--r');
legend('Smoothed states','Simulation Mean','95% CIs');
title('Smooth States and Simulation Statistics');
xlabel('Period')

Больше о

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

Алгоритмы

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

Ссылки

[1] Дербин Дж. и С. Дж. Купмен. “Простая и Эффективная Симуляция, Более сглаженная для Анализа Временных рядов Пространства состояний”. Biometrika. Vol 89., № 3, 2002, стр 603–615.

[2] Дербин Дж. и С. Дж. Купмен. Анализ Временных рядов Методами Пространства состояний. 2-й редактор Оксфорд: Издательство Оксфордского университета, 2012.