smooth

Класс: ssm

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

Описание

пример

X = smooth(Mdl,Y) возвращает сглаженные состояния (X) выполнением обратной рекурсии полностью заданной модели пространства состояний Mdl. То есть smooth применяет стандартный фильтр Калмана, используя Mdl и наблюдаемые ответы Y.

пример

X = smooth(Mdl,Y,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар.

Если Mdl не полностью задан, тогда необходимо задать неизвестные параметры в известные скаляры с помощью Params Name,Value аргумент в виде пары.

пример

[X,logL,Output] = smooth(___) использует любой из входных параметров в предыдущих синтаксисах, чтобы дополнительно вернуть значение логарифмической правдоподобности (logL) и массив структуры output (Output) содержащие:

  • Сглаженные состояния и их предполагаемая ковариационная матрица

  • Сглаженные нарушения порядка состояния и их предполагаемая ковариационная матрица

  • Сглаженные инновации наблюдений и их предполагаемая ковариационная матрица

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

  • Скорректированный коэффициент усиления Калмана

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

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

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

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

Если Mdl не полностью задан (то есть Mdl содержит неизвестные параметры), затем задайте значения для неизвестных параметров используя 'Params' аргумент пары "имя-значение". В противном случае программа выдает ошибку. estimate возвращает полностью заданные модели пространства состояний.

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

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

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

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

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

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

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

Пример: 'Beta',beta,'Predictors',Z задает отклонение наблюдений регрессионным компонентом, состоящим из данных предиктора Z и матрицу коэффициентов beta.

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

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

Значения для неизвестных параметров в модели пространства состояний, заданные как разделенная разделенными запятой парами, состоящая из 'Params' и числовой вектор.

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

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

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

Если Mdl содержит неизвестные параметры, затем необходимо задать их значения. В противном случае программа игнорирует значение Params.

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

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

ytZtβ=Cxt+Dut.

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

Если наблюдений за период 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

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

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

Сглаженные состояния, возвращенные как матрица или вектор камеры матриц.

Если Mdl является инвариантным по времени, затем количество строк X - размер выборки и количество столбцов X количество состояний. Последняя строка X содержит последние сглаженные состояния.

Если Mdl изменяется ли время, тогда X - вектор камеры с длиной, равной размеру выборки. Камера t X содержит вектор сглаженных состояний с длиной, равной количеству состояний в периоде t. Последняя камера X содержит последние сглаженные состояния.

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

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

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

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

Output - структура T -by-1, где t элемента соответствует рекурсии сглаживания во время t.

  • Если Univariate является false (это по умолчанию), затем в следующей таблице описываются поля Output.

    ОбластьОписаниеОценка
    LogLikelihoodСкалярное значение целевой функции логарифмической правдоподобностиН/Д
    SmoothedStatesmt вектор сглаженных состояний -by-1E(xt|y1,...,yT)
    SmoothedStatesCovmt -by mt дисперсионно-ковариационная матрица сглаженных состоянийVar(xt|y1,...,yT)
    SmoothedStateDisturbkt вектор -на-1 сглаженных нарушений порядка состоянияE(ut|y1,...,yT)
    SmoothedStateDisturbCovkt -by kt дисперсионно-ковариационная матрица сглаженных нарушений порядка состоянияVar(ut|y1,...,yT)
    SmoothedObsInnovht вектор-на-1 инноваций сглаженных наблюденийE(εt|y1,...,yT)
    SmoothedObsInnovCovht -by ht дисперсионно-ковариационная матрица сглаженных инноваций наблюденийVar(εt|y1,...,yT)
    KalmanGainmt -by  nt скорректированную матрицу усиления КалманаН/Д
    DataUsedht -by-1 логический вектор, указывающий, фильтрует ли программное обеспечение с использованием определенного наблюдения. Для примера, если наблюдение i в момент t является NaN, затем элемент i в DataUsed в то время t как 0.Н/Д

  • Если Univarite является true, затем поля Output те же, что и в предыдущей таблице, но значения в KalmanGain может варьироваться.

Примеры

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

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

xt=0.5xt-1+ut,

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

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

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

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

yt=xt+εt,

где εt является Гауссовым со средним 0 и стандартным отклонением 0,05. Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний.

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

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

Задайте четыре матрицы коэффициентов.

A = 0.5;
B = 0.5;
C = 1;
D = 0.05;

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

Mdl = ssm(A,B,C,D)
Mdl = 
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.50)x1(t-1) + (0.50)u1(t)

Observation equation:
y1(t) = x1(t) + (0.05)e1(t)

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1   
 x1  0.33 

State types
     x1     
 Stationary 

Mdl является ssm модель. Проверьте, что модель правильно задана, используя отображение в Командном окне. Программное обеспечение делает вывод, что процесс состояния является стационарным. Впоследствии программное обеспечение устанавливает среднее значение начального состояния и ковариацию в среднее значение и отклонение стационарного распределения модели AR (1).

Сглаживайте состояния для периодов с 1 по 100. Постройте график значений истинного состояния и сглаженных состояний.

SmoothedX = smooth(Mdl,y);

figure
plot(1:T,x,'-k',1:T,SmoothedX,':r','LineWidth',2)
title({'State Values'})
xlabel('Period')
ylabel('State')
legend({'True state values','Smoothed state values'})

Figure contains an axes. The axes with title State Values contains 2 objects of type line. These objects represent True state values, Smoothed state values.

Предположим, что интерес представляет линейная связь между изменением уровня безработицы и номинальным темпом роста валового национального продукта (ННП). Предположим далее, что первым различием уровня безработицы является серия 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);

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

Задайте матрицы коэффициентов.

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.2]; % Chosen arbitrarily
[EstMdl,estParams] = estimate(Mdl,y,params0,'Predictors',Z,...
    'Beta0',[0.1 0.2],'lb',[-Inf,-Inf,0,-Inf,-Inf]);
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 модель, и вы можете получить доступ к ее свойствам с помощью записи через точку.

Сглаживайте состояния. EstMdl не хранит данные или коэффициенты регрессии, поэтому вы должны пройти в них с помощью аргументов пары "имя-значение" 'Predictors' и 'Beta', соответственно. Постройте график сглаженных состояний. Напомним, что первое состояние - это изменение уровня безработицы, а второе государство помогает строить первое.

SmoothedX = smooth(EstMdl,y,'Predictors',Z,'Beta',estParams(end-1:end));

figure
plot(dates(end-(T-1)+1:end),SmoothedX(:,1));
xlabel('Period')
ylabel('Change in the unemployment rate')
title('Smoothed Change in the Unemployment Rate')

Figure contains an axes. The axes with title Smoothed Change in the Unemployment Rate contains an object of type line.

Совет

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

  • Чтобы ускорить оценку для маломерных, инвариантных по времени моделей, задайте 'Univariate',true. Используя эту спецификацию, программное обеспечение последовательно обновляется, а не обновляется все сразу в процессе фильтрации.

Алгоритмы

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

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

Ссылки

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