estimate

Класс: ssm

Оценка максимального параметра правдоподобия моделей пространства состояний

Описание

пример

EstMdl = estimate(Mdl,Y,params0) возвращает предполагаемую модель пространства состояний из подбора кривой ssm модели Mdl к данным отклика Y. params0 - вектор начальных значений для неизвестных параметров в Mdl.

пример

EstMdl = estimate(Mdl,Y,params0,Name,Value) оценивает модель пространства состояний с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Для примера можно задать, чтобы отклонить наблюдения линейной регрессией с помощью данных предиктора, контролировать, как результаты появляются в Командном окне, и указать, какой метод оценки использовать для матрицы параметра ковариации.

пример

[EstMdl,estParams,EstParamCov,logL,Output] = estimate(___) дополнительно возвращается:

  • estParams, вектор, содержащий предполагаемые параметры

  • EstParamCov, оценочную дисперсионно-ковариационную матрицу предполагаемых параметров

  • logL, оптимизированное значение логарифмической правдоподобности

  • Output, оптимизация диагностической информационной структуры

использование любого из входных параметров в предыдущих синтаксисах.

Входные параметры

расширить все

Стандартная модель пространства состояний, содержащая неизвестные параметры, заданная как ssm объект модели, возвращенный ssm.

  • Для явно созданных моделей пространства состояний программное обеспечение оценивает все NaN значения в матрицах коэффициентов (Mdl.A, Mdl.B, Mdl.C, и Mdl.D) и начальное состояние означает и ковариационная матрица (Mdl.Mean0 и Mdl.Cov0). Для получения дополнительной информации о явном и неявном создании модели смотрите ssm.

  • Для неявно созданных моделей пространства состояний вы задаете структуру модели и расположение неизвестных параметров, используя функцию отображения параметра в матрицу. Неявно создайте модель пространства состояний, чтобы оценить сложные модели, наложить параметр ограничения и оценить начальные состояния. Функция преобразования параметров может также включать дополнительные выходные аргументы.

Примечание

Mdl не хранит наблюдаемые отклики или данные предиктора. Поставляйте данные по мере необходимости, используя соответствующие входы и аргументы пары "имя-значение".

Наблюдаемые данные отклика на которые Mdl is fit, заданный как числовая матрица или вектор камеры из числовых векторов.

  • Если Mdl является инвариантным по времени относительно уравнения наблюдения, тогда Y является T -by - n матрицей. Каждая строка матрицы соответствует периоду, и каждый столбец соответствует конкретному наблюдению в модели. Поэтому T - размер выборки, а n - количество наблюдений за период. Последняя строка Y содержит последние наблюдения.

  • Если Mdl время изменяется относительно уравнения наблюдения, затем Y - вектор камеры T -by-1. Y{t} содержит nt -мерный вектор наблюдений для периода t, где t = 1,..., T. Соответствующие размерности матриц коэффициентов в Mdl.C{t} и Mdl.D{t} должна быть согласована с матрицей в Y{t} для всех периодов. Последняя камера Y содержит последние наблюдения.

Предположим, что вы создаете Mdl неявно путем определения функции отображения параметра в матрицу, и функция имеет входные параметры для наблюдаемых откликов или предикторов. Затем функция отображения устанавливает ссылку на наблюдаемые отклики и данные предиктора в MATLAB® рабочая область, которая переопределяет значение Y.

NaN элементы указывают на отсутствующие наблюдения. Для получения дополнительной информации о том, как фильтр Калмана принимает отсутствующие наблюдения, см. Алгоритмы.

Типы данных: double | cell

Начальные значения неизвестных параметров для числовой максимальной оценки правдоподобия, заданные как числовой вектор.

Элементы params0 соответствуют неизвестным параметрам в матрицах модели пространства состояний A, B, C, и D, и, опционально, начальное состояние означает Mean0 и ковариационная матрица Cov0.

  • Если вы создали Mdl явным образом (то есть путем задания матриц без функции отображения параметра в матрицу), затем программное обеспечение отображает элементы params на NaNs в матрицах модели пространства состояний и начальных значениях состояний. Программа ищет NaNs столбцово, следуя порядку A, B, C, D, Mean0, Cov0.

  • Если вы создали Mdl неявно (то есть путем задания матриц с функцией отображения параметра в матрицу), затем установите начальные значения параметров для матриц модели пространства состояний, начальных значений состояний и типов состояний в функции отображения параметра в матрицу.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'CovMethod','hessian','Display','diagnostics','Predictors',Z задает, чтобы оценить ковариацию асимптотического параметра с помощью отрицательной, инвертированной матрицы Гессия, отобразить диагностику оптимизации в Командном окне и сдвинуть наблюдения линейной регрессией, содержащей данные предиктора Z.
