filter

Класс: 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(___) использование любой из входных параметров в предыдущих синтаксисах, чтобы дополнительно возвратить значение логарифмической правдоподобности (logL) и массив структуры output (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-by-n числовая матрица. d является количеством переменных предикторов (см. Predictors) и n является количеством наблюдаемого ряда ответа (см. Y).

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

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

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

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

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

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

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

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

ytZtβ=Cxt+Dut.

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

Если существуют наблюдения 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

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

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

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

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

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

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

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

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

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

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

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

    Поле ОписаниеОценка
    LogLikelihoodСкалярное значение целевой функции логарифмической правдоподобностиНет данных
    FilteredStatesmt-by-1 вектор отфильтрованных состоянийE(xt|y1,...,yt)
    FilteredStatesCovmt-by-mt ковариационная матрица отклонения отфильтрованных состоянийVar(xt|y1,...,yt)
    ForecastedStatesmt-by-1 вектор прогнозов состоянияE(xt|y1,...,yt1)
    ForecastedStatesCovmt-by-mt ковариационная матрица отклонения прогнозов состоянияVar(xt|y1,...,yt1)
    ForecastedObsht-by-1 предсказанный вектор наблюденияE(yt|y1,...,yt1)
    ForecastedObsCovht-by-ht ковариационная матрица отклонения предсказанных наблюденийVar(yt|y1,...,tt1)
    KalmanGainmt-by-nt настроил матрицу усиления КальманаНет данных
    DataUsedht-by-1 логический вектор, указывающий, ли фильтры программного обеспечения с помощью конкретного наблюдения. Например, если наблюдением i во время t является NaN, затем элемент i в DataUsed во время t является 0.Нет данных

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

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

    n-by-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;

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

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'})

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

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

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

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

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')

Советы

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

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

Алгоритмы

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

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

Ссылки

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

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