Этот пример показывает, как сгенерировать данные из известной модели, задать модель пространства состояний, содержащую неизвестные параметры, соответствующие процессу генерации данных, и затем подгонять модель пространства состояний к данным.
Предположим, что скрытый процесс является этим процессом 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,1.
Используйте процесс случайного скрытого состояния (x
) и уравнение наблюдения для генерации наблюдений.
y = x + 0.1*randn(T,1);
Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний. Предполагая, что коэффициенты и отклонения являются неизвестными параметрами, модель пространства состояний является
Задайте матрицу коэффициентов перехода состояний. Использование NaN
значения для неизвестных параметров.
A = NaN;
Задайте матрицу коэффициентов возмущения-нагрузки.
B = NaN;
Задайте матрицу коэффициентов чувствительности к измерениям.
C = 1;
Задайте матрицу коэффициентов инноваций и наблюдений
D = NaN;
Задайте модель пространства состояний, используя матрицы коэффициентов. Кроме того, задайте среднее начальное состояние, отклонение и распределение (которое является стационарным).
Mean0 = 0; Cov0 = 10; StateType = 0; Mdl = ssm(A,B,C,D,'Mean0',Mean0,'Cov0',Cov0,'StateType',StateType);
Mdl
является ssm
модель. Проверьте, что модель правильно задана, используя отображение в Командном окне.
Передайте наблюдения, чтобы оценить, чтобы оценить параметр. Установите начальное значение параметра равным params0
. и должен быть положительным, поэтому установите нижние ограничения с помощью 'lb'
аргумент пары "имя-значение". Задайте, что нижняя граница является -Inf
.
params0 = [0.9; 0.5; 0.1];
EstMdl = estimate(Mdl,y,params0,'lb',[-Inf; 0; 0])
Method: Maximum likelihood (fmincon) Sample size: 100 Logarithmic likelihood: -140.532 Akaike info criterion: 287.064 Bayesian info criterion: 294.879 | Coeff Std Err t Stat Prob ------------------------------------------------- c(1) | 0.45425 0.19870 2.28611 0.02225 c(2) | 0.89013 0.30359 2.93205 0.00337 c(3) | 0.38750 0.57858 0.66975 0.50302 | | Final State Std Dev t Stat Prob x(1) | 1.52989 0.35621 4.29498 0.00002
EstMdl = 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.45)x1(t-1) + (0.89)u1(t) Observation equation: y1(t) = x1(t) + (0.39)e1(t) Initial state distribution: Initial state means x1 0 Initial state covariance matrix x1 x1 10 State types x1 Stationary
EstMdl
является ssm
модель. Результаты оценки появляются в Командном окне, содержат установленные уравнения пространства состояний и содержат таблицу оценок параметров, их стандартных ошибок, t-статистики и p-значений.
Можно использовать или отображать, для примера подгоняемой матрицы переходов с помощью записи через точку.
EstMdl.A
ans = 0.4543
Передайте EstMdl
на forecast
для прогнозирования наблюдений или для simulate
провести исследование Монте-Карло.
estimate
| forecast
| simulate
| ssm