Опции оценки

расширить все

Начальные значения коэффициентов регрессии, заданные как разделенная разделенными запятой парами, состоящая из 'Beta0' и a d -by n числовой матрицей. d - количество переменных предиктора (см Predictors) и n количество наблюдаемых серий отклика (см Y).

По умолчанию Beta0 - обычная оценка методом наименьших квадратов Y на Predictors.

Типы данных: double

Метод асимптотической ковариационной оценки, заданный как разделенная разделенными запятой парами, состоящая из 'CovMethod' и значение в этой таблице.

ЗначениеОписание
'hessian'Отрицательная, инвертированная матрица Гессия
'opg'Векторное произведение градиентов (ОПГ)
'sandwich'Гессиан и ОПГ

Пример: 'CovMethod','sandwich'

Типы данных: char

Параметр отображения Командного окна, заданная как разделенная разделенными запятой парами, состоящая из 'Display' и одно или несколько значений в этой таблице.

ЗначениеОтображаемая информация
'diagnostics'Диагностика оптимизации
'full'Максимальные оценки параметров правдоподобия, стандартные ошибки, t статистика, итерационная информация оптимизации и диагностика оптимизации
'iter'Итерационная информация оптимизации
'off'Ничего
'params'Максимальные оценки параметров правдоподобия, стандартные ошибки и t статистика

Пример: 'Display','off' хорошо подходит для выполнения симуляции, которая оценивает многие модели.

Пример: 'Display',{'params','diagnostics'} отображает все результаты оценки и диагностику оптимизации.

Типы данных: char | cell | string

Опции оптимизации, заданные как разделенная разделенными запятой парами, состоящая из 'Options' и optimoptions контроллер оптимизации. Options заменяет опции оптимизации оптимизатора по умолчанию. Для получения дополнительной информации об изменении значений по умолчанию оптимизатора, смотрите контроллер оптимизации optimoptions, ограниченная оптимизационная функция fmincon, или без ограничений функции оптимизации fminunc в Optimization Toolbox™.

Например, чтобы изменить допуск ограничений на 1e-6, задать Options = optimoptions(@fmincon,'ConstraintTolerance',1e-6,'Algorithm','sqp'). Затем передайте Options в estimate использование 'Options',Options.

По умолчанию:

  • Для ограниченной оптимизации, estimate максимизирует целевую функцию правдоподобия используя fmincon и его опции по умолчанию, но устанавливает 'Algorithm','interior-point'.

  • Для оптимизации без ограничений, estimate максимизирует целевую функцию правдоподобия используя fminunc и его опции по умолчанию, но устанавливает 'Algorithm','quasi-newton'.

Данные предиктора для компонента регрессии в уравнении наблюдения, заданные как разделенная разделенными запятой парами, состоящая из 'Predictors' и a T -by d числовой матрицей. T - количество периодов, а d - количество переменных. Строка t соответствует наблюдаемым предикторам в периоде t (Zt) в расширенном уравнении наблюдения

ytZtβ=Cxt+Dut.

Другими словами, ряд предикторов служит дефляторами наблюдений. β является d -by n инвариантной по времени матрицей коэффициентов регрессии, которые программное обеспечение оценивает со всеми другими параметрами.

  • Для n наблюдений за период программное обеспечение регрессирует все серии предикторов на каждое наблюдение.

  • Если вы задаете Predictors, затем Mdl должно быть инвариантным по времени. В противном случае программа возвращает ошибку.

  • По умолчанию программа исключает регрессионный компонент из модели пространства состояний.

Типы данных: double

Квадратный корень фильтра, заданный как разделенная разделенными запятой парами, состоящая из 'SquareRoot' и true или false. Если true, затем estimate применяет метод квадратного корня фильтра при реализации фильтра Калмана.

Если вы подозреваете, что собственные значения отфильтрованного состояния или предсказанных ковариационных матриц наблюдения близки к нулю, задайте 'SquareRoot',true. Квадратный корневой фильтр является устойчивым к численным проблемам, возникающим из-за конечной точности вычислений, но требует больших вычислительных ресурсов.

