Этот пример показывает, как сглаживать состояния известной, инвариантной по времени, модели пространства состояний.
Предположим, что латентный процесс является моделью AR (1). Уравнение состояния
где является Гауссовым со средним 0 и стандартным отклонением 0,5.
Сгенерируйте случайную серию из 100 наблюдений , принимая, что серия начинается с 1,5.
T = 100; ARMdl = arima('AR',0.5,'Constant',0,'Variance',0.5^2); x0 = 1.5; rng(1); % For reproducibility x = simulate(ARMdl,T,'Y0',x0);
Предположим далее, что скрытый процесс подвержен аддитивной ошибке измерения. Уравнение наблюдения
где является Гауссовым со средним 0 и стандартным отклонением 0,05. Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний.
Используйте процесс случайного скрытого состояния (x
) и уравнение наблюдения для генерации наблюдений.
y = x + 0.05*randn(T,1);
Задайте четыре матрицы коэффициентов.
A = 0.5; B = 0.5; C = 1; D = 0.05;
Задайте модель пространства состояний, используя матрицы коэффициентов.
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) + (0.50)u1(t) Observation equation: y1(t) = x1(t) + (0.05)e1(t) Initial state distribution: Initial state means x1 0 Initial state covariance matrix x1 x1 0.33 State types x1 Stationary
Mdl
является ssm
модель. Проверьте, что модель правильно задана, используя отображение в Командном окне. Программное обеспечение делает вывод, что процесс состояния является стационарным. Впоследствии программное обеспечение устанавливает среднее значение начального состояния и ковариацию в среднее значение и отклонение стационарного распределения модели AR (1).
Сглаживайте состояния для периодов с 1 по 100. Постройте график значений истинного состояния и сглаженных состояний.
SmoothedX = smooth(Mdl,y); figure plot(1:T,x,'-k',1:T,SmoothedX,':r','LineWidth',2) title({'State Values'}) xlabel('Period') ylabel('State') legend({'True state values','Smoothed state values'})
estimate
| filter
| smooth
| ssm