совершенствовать

Класс: ssm

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

Синтаксис

refine(Mdl,Y,params0)
refine(Mdl,Y,params0,Name,Value)
Output = refine(___)

Описание

пример

refine(Mdl,Y,params0) находит, что набор начальных значений параметров использует при подборе кривой модели в пространстве состояний Mdl к данным об ответе Y, использовании грубого набора начальных значений параметров params0. Программное обеспечение использует несколько стандартных программ и отображает получившийся loglikelihood и начальные значения параметров для каждой стандартной программы.

пример

refine(Mdl,Y,params0,Name,Value) результаты отображений стандартных программ с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value. Например, можно включать компонент линейной регрессии, состоявший из предикторов и начального значения для коэффициентов.

пример

Output = refine(___) возвращает массив структур (Output), содержащий вектор усовершенствованных, начальных значений параметров, loglikelihood соответствие начальные значения параметров и метод, программное обеспечение раньше получало значения. Можно комбинировать с любым синтаксом из перечисленных выше.

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

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

Стандартная модель в пространстве состояний, содержащая неизвестные параметры, заданные как объект модели 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.

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

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

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

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

ytZtβ=Cxt+Dut.

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

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

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

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

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

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

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

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

Эта таблица описывает поля Output.

Поле Описание
Description

Алгоритм улучшения.

Каждый элемент Output соответствует одному из этих алгоритмов:

'Loose bound interior point'
'Nelder-Mead algorithm'
'Quasi-Newton'
'Starting value perturbation'
'Starting value shrinkage'

LoglikelihoodLoglikelihood, соответствующий начальным значениям параметров.
ParametersВектор усовершенствованных начальных значений параметров. Порядок параметров совпадает с порядком в params0. Если вы передаете эти начальные значения estimate, то результаты оценки могут улучшиться.

Примеры

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

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

xt=xt-1+ut,

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

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

T = 100;
rng(1); % For reproducibility 
u = randn(T,1);
x = cumsum([1.5;u]);
x = x(2:end);

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

yt=xt+εt,

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

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

y = x + randn(T,1);

Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний. Примите, что состояние является стационарным AR (1) процесс. Затем модель в пространстве состояний, чтобы оценить

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

Задайте содействующие матрицы. Используйте значения NaN для неизвестных параметров.

A = NaN;
B = NaN;
C = 1;
D = NaN;

Задайте модель в пространстве состояний с помощью содействующих матриц. Укажите, что распределение начального состояния является стационарным использованием аргумента пары "имя-значение" StateType.

StateType = 0;
Mdl = ssm(A,B,C,D,'StateType',StateType);

Mdl является моделью ssm. Программное обеспечение устанавливает значения для среднего значения начального состояния и отклонения. Проверьте, что модель задана правильно с помощью отображения в Командном окне.

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

params0 = [-1e7 1e-6 2000];
EstMdl = estimate(Mdl,y,params0,'lb',[-Inf,0,0]);
Warning: Covariance matrix of estimators cannot be computed precisely due to inversion difficulty. Check parameter identifiability. Also try different starting values and other options to compute the covariance matrix.
Method: Maximum likelihood (fmincon)
Sample size: 100
Logarithmic  likelihood:     -2464.23
Akaike   info criterion:      4934.46
Bayesian info criterion:      4942.27
      |      Coeff           Std Err       t Stat     Prob  
------------------------------------------------------------
 c(1) |   -9.99977e+06      9.99977e+05  -10.00000   0      
 c(2) |    1.23086e+05      1.91567e+13    0.00000  1.00000 
 c(3) | 2006.86501          3.12341e+11    0.00000  1.00000 
      |                                                     
      |     Final State      Std Dev        t Stat    Prob  
 x(1) |   -3.37649       1999.42392       -0.00169  0.99865 

estimate не удалось сходиться, и таким образом, результатами является нежелательный.

Совершенствуйте params0 с помощью refine.