Пример: 'SquareRoot',true

Типы данных: logical

Прогнозируемый порог неопределенности, заданный как разделенная разделенными запятой парами, состоящая из 'Tolerance' и неотрицательный скаляр.

Если прогнозируемая неопределенность для конкретного наблюдения меньше Tolerance во время числовой оценки, затем программное обеспечение удаляет неопределенность, соответствующую наблюдению, из прогнозной ковариационной матрицы перед ее инверсией.

Лучшая практика задать Tolerance на малое число, для примера, le-15, для преодоления численных препятствий во время оценки.

Пример: 'Tolerance',le-15

Типы данных: double

Одномерная обработка многомерного последовательного флага, заданная как разделенная разделенными запятой парами, состоящая из 'Univariate' и true или false. Одномерное лечение многомерного ряда также известно как sequential filtering.

Одномерное лечение может ускорить и улучшить числовую стабильность фильтра Калмана. Однако все инновации в области наблюдений должны быть некоррелированными. То есть Dt Dt 'должны быть диагональными, где Dt, t = 1,..., T, является одним из следующих:

  • Матрица D{t} в изменяющейся во времени модели пространства состояний

  • Матрица D в инвариантной по времени модели пространства состояний

Пример: 'Univariate',true

Типы данных: logical

Ограниченные опции оптимизации для fmincon

расширить все

Параметр ограничения линейного равенства трансформатора для максимизации ограниченной целевой функции правдоподобия, заданный как разделенная запятой пара, состоящий из 'Aeq' и матрицу.

Если вы задаете Aeq и beq, затем estimate максимизирует целевую функцию правдоподобия с помощью ограничения равенства Aeqθ=beq, где θ - вектор, содержащий каждый Mdl параметр.

Количество строк Aeq количество ограничений, а количество столбцов - количество параметров, которые оценивает программное обеспечение. Заказать столбцы Aeq по Mdl.A, Mdl.B, Mdl.C, Mdl.D, Mdl.Mean0, Mdl.Cov0, и коэффициента регрессии (если модель имеет единицу).

Задайте Aeq и beq вместе, в противном случае estimate возвращает ошибку.

Aeq непосредственно соответствует входной параметр Aeq из fmincon, не матрице коэффициентов перехода состояний Mdl.A.

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Параметр ограничения линейного неравенства трансформатора для максимизации ограниченной целевой функции правдоподобия, заданный как разделенная запятой пара, состоящий из 'Aineq' и матрицу.

Если вы задаете Aineq и bineq, затем estimate максимизирует целевую функцию правдоподобия с помощью ограничения неравенства Aineqθbineq, где θ - вектор, содержащий каждый Mdl параметр.

Количество строк Aineq количество ограничений, а количество столбцов - количество параметров, которые оценивает программное обеспечение. Заказать столбцы Aineq по Mdl.A, Mdl.B, Mdl.C, Mdl.D, Mdl.Mean0, Mdl.Cov0, и коэффициента регрессии (если модель имеет единицу).

Задайте Aineq и bineq вместе, в противном случае estimate возвращает ошибку.

Aineq непосредственно соответствует входной параметр A из fmincon, не матрице коэффициентов перехода состояний Mdl.A.

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Типы данных: double

Линейные ограничения равенства преобразованных параметров для максимизации целевой функции правдоподобия с ограничениями, заданные как разделенная разделенными запятой парами, состоящая из 'beq' и числовой вектор.

Если вы задаете Aeq и beq, затем estimate максимизирует целевую функцию правдоподобия с помощью ограничения равенства Aeqθ=beq, где θ - вектор, содержащий каждый Mdl параметр..

Задайте Aeq и beq вместе, в противном случае estimate возвращает ошибку.

beq непосредственно соответствует входной параметр beq из fmincon, и не связана ни с одним компонентом Mdl.

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Типы данных: double

Верхние границы линейного неравенства преобразованных параметров для максимизации целевой функции правдоподобия с ограничениями, заданные как разделенная разделенными запятой парами, состоящая из 'bineq' и числовой вектор.

Если вы задаете Aineq и bineq, затем estimate максимизирует целевую функцию правдоподобия с помощью ограничения неравенства Aineqθbineq, где θ - вектор, содержащий каждый Mdl параметр.

