Этот пример показывает, как создать и оценить модель рассеянного пространства состояний, содержащую изменяющиеся во времени параметры.
Предположим, что модель AR (2) и MA (1) содержат латентный процесс. Существует 50 периодов, и процесс MA (1) выпадает из модели на последние 25 периодов. Следовательно, уравнение состояния для первых 25 периодов является
Для последних 25 периодов уравнение состояния является
где и являются Гауссовыми со средним 0 и стандартным отклонением 1.
Сгенерируйте случайную серию из 50 наблюдений от и, принимая, что серия начинается с 1,5 и 1, соответственно.
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) отсутствуют.
Латентные процессы измеряются с помощью
за первые 25 периодов, и
за последние 25 периодов. является Гауссовым со средним 0 и стандартным отклонением 1.
Сгенерируйте наблюдения, используя процесс случайного, скрытого состояния (x
) и уравнение наблюдения.
y = 2*sum(x','omitnan')' + randn(T,1);
Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний. Если коэффициенты являются неизвестными параметрами, модель пространства состояний
Написание функции, которая задает, как параметры в params
сопоставить с матрицами модели пространства состояний, начальными значениями состояний и типом состояния.
% Copyright 2015 The MathWorks, Inc. function [A,B,C,D,Mean0,Cov0,StateType] = diffuseAR2MAParamMap(params,T) %diffuseAR2MAParamMap Time-variant diffuse state-space model parameter %mapping function % % This function maps the vector params to the state-space matrices (A, B, % C, and D) 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. The AR(2) model is diffuse. 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 = []; Cov0 = []; StateType = [2 2 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
Сохраните этот код в файле с именем diffuseAR2MAParamMap
на пути MATLAB ®.
Создайте модель пространства состояний путем передачи функции diffuseAR2MAParamMap
как указатель на функцию, чтобы dssm
.
Mdl = dssm(@(params)diffuseAR2MAParamMap(params,T));
dssm
неявно задает модель рассеянного пространства состояний. Обычно вы не можете проверить модели рассеянного пространства состояний, которые неявно созданы.
Чтобы оценить параметры, передайте наблюдаемые отклики (y
) к estimate
. Задайте положительные начальные значения для неизвестных параметров.
params0 = 0.1*ones(5,1); EstMdl = estimate(Mdl,y,params0)
Method: Maximum likelihood (fminunc) Effective Sample size: 48 Logarithmic likelihood: -110.313 Akaike info criterion: 230.626 Bayesian info criterion: 240.186 | Coeff Std Err t Stat Prob --------------------------------------------------- c(1) | 0.44041 0.27687 1.59069 0.11168 c(2) | 0.03949 0.29585 0.13349 0.89380 c(3) | 0.78364 1.49222 0.52515 0.59948 c(4) | 1.64260 0.66736 2.46134 0.01384 c(5) | 1.90409 0.49374 3.85648 0.00012 | | Final State Std Dev t Stat Prob x(1) | -0.81932 0.46706 -1.75420 0.07940 x(2) | -0.29909 0.45939 -0.65107 0.51500 EstMdl = State-space model type: <a href="matlab: doc dssm">dssm</a> State vector length: Time-varying Observation vector length: 1 State disturbance vector length: Time-varying Observation innovation vector length: 1 Sample size supported by model: 50 State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... State equations of period 1, 2, 3,..., 25: x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t) x2(t) = x1(t-1) x3(t) = (0.78)x4(t-1) + u2(t) x4(t) = u2(t) State equations of period 26: x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t) x2(t) = x1(t-1) State equations of period 27, 28, 29,..., 50: x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t) x2(t) = x1(t-1) Observation equation of period 1, 2, 3,..., 25: y1(t) = (1.64)x1(t) + (1.64)x3(t) + e1(t) Observation equation of period 26, 27, 28,..., 50: y1(t) = (1.90)x1(t) + e1(t) Initial state distribution: Initial state means x1 x2 x3 x4 0 0 0 0 Initial state covariance matrix x1 x2 x3 x4 x1 Inf 0 0 0 x2 0 Inf 0 0 x3 0 0 1.61 1 x4 0 0 1 1 State types x1 x2 x3 x4 Diffuse Diffuse Stationary Stationary
Предполагаемые параметры находятся в пределах одной стандартной ошибки от их истинных значений, но стандартные ошибки довольно высоки. Поверхности вероятностей моделей пространства состояний могут содержать локальные максимумы. Поэтому попробуйте несколько начальных значений параметров или рассмотрите использование refine
.