Этот пример показывает, как моделировать состояния и наблюдения за известной, независимой от времени моделью в пространстве состояний.
Предположим, что скрытый процесс является моделью AR (1). Впоследствии, уравнение состояния
где является Гауссовым со средним значением 0 и стандартным отклонением 1.
Сгенерируйте случайную последовательность 100 наблюдений от , предположение, что ряд запускается в 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);
Предположим далее, что скрытый процесс подвергается аддитивной погрешности измерения. Впоследствии, уравнение наблюдения
где является Гауссовым со средним значением 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 периодов.
[simY,simX] = simulate(Mdl,100);
simY
100 1 вектор моделируемых ответов. simX
100 1 вектор моделируемых состояний.
Постройте истинные значения состояния с моделируемыми состояниями. Кроме того, постройте наблюдаемые ответы с моделируемыми ответами.
figure subplot(2,1,1) 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'}) subplot(2,1,2) plot(1:T,y,'-k',1:T,simY,':r','LineWidth',2) title({'Observed Responses and Simulated responses'}) xlabel('Period') ylabel('Response') legend({'Observed responses','Simulated responses'})
По умолчанию simulate
моделирует один путь для каждого состояния и наблюдения в модели в пространстве состояний. Чтобы провести исследование Монте-Карло, задайте, чтобы моделировать большое количество путей.