Этот пример генерирует данные из известной модели, соответствует модели в пространстве состояний к данным, и затем симулирует ряд от подобранной модели с помощью более сглаженной симуляции.
Предположим, что скрытый процесс включает AR (2) и модель MA (1). Существует 50 периодов и MA (1), процесс выпадает из модели в течение итоговых 25 периодов. Уравнение состояния в течение первых 25 периодов
и в течение последних 25 периодов, это
где и являются Гауссовыми со средним значением 0 и стандартным отклонением 1.
Предположение, что ряд запускается в 1,5 и 1, соответственно, генерирует случайную последовательность 50 наблюдений от и.
T = 50; ARMdl = arima('AR',{0.7,-0.2},'Constant',0,'Variance',1); MAMdl = arima('MA',0.6,'Constant',0,'Variance',1); x0 = [1.5 1; 1.5 1]; rng(1); x = [simulate(ARMdl,T,'Y0',x0(:,1)),... [simulate(MAMdl,T/2,'Y0',x0(:,2));nan(T/2,1)]];
Последними 25 значениями для симулированного MA (1) данные является NaN
значения.
Предположим далее, что скрытые процессы измеряются с помощью
в течение первых 25 периодов, и
в течение последних 25 периодов, где является Гауссовым со средним значением 0 и стандартным отклонением 1.
Используйте случайный скрытый процесс состояния (x
) и уравнение наблюдения, чтобы сгенерировать наблюдения.
y = 2*sum(x','omitnan')'+randn(T,1);
Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний. Если коэффициенты являются неизвестными параметрами, модель в пространстве состояний
в течение первых 25 периодов,
в течение периода 26, и
в течение последних 24 периодов.
Запишите функцию, которая задает как параметры в params
сопоставьте с матрицами модели в пространстве состояний, значениями начального состояния и типом состояния.
% Copyright 2015 The MathWorks, Inc. function [A,B,C,D,Mean0,Cov0,StateType] = AR2MAParamMap(params,T) %AR2MAParamMap Time-variant state-space model parameter mapping function % % This function maps the vector params to the state-space matrices (A, B, % C, and D), the initial state value and the initial state variance (Mean0 % and Cov0), and the type of state (StateType). From periods 1 to T/2, the % state model is an AR(2) and an MA(1) model, and the observation model is % the sum of the two states. From periods T/2 + 1 to T, the state model is % just the AR(2) model. A1 = {[params(1) params(2) 0 0; 1 0 0 0; 0 0 0 params(3); 0 0 0 0]}; B1 = {[1 0; 0 0; 0 1; 0 1]}; C1 = {params(4)*[1 0 1 0]}; Mean0 = ones(4,1); Cov0 = 10*eye(4); StateType = [0 0 0 0]; A2 = {[params(1) params(2) 0 0; 1 0 0 0]}; B2 = {[1; 0]}; A3 = {[params(1) params(2); 1 0]}; B3 = {[1; 0]}; C3 = {params(5)*[1 0]}; A = [repmat(A1,T/2,1);A2;repmat(A3,(T-2)/2,1)]; B = [repmat(B1,T/2,1);B2;repmat(B3,(T-2)/2,1)]; C = [repmat(C1,T/2,1);repmat(C3,T/2,1)]; D = 1; end
Сохраните этот код как файл с именем AR2MAParamMap
на вашем пути MATLAB®.
Создайте модель в пространстве состояний путем передачи функционального AR2MAParamMap
как указатель на функцию к ssm
.
Mdl = ssm(@(params)AR2MAParamMap(params,T));
ssm
неявно создает модель в пространстве состояний. Обычно, вы не можете проверить неявно заданную модель в пространстве состояний.
Симулируйте один путь состояний от Mdl с помощью более сглаженной симуляции. Укажите, что функция отображения параметра к матрице имеет семь выходных аргументов. Кроме того, задайте неизвестные значения параметров.
simParams = [0.48 0.0081 0.56 1.63 1.9]; X = simsmooth(Mdl,y,'NumOut',7,'Params',simParams);
X
T
- 1 вектор ячейки из симулированных состояний. Ячейки 1 - 25 содержат 4 1 векторы, и ячейки 26 - 50 содержат 2 1 векторы.
Доступ к ячейке использующая индексация ячейки, например, ячейка доступа 5 использований X{5}
.
simStatesPeriod5 = X{5}
simStatesPeriod5 = -1.7591 -1.5404 -1.5171 -1.1417
ssm
| simulate
| estimate
| refine
| simsmooth