оценка

Класс: ssm

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

Синтаксис

EstMdl = estimate(Mdl,Y,params0)
EstMdl = estimate(Mdl,Y,params0,Name,Value)
[EstMdl,estParams,EstParamCov,logL,Output] = estimate(___)

Описание

пример

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, оптимизированное loglikelihood значение

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

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

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

развернуть все

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

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

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

Примечание

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

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

  • Если 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 к NaN s в матрицах модели в пространстве состояний и значениях начального состояния. Программное обеспечение ищет NaN s по столбцам, выполняя приказ A, B, C, D, Mean0, Cov0.

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Опции оценки

развернуть все

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

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

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

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

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

Пример: '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' и 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

Типы данных: логический

Предскажите порог неуверенности, заданный как пара, разделенная запятой, состоящая из '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

Типы данных: логический

Ограниченные Опции Оптимизации для 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. В моделях с предикторами, оцененные коэффициенты регрессии, перечисленные по столбцам

Оптимизированное loglikelihood значение, возвращенное как скаляр.

Недостающие наблюдения не способствуют loglikelihood.

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

Эта таблица описывает поля 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'. Укажите что нижняя граница ϕ 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.28612  0.02225 
 c(2) | 0.89013       0.30359   2.93205  0.00337 
 c(3) | 0.38751       0.57857   0.66976  0.50301 
      |                                          
      |  Final State   Std Dev   t Stat    Prob  
 x(1) | 1.52989       0.35621   4.29496  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, чтобы провести исследование Монте-Карло.

Предположим, что линейное соотношение между изменением в уровне безработицы и темпом роста номинального валового национального продукта (nGNP) представляет интерес. Предположим далее, что первым различием уровня безработицы является серия 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 серия Gaussian воздействий состояния, имеющих среднее значение 0 и стандартное отклонение 1.

  • εt серия Gaussian инноваций наблюдения, имеющих среднее значение 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.379650e+02    0.000e+00    1.292e+01    1.083e+01
    4      41    1.947149e+02    0.000e+00    1.948e+01    7.164e+00
    5      47    1.607999e+02    0.000e+00    2.140e+02    1.184e+01
    6      53    1.259953e+02    0.000e+00    1.031e+02    1.602e+00
    7      59    1.101297e+02    0.000e+00    1.262e+01    2.697e+00
    8      65    1.030879e+02    0.000e+00    6.415e+00    1.621e+00
    9      73    1.020056e+02    0.000e+00    4.557e+00    6.040e-01
   10      79    1.009546e+02    0.000e+00    4.670e+00    3.928e-01
   11      85    1.007413e+02    0.000e+00    6.945e+00    7.160e-01
   12      91    1.000076e+02    0.000e+00    4.024e+00    4.656e-01
   13      97    9.998914e+01    0.000e+00    2.918e+00    1.471e-01
   14     103    9.976835e+01    0.000e+00    1.624e+00    1.766e-01
   15     109    9.974268e+01    0.000e+00    1.003e+00    6.954e-02
   16     115    9.974101e+01    0.000e+00    8.499e-01    9.573e-03
   17     121    9.973955e+01    0.000e+00    7.458e-01    5.855e-03
   18     127    9.973635e+01    0.000e+00    5.199e-01    2.138e-02
   19     133    9.973256e+01    0.000e+00    3.820e-01    3.923e-02
   20     139    9.972894e+01    0.000e+00    2.513e-01    5.173e-02
   21     145    9.972739e+01    0.000e+00    1.374e-01    2.940e-02
   22     151    9.972661e+01    0.000e+00    1.074e-01    3.224e-02
   23     157    9.972569e+01    0.000e+00    1.000e-01    5.829e-02
   24     163    9.972466e+01    0.000e+00    6.140e-02    2.657e-02
   25     169    9.972457e+01    0.000e+00    2.240e-02    5.188e-03
   26     175    9.972456e+01    0.000e+00    2.000e-02    9.172e-04
   27     181    9.972454e+01    0.000e+00    4.032e-03    1.386e-03
   28     187    9.972454e+01    0.000e+00    3.333e-04    7.176e-04
   29     193    9.972454e+01    0.000e+00    4.360e-05    3.258e-05
   30     199    9.972454e+01    0.000e+00    4.000e-05    2.608e-06

                                            First-order      Norm of
 Iter F-count            f(x)  Feasibility   optimality         step
   31     205    9.972454e+01    0.000e+00    8.332e-06    3.798e-06
   32     211    9.972454e+01    0.000e+00    8.000e-06    8.972e-07
   33     217    9.972454e+01    0.000e+00    8.000e-06    8.427e-07
   34     225    9.972454e+01    0.000e+00    6.358e-06    2.987e-07
   35     232    9.972454e+01    0.000e+00    1.907e-06    1.564e-07
   36     238    9.972454e+01    0.000e+00    2.725e-06    9.480e-08
   37     246    9.972454e+01    0.000e+00    2.696e-06    7.583e-08
   38     255    9.972454e+01    0.000e+00    4.904e-06    2.751e-08

Local minimum possible. Constraints satisfied.

fmincon stopped because the size of the current step is less than
the value of the step size 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 = 1

Оба алгоритма имеют выходной флаг 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

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

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

Ограничения

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

Советы

Ограниченная максимизация целевой функции вероятности

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

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

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

  • Чтобы включать полное среднее значение в модель наблюдения, включайте столбец 1 s в 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] Дербин Дж. и С. Дж. Купмен. Анализ Временных рядов Методами Пространства состояний. 2-й редактор Оксфорд: Издательство Оксфордского университета, 2012.