exponenta event banner

фильтр

Класс: ssm

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

Описание

пример

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

пример

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

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

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

  • Отфильтрованные и прогнозируемые состояния

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

  • Стоимость средств к существованию

  • Прогнозируемые наблюдения и его оценочная ковариационная матрица

  • Скорректированный прирост Калмана

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

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

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

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

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

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

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

  • Если 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' и цифровую матрицу d-на-n. d - число переменных предиктора (см. Predictors) и n - количество наблюдаемых рядов ответов (см. Y).

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

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

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

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

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

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

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

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

yt Ztβ = 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. Одномерная обработка многомерного ряда также известна как последовательная фильтрация.

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

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

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

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

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

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

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

Отфильтрованные состояния, возвращаемые в виде числовой матрицы или вектора ячейки числовых векторов.

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

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

Значение функции Loglikelizence, возвращаемое как скаляр.

Отсутствующие наблюдения не влияют на средства к существованию.

Фильтрация результатов по периодам, возвращаемых в виде массива структуры.

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

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

    ОбластьОписаниеОценка
    LogLikelihoodЗначение целевой функции скалярного логарифмированияН/Д
    FilteredStatesвектор отфильтрованных состояний mt-by-1E (xt 'y1,..., yt)
    FilteredStatesCovматрица дисперсии-ковариации mt-by-mt отфильтрованных состоянийВар (xt 'y1,..., yt)
    ForecastedStatesвектор прогнозов состояния mt-by-1E (xt 'y1,..., yt − 1)
    ForecastedStatesCovматрица дисперсии-ковариации mt-by-mt прогнозов состоянияВар (xt 'y1,..., yt − 1)
    ForecastedObsпредсказанный вектор наблюдения ht-by-1E (yt 'y1,..., yt − 1)
    ForecastedObsCovматрица дисперсии и ковариации прогнозируемых наблюденийВар (yt 'y1,..., tt − 1)
    KalmanGainmt-by-nt  скорректированная матрица усиления КалманаН/Д
    DataUsedлогический вектор ht-by-1, указывающий, фильтрует ли программное обеспечение с использованием конкретного наблюдения. Например, если наблюдение i в момент времени t является NaN, затем элемент i в DataUsed в момент времени t = 0.Н/Д

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

    ОбластьИзменения
    ForecastedObsТе же размеры, что и если Univariate = 0, но только первые элементы равны
    ForecastedObsCov

    n-на-1 вектор прогнозируемых отклонений наблюдений.

    Первый элемент этого вектора эквивалентен ForecastedObsCov(1,1) когда Univariate является false. Остальные элементы не обязательно эквивалентны их соответствующим значениям в ForecastObsCov когда Univariate.

    KalmanGainТе же размеры, что и если Univariate является false, хотя KalmanGain могут иметь различные записи.

Примеры

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

Предположим, что скрытый процесс является 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,75. В совокупности скрытый процесс и уравнения наблюдения составляют модель состояния-пространства.

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

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

Укажите четыре матрицы коэффициентов.

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

Укажите модель state-space с помощью матриц коэффициентов.

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) + u1(t)

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

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1   
 x1  1.33 

State types
     x1     
 Stationary 

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

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

filteredX = filter(Mdl,y);

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

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

Истинные значения и оценки фильтра примерно одинаковы.

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

[x1, tx2, t] = [startstart00] [x1, t-1x2, t-1] + [11] u1, tyt-βZt = x1, 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];
[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'соответственно. Постройте график расчетных отфильтрованных состояний. Напомним, что первое государство - это изменение уровня безработицы, а второе государство помогает строить первое.

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

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

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

Совет

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

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

Алгоритмы

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

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

Ссылки

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