Output = refine(Mdl,y,params0);
logL = cell2mat({Output.LogLikelihood})';
[~,maxLogLIndx] = max(logL)
maxLogLIndx = 2
refinedParams0 = Output(maxLogLIndx).Parameters
refinedParams0 = 1×3

    0.9705   -0.8934    0.9330

Description = Output(maxLogLIndx).Description
Description = 
'Nelder-Mead simplex'

Алгоритмом, который приводит к самому высокому loglikelihood значению, является Loose bound interior point, который является третьим struct в массиве структур Output.

Оцените Mdl с помощью refinedParams0, который является вектором усовершенствованных начальных значений параметров.

EstMdl = estimate(Mdl,y,refinedParams0,'lb',[-Inf,0,0]);
Method: Maximum likelihood (fmincon)
Sample size: 100
Logarithmic  likelihood:     -181.379
Akaike   info criterion:      368.758
Bayesian info criterion:      376.574
      |     Coeff       Std Err   t Stat     Prob  
---------------------------------------------------
 c(1) |  0.97050       0.02863   33.90367   0      
 c(2) |  0.89343       0.18521    4.82401  0.00000 
 c(3) |  0.93303       0.15176    6.14806   0      
      |                                            
      |   Final State   Std Dev    t Stat    Prob  
 x(1) | -3.93007       0.72066   -5.45343   0      

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

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

где:

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

  • наблюдаемый уровень безработицы, выкачиваемый журналом nGNP ().

  • серия Gaussian воздействий состояния, имеющих среднее значение 0 и неизвестное стандартное отклонение.

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

load Data_NelsonPlosser

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

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

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

Задайте содействующие матрицы.

A = NaN;
B = NaN;
C = 1;

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

Mdl = ssm(A,B,C);

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

params0 = [150 1000]; % Initial values chosen arbitrarily
Beta0 = [1 -100];
Output = refine(Mdl,y,params0,'Predictors',Z,'Beta0',Beta0);

Output является массивом структур 1 на 5, содержащим рекомендуемые начальные значения параметров.

Выберите начальные значения параметров, соответствующие самому большому loglikelihood.

logL = cell2mat({Output.LogLikelihood})';
[~,maxLogLIndx] = max(logL)
refinedParams0 = Output(maxLogLIndx).Parameters
Description = Output(maxLogLIndx).Description
maxLogLIndx =

     2


refinedParams0 =

    0.0000   -1.3441    1.3477  -24.4336


Description =

    'Nelder-Mead simplex'

Оцените Mdl с помощью усовершенствованных начальных значений параметров refinedParams0.

EstMdl = estimate(Mdl,y,refinedParams0(1:(end - 2)),'Predictors',Z,...
    'Beta0',refinedParams0((end - 1):end));
Method: Maximum likelihood (fminunc)
Sample size: 61
Logarithmic  likelihood:     -103.321
Akaike   info criterion:      214.642
Bayesian info criterion:      223.085
           |      Coeff       Std Err    t Stat     Prob  
----------------------------------------------------------
 c(1)      |   0.20499       0.12217     1.67793  0.09336 
 c(2)      |  -1.31586       0.08283   -15.88649   0      
 y <- z(1) |   1.38082       0.23315     5.92241   0      
 y <- z(2) | -24.87986       1.76909   -14.06365   0      
           |                                              
           |    Final State   Std Dev     t Stat    Prob  
 x(1)      |   1.19607        0           Inf      0      

estimate возвращает разумные оценки параметра и их соответствующие стандартные погрешности.

Советы

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

  • Усовершенствованные начальные значения параметров, возвращенные refine, могут казаться подобными друг другу и params0. Выберите набор, приводящий к оценкам, которые имеют экономический смысл и соответствуют относительно большим loglikelihood значениям.

  • Если попытка улучшения перестала работать, то ошибки отображений программного обеспечения и устанавливают соответствующий loglikelihood на -Inf. Это также устанавливает свои начальные значения параметров на [].

Алгоритмы

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