В этом примере показано, как сгенерировать данные из известной модели, задайте модель в пространстве состояний, содержащую неизвестные параметры, соответствующие генерирующемуся процессу данных, и затем соответствуйте модели в пространстве состояний к данным.
Предположим, что скрытый процесс является этим 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'
аргумент пары "имя-значение". Укажите что нижняя граница isinf
.
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.52990 0.35620 4.29500 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