Задайте Aineq и bineq вместе, в противном случае estimate возвращает ошибку.

bineq непосредственно соответствует входной параметр b из fmincon, и не связана ни с одним компонентом Mdl.

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Типы данных: double

Нижние границы параметров для максимизации целевой функции правдоподобия, заданные как разделенная разделенными запятой парами, состоящая из 'lb' и числовой вектор.

Если вы задаете lb и ub, затем estimate максимизирует целевую функцию правдоподобия, удовлетворяющуюlbθub, где θ - вектор, содержащий каждый Mdl параметр.

Упорядочивайте элементы lb по Mdl.A, Mdl.B, Mdl.C, Mdl.D, Mdl.Mean0, Mdl.Cov0, и коэффициента регрессии (если модель имеет единицу).

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Типы данных: double

Верхние границы параметров для максимизации целевой функции правдоподобия, заданные как разделенная разделенными запятой парами, состоящая из 'ub' и числовой вектор.

Если вы задаете lb и ub, затем estimate максимизирует целевую функцию правдоподобия, удовлетворяющуюlbθub, где θ является вектором каждый Mdl параметр.

Упорядочивайте элементы ub по Mdl.A, Mdl.B, Mdl.C, Mdl.D, Mdl.Mean0, Mdl.Cov0, и коэффициента регрессии (если модель имеет единицу).

По умолчанию, если вы не задали никаких ограничений (линейное неравенство, линейное равенство или верхняя и нижняя границы), то estimate максимизирует целевую функцию правдоподобия, используя неограниченную максимизацию.

Типы данных: double

Выходные аргументы

расширить все

Модель пространства состояний, содержащая оценки параметров, возвращенная как ssm объект модели.

estimate использует фильтр Калмана и максимальную вероятность оценить все неизвестные параметры.

Независимо от того, как вы создали Mdl, EstMdl магазины:

  • Оценки параметров матриц коэффициентов в свойствах A, B, C, и D.

  • Начальное состояние означает и ковариационную матрицу в свойствах Mean0 и Cov0.

Для вычисленной матрицы коэффициентов регрессии смотрите estParams.

Примечание

EstMdl не хранит наблюдаемые отклики или данные предиктора. Если вы планируете фильтровать (использовать filter), прогноз (использование forecast), или сглаживать (используя smooth) использование EstMdl, тогда может потребоваться предоставить соответствующие данные.

Максимальные оценки правдоподобия параметров модели, известных оптимизатору, возвращаются в виде числового вектора. estParams имеет те же размерности, что и params0.

estimate организует оценки в estParams соответствует неизвестным параметрам в этом порядке.

  1. EstMdl.A(:), то есть оценки в EstMdl.A перечисленные столбцы

  2. EstMdl.B(:)

  3. EstMdl.C(:)

  4. EstMdl.D(:)

  5. EstMdl.Mean0

  6. EstMdl.Cov0(:)

  7. В моделях с предикторами оцененные коэффициенты регрессии перечислены столбцово

Дисперсионно-ковариационная матрица максимальных оценок правдоподобия параметров модели, известных оптимизатору, возвращенная в виде числовой матрицы.

Строки и столбцы содержат ковариации оценок параметров. Стандартные ошибки оценок параметров являются квадратным корнем из записей на основной диагонали.

estimate упорядочивает оценки в строках и столбцах EstParamCov соответствует неизвестным параметрам в этом порядке.

  1. EstMdl.A(:), то есть оценки в EstMdl.A перечисленные столбцы

  2. EstMdl.B(:)

  3. EstMdl.C(:)

  4. EstMdl.D(:)

  5. EstMdl.Mean0

  6. EstMdl.Cov0(:)

  7. В моделях с предикторами оцененные коэффициенты регрессии перечислены столбцово

Оптимизированное значение логарифмической правдоподобности, возвращаемое как скаляр.

Отсутствующие наблюдения не способствуют логарифмической правдоподобности.

Информация об оптимизации, возвращенная как массив структур.

В этой таблице описываются поля Output.

ОбластьОписание
ExitFlagФлаг выхода Оптимизации, который описывает условие выхода. Для получения дополнительной информации см. fmincon и fminunc.
OptionsОпции оптимизации, которые оптимизатор использовал для числовой оценки. Для получения дополнительной информации см. optimoptions.

Типы данных: struct

Примеры

