simsmooth

Класс: ssm

Симуляция модели пространства состояний более гладкая

Описание

пример

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

пример

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

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

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

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

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

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

  • Если 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 - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

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

  • Если вы создали Mdl явным образом (то есть путем задания матриц без функции отображения параметра в матрицу), затем программное обеспечение отображает элементы Params на NaNs в матрицах модели пространства состояний и начальных значениях состояний. Программа ищет NaNs столбцово по порядку 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'});

Figure contains an axes. The axes with title True State Values and Simulated States contains 2 objects of type line. These objects represent True state values, Simulated state values.

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

The 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);

Нарисуйте 1000 путей из апостериорного распределения x1.

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

SimX является 100-by- 1-by- 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')

Figure contains an axes. The axes with title Smooth States and Simulation Statistics contains 4 objects of type line. These objects represent Smoothed states, Simulation Mean, 95% CIs.

Подробнее о

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

Алгоритмы

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

Ссылки

[1] Дурбин Дж., и С. Дж. Копман. «Простое и эффективное сглаживание симуляции для анализа временных рядов в пространстве состояний». Биометрика. Том 89., № 3, 2002, с. 603-615.

[2] Дурбин Дж., и С. Дж. Копман. Анализ временных рядов по методам пространства состояний. 2nd ed. Oxford: Oxford University Press, 2012.

Для просмотра документации необходимо авторизоваться на сайте