фильтр

Класс: ssm

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

Синтаксис

X = filter(Mdl,Y)
X = filter(Mdl,Y,Name,Value)
[X,logL,Output] = filter(___)

Описание

пример

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(___) использование любой из входных параметров в предыдущих синтаксисах, чтобы дополнительно возвратить loglikelihood значение (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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

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

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

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

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

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

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

    Поле ОписаниеОценка
    LogLikelihoodСкаляр 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.

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