расширить все

Сгенерируйте данные из известной модели, а затем подгоняйте модель пространства состояний к данным.

Предположим, что скрытый процесс является этим процессом AR (1)

xt=0.5xt-1+ut,

где ut является Гауссовым со средним 0 и стандартным отклонением 1.

Сгенерируйте случайную серию из 100 наблюдений xt, принимая, что серия начинается с 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);

Предположим далее, что скрытый процесс подвержен аддитивной ошибке измерения, как показано в уравнении

yt=xt+εt,

где εt является Гауссовым со средним 0 и стандартным отклонением 0,1.

Используйте процесс случайного скрытого состояния (x) и уравнение наблюдения для генерации наблюдений.

y = x + 0.1*randn(T,1);

Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний. Предполагая, что коэффициенты и отклонения являются неизвестными параметрами, модель пространства состояний является

xt=ϕxt-1+σ1utyt=xt+σ2εt.

Задайте матрицу переходов. Использование 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 модель. Проверьте, что модель правильно задана, используя отображение в Командном окне.

Передайте наблюдения в estimate для оценки параметра. Установите начальное значение параметра равным params0. σ1 и σ2 должен быть положительным, поэтому установите нижние ограничения с помощью '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 провести исследование Монте-Карло.

Предположим, что интерес представляет линейная связь между изменением уровня безработицы и номинальным темпом роста валового национального продукта (ННП). Предположим далее, что первым различием уровня безработицы является серия ARMA (1,1). Символически, и в форме пространство состояний, модель является

[x1,tx2,t]=[ϕθ00][x1,t-1x2,t-1]+[11]u1,tyt-βZt=x1,t+σεt,

где:

  • x1,t - изменение уровня безработицы в момент t.

  • x2,t является фиктивным состоянием для эффекта MA (1).

  • y1,t наблюдаемое изменение безработицы отклоняется темпами роста nGNP (Zt).

  • u1,t - Гауссов ряд нарушений порядка состояния, имеющих среднее 0 и стандартное отклонение 1.

  • εt - гауссов ряд инноваций наблюдений, имеющих среднее 0 и стандартное отклонение σ.

Загрузите набор данных Нельсона-Плоссера, который содержит, среди прочего, уровень безработицы и серию nGNP.

load Data_NelsonPlosser

Предварительно обработайте данные, взяв естественный логарифм серии nGNP и первое различие каждого. Также удалите стартовую NaN значения из каждой серии.

isNaN = any(ismissing(DataTable),2);       % Flag periods containing NaNs
gnpn = DataTable.GNPN(~isNaN);
u = DataTable.UR(~isNaN);
T = size(gnpn,1);                          % Sample size
Z = [ones(T-1,1) diff(log(gnpn))];
y = diff(u);

Этот пример переходит к использованию ряда без NaN значения. Однако, используя среду фильтра Калмана, программное обеспечение может включать серии, содержащие отсутствующие значения.

Задайте матрицу коэффициентов перехода состояний.

A = [NaN NaN; 0 0];

Задайте матрицу коэффициентов возмущения-нагрузки.

B = [1; 1];

Задайте матрицу коэффициентов чувствительности к измерениям.

C = [1 0];

Задайте матрицу коэффициентов инноваций и наблюдений.

D = NaN;

Задайте модель пространства состояний используя ssm.

Mdl = ssm(A,B,C,D);

Оцените параметры модели. Задайте регрессионный компонент и его начальное значение для оптимизации с помощью 'Predictors' и 'Beta0' Аргументы пары "имя-значение", соответственно. Отобразите оценки и всю диагностическую информацию оптимизации. Ограничьте оценку σ ко всем положительным, вещественным числам.

params0 = [0.3 0.2 0.1]; % Chosen arbitrarily
EstMdl = estimate(Mdl,y,params0,'Predictors',Z,'Display','full',...
    'Beta0',[0.1 0.2],'lb',[-Inf,-Inf,0,-Inf,-Inf]);
____________________________________________________________
   Diagnostic Information

Number of variables: 5

Functions 
Objective:                            @(c)-fML(c,Mdl,Y,Predictors,unitFlag,sqrtFlag,mexFlag,mexTvFlag,tol,ind,switchTime,precaution)
Gradient:                             finite-differencing
Hessian:                              finite-differencing (or Quasi-Newton)

Constraints
Nonlinear constraints:                do not exist
 
Number of linear inequality constraints:    0
Number of linear equality constraints:      0
Number of lower bound constraints:          1
Number of upper bound constraints:          0

Algorithm selected
   interior-point


____________________________________________________________
   End diagnostic information
                                            First-order      Norm of
 Iter F-count            f(x)  Feasibility   optimality         step
    0       6    2.579611e+02    0.000e+00    4.601e+01
    1      20    2.556482e+02    0.000e+00    3.652e+01    1.392e-01
    2      27    2.503349e+02    0.000e+00    4.319e+01    1.908e-01
    3      35    2.379654e+02    0.000e+00    1.294e+01    1.083e+01
    4      41    1.946975e+02    0.000e+00    1.947e+01    7.160e+00
    5      47    1.600478e+02    0.000e+00    2.123e+02    1.185e+01
    6      53    1.257101e+02    0.000e+00    9.100e+01    1.584e+00
    7      59    1.112365e+02    0.000e+00    1.019e+01    2.431e+00
    8      65    1.057826e+02    0.000e+00    1.322e+01    1.608e+00
    9      71    1.038437e+02    0.000e+00    8.182e+00    1.270e+00
   10      79    1.016763e+02    0.000e+00    4.046e+00    1.017e+00
   11      85    1.008654e+02    0.000e+00    3.983e+00    9.373e-01
   12      91    1.001161e+02    0.000e+00    2.640e+00    1.330e+00
   13      97    9.984376e+01    0.000e+00    1.216e+00    2.509e-01
   14     103    9.974672e+01    0.000e+00    9.291e-01    4.018e-01
   15     109    9.973448e+01    0.000e+00    7.202e-01    1.514e-01
   16     115    9.973150e+01    0.000e+00    5.665e-01    7.940e-02
   17     121    9.973097e+01    0.000e+00    5.594e-01    2.317e-03
   18     127    9.973033e+01    0.000e+00    5.217e-01    2.630e-03
   19     133    9.972771e+01    0.000e+00    3.273e-01    1.238e-02
   20     139    9.972600e+01    0.000e+00    2.392e-01    1.381e-02
   21     145    9.972538e+01    0.000e+00    1.024e-01    1.115e-02
   22     151    9.972525e+01    0.000e+00    1.000e-01    4.118e-03
   23     157    9.972458e+01    0.000e+00    2.085e-02    7.839e-03
   24     163    9.972454e+01    0.000e+00    1.739e-03    2.360e-03
   25     169    9.972454e+01    0.000e+00    2.000e-04    1.740e-04
   26     175    9.972454e+01    0.000e+00    1.049e-05    3.276e-05
   27     181    9.972454e+01    0.000e+00    2.000e-06    3.550e-07
   28     187    9.972454e+01    0.000e+00    1.401e-06    4.762e-07
   29     193    9.972454e+01    0.000e+00    1.907e-06    3.446e-07
   30     206    9.972454e+01    0.000e+00    9.082e-07    8.556e-08

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.


Method: Maximum likelihood (fmincon)
Sample size: 61
Logarithmic  likelihood:     -99.7245
Akaike   info criterion:      209.449
Bayesian info criterion:      220.003
           |      Coeff       Std Err    t Stat     Prob  
----------------------------------------------------------
 c(1)      |  -0.34098       0.29608    -1.15164  0.24948 
 c(2)      |   1.05003       0.41377     2.53771  0.01116 
 c(3)      |   0.48592       0.36790     1.32079  0.18657 
 y <- z(1) |   1.36121       0.22338     6.09358   0      
 y <- z(2) | -24.46711       1.60018   -15.29024   0      
           |                                              
           |    Final State   Std Dev     t Stat    Prob  
 x(1)      |   1.01264       0.44690     2.26592  0.02346 
 x(2)      |   0.77718       0.58917     1.31912  0.18713 

Информация об оптимизации и таблица оценок и статистики, выводимых в Командное окно. EstMdl является ssm модель, и вы можете получить доступ к ее свойствам с помощью записи через точку.

Программа реализует фильтр Калмана, используя ковариационный фильтр по умолчанию, но можно задать, чтобы использовать вместо этого фильтр с квадратным корнем. Этот пример сравнивает оценки из каждого метода, используя моделируемые данные.

Предположим, что латентный процесс является AR (1). Уравнение состояния

xt=0.5xt-1+ut,

где ut является Гауссовым со средним 0 и стандартным отклонением 0,3.

Сгенерируйте случайную серию из 100 наблюдений xt, принимая, что серия начинается с 1,5.

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',0.3^2);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

Предположим далее, что скрытый процесс подвержен аддитивной ошибке измерения. Уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним 0 и стандартным отклонением 0,1.

Используйте процесс случайного скрытого состояния (x) и уравнение наблюдения для генерации наблюдений.

y = x + 0.1*randn(T,1);

Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний. Предполагая, что коэффициенты и отклонения являются неизвестным параметром, модель пространства состояний является

xt=ϕxt-1+σ1utyt=xt+σ2εt

Задайте матрицу коэффициентов перехода состояний. Использование 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 модель.

Оцените параметры используя estimate два способа:

  • Использование стандартного, простого фильтра Калмана

  • Использование квадратного корня фильтра

В обоих случаях укажите, что выход не должен быть возвращен в Командное окно. Это хорошая практика, если вы планируете работать estimate несколько раз (например, симуляция Монте-Карло).

params0 = [10,10,10];
[~,estParamsSKF,EstParamCovSKF,logLSKF,OutputSKF] = estimate(Mdl,y,params0,...
    'Display','off');
[~,estParamsSR,EstParamCovSR,logLSR,OutputSR] = estimate(Mdl,y,params0,...
    'Squareroot',true,'Display','off');

Проверьте, что алгоритмы сошлись должным образом, распечатав свойства выходного флага OutputSKF и OutputSR.

exitFlagSKF = OutputSKF.ExitFlag
exitFlagSKF = 1
exitFlagSR = OutputSR.ExitFlag
exitFlagSR = 2

Оба алгоритма имеют выходной флаг 1, что указывает на соответствие программного обеспечения критериям сходимости.

Сравните оценки из каждого алгоритма.

fprintf('\n Parameter Estimates\n')
 Parameter Estimates
table(estParamsSKF',estParamsSR','VariableNames',...
    {'SimpleKalmanFilter','SquarerootFilter'})
ans=3×2 table
    SimpleKalmanFilter    SquarerootFilter
    __________________    ________________

          0.51057              0.51057    
          0.23436              0.23436    
         -0.17904             -0.17904    

fprintf('\nEstimated Parameter Covariance Matrix\n')
Estimated Parameter Covariance Matrix
table(EstParamCovSKF,EstParamCovSR,'VariableNames',...
    {'SimpleKalmanFilter','SquarerootFilter'})
ans=3×2 table
            SimpleKalmanFilter                      SquarerootFilter          
    ___________________________________    ___________________________________

     0.036669    -0.013302    -0.014012     0.036669    -0.013302    -0.014012
    -0.013302    0.0070187    0.0072533    -0.013302    0.0070187    0.0072533
    -0.014012    0.0072533    0.0089019    -0.014012    0.0072533    0.0089019

В этом случае результаты те же.

Если вы используете метод ковариационного фильтра по умолчанию и сталкиваетесь с числовыми задачами во время оценки, фильтрации или сглаживания, попробуйте использовать метод squareroot.

Ограничения

Если модель является временем изменения относительно наблюдаемых откликов, то программное обеспечение не поддерживает включение предикторов. Если векторы наблюдения среди различных периодов варьируются в длине, то программное обеспечение не может определить, какие коэффициенты использовать для дефляции наблюдаемых откликов.

Совет

Максимизация целевой функции правдоподобия с ограничениями

  • Можно задать любую комбинацию линейного неравенства, линейного равенства и верхних и нижних ограничений параметров.

  • Хорошая практика состоит в том, чтобы избегать ограничений равенства и неравенства во время оптимизации. Для примера, чтобы ограничить w параметра положительным, неявно задайте модель пространства состояний с помощью функции отображения параметра в матрицу. Внутри функции задайте w = exp (s) внутри функции. Затем используйте без оптимизации без ограничений для оценки s. Следовательно, s можете принять любое действительное значение, но w должно быть положительным.

Предикторы и соответствующие коэффициенты

  • Чтобы включить общее среднее значение в модель наблюдения, включите столбец 1s в Zt.

  • Чтобы принять во внимание предикторные эффекты при моделировании, вы должны отклонить наблюдения вручную. Для дефляции наблюдений используйте Wt=YtZtβ^.

  • Если регрессионная модель сложна, рассмотрите неявное определение модели пространства состояний. Для примера задайте функцию отображения параметра в матрицу с помощью следующего синтаксического шаблона.

    function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = ParamMap(params,Y,Z)
    		...
    		DeflateY = Y - exp(params(9) + params(10)*Z);
    		...
    end
    В этом примере Y - матрица наблюдений и Z - матрица предикторов. Функция возвращается DeflateY, которая является матрицей дефляционных наблюдений. Задайте Y и Z в Рабочем пространстве MATLAB раньше, а затем передайте ParamMap на ssm используя следующий синтаксический шаблон.

    Mdl = ssm(@(params)ParamMap(params,Y,Z))

    Это также полезно, если каждая серия откликов требует отдельного набора предикторов.

  • Если уравнение состояния требует предикторов, то включите предикторы в качестве дополнительных переменных состояния. Поскольку данные предиктора изменяются со временем, модель пространства состояний с предикторами, так как состояния изменяются во времени.

Дополнительные советы

  • Программное обеспечение содержит отсутствующие данные. Указание отсутствующих данных с помощью NaN значения в наблюдаемых реакциях (Y).

  • Хорошей практикой является проверка статуса сходимости стандартной программы оптимизации путем отображения Output.ExitFlag.

  • Если алгоритм оптимизации не сходится, то можно увеличить количество итераций, используя 'Options' аргумент пары "имя-значение".

  • Если алгоритм оптимизации не сходится, рассмотрите использование refine, что может помочь вам получить лучшие начальные значения параметров для оптимизации.

Алгоритмы

  • Фильтр Калмана принимает отсутствующие данные, не обновляя фильтрованные оценки состояния, соответствующие отсутствующим наблюдениям. Другими словами, предположим, что в период t отсутствует наблюдение. Затем прогноз состояния для t периода на основе предыдущих наблюдений t-1 и отфильтрованного состояния для t периода эквивалентны.

  • Для явно созданных моделей пространства состояний, estimate применяет все предикторы к каждой серии откликов. Однако каждая серия откликов имеет свой собственный набор коэффициентов регрессии.

  • Если вы не задаете ограничения оптимизации, то estimate использование fminunc для без ограничений числовой оценки. Если вы задаете любую пару ограничений оптимизации, то estimate использование fmincon для ограниченной числовой оценки. Для любого типа оптимизации, опции оптимизации, которые вы устанавливаете с помощью аргумента пары "имя-значение" Options должен соответствовать опциям алгоритма оптимизации.

  • estimate передает аргументы пары "имя-значение" Options, Aineq, bineq, Aeq, beq, lb, и ub непосредственно к оптимизатору fmincon или fminunc.

  • estimate подходит для коэффициентов регрессии наряду со всеми другими параметрами модели пространства состояний. Программа достаточно гибка, чтобы позволить применять ограничения к коэффициентам регрессии с помощью ограниченных опций оптимизации. Для получения дополнительной информации смотрите Name,Value аргументы в виде пар и fmincon.

  • Если вы задаете 'Univariate',true затем, во время алгоритма фильтрации, программное обеспечение последовательно обновляется, а не обновляется сразу. Эта практика может ускорить оценку параметра, особенно для маломерной, инвариантной по времени модели.

  • Предположим, что вы хотите создать модель пространства состояний с помощью функции отображения параметра в матрицу с этой сигнатурой

    [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = paramMap(params,Y,Z)
    и вы задаете модель с помощью анонимной функции
    Mdl = ssm(@(params)paramMap(params,Y,Z))
    Наблюдаемые ответы Y и данные предиктора Z не являются входными параметрами в анонимной функции. Если Y и Z существует в рабочем пространстве MATLAB перед созданием Mdl, затем программное обеспечение устанавливает ссылку на них. В противном случае, если вы передаете Mdl на estimateпрограмма выдает ошибку.

    Ссылка на данные, установленные анонимной функцией, переопределяет все другие соответствующие входные параметры значения estimate. Это различие особенно важно при проведении анализа окна качения. Для получения дополнительной информации смотрите Анализ окон Timeseries моделей.

Ссылки

[1] Дурбин Дж., и С. Дж. Копман. Анализ временных рядов по методам пространства состояний. 2nd ed. Oxford: Oxford University Press, 2012.

Для просмотра документации необходимо авторизоваться на сайте