Matlab: помощь в запуске набора инструментов для фильтра Калмана

У меня есть модель AR (1) с выборками данных $ N = 500 $, которая управляется случайной входной последовательностью x. Наблюдение y искажено шумом измерения $v$ с нулевым средним значением. Модель

y(t) = 0.195y(t-1) + x(t) + v(t) где x(t) генерируется как randn(). Я не уверен, как представить это как модель пространства состояний и как оценить параметры $a$ и состояния. Я пробовал, что представление пространства состояний будет

d(t) = \mathbf{a^T} d(t) + x(t)

y(t) = \mathbf{h^T}d(t) + sigma*v(t)

сигма = 2. Я не могу понять, как выполнять оценку параметров и состояний. Используя набор инструментов, упомянутый ниже, я проверил, чтобы уравнения KF соответствовали уравнениям в учебниках. Однако подход к оценке параметров отличается. Буду признателен за рекомендацию по процедуре реализации.

Реализация 1: я слежу за реализацией здесь: Изучение фильтра Калмана . Эта реализация не использует максимизацию ожидания для оценки параметров модели AR и определяет ковариацию шума процесса. В моем случае у меня не шум процесса, а вход $x$.

Реализация 2: Фильтр Калмана от Кевина Мерфи — еще один набор инструментов, который использует EM для оценки параметров модели AR. Теперь это сбивает с толку, поскольку обе реализации используют разные подходы к оценке параметров. Мне трудно понять правильный подход, представление модели пространства состояний и код. Буду признателен за рекомендации о том, как действовать.

Я запустил первую реализацию техники KalmanARSquareRoot, и результат совершенно другой. Выполняется экспоненциальное сглаживание скользящих средних и используется фильтр MA длиной 30. Панель инструментов работает нормально, если я запускаю демонстрационные примеры. Но при смене модели результат крайне плохой. Может быть, я делаю что-то не так. Нужно ли мне менять уравнения KF для моего временного ряда?

Во второй реализации я не могу понять, что и где менять в Equations.

В общем, если мне придется использовать эти инструменты, нужно ли мне менять уравнения ФК для каждой модели временных рядов? Как мне самому написать уравнения, если эти наборы инструментов не подходят для всех моделей временных рядов - AR, MA, ARMA?


person SKM    schedule 27.02.2015    source источник


Ответы (1)


У меня есть только небольшой опыт работы с фильтрами Калмана, так что отнеситесь к этому с недоверием.

Кажется, вам вообще не нужно менять уравнения. Работая со вторым пакетом (learn_kalman), вы можете создать матрицу A0 размером [length(d(t)) length(d(t))]. C0 то же самое, и в вашем случае начальное состояние, вероятно, имеет смысл быть матрицей идентичности (в отличие от вашего A0. Все, что вам нужно сделать, это выбрать хорошее начальное условие.

Тем не менее, я взглянул на вашу систему (построил пример), и кажется, что в вашей системе преобладает шум. KF — оптимальная оценка, но я не знаю, чтобы она отбрасывала столько шума. Это гарантирует только уменьшенную ковариацию... это означает, что если в вашей системе в основном преобладает шум, вы будете вычислять плохую модель, которая оценивает вашу систему с учетом шума!

Попробуйте построить график [d f], где d — исходные данные, а f вычисляется по регрессионной формуле f(t) = C * A * f(t-1) :

f(t) = A * f(t-1) ; y(t) = C * f(t)

То есть представьте, что шума нет, но используйте предполагаемую модель AR. Вы увидите, что он отбрасывает весь шум и хорошо «технически» моделирует систему (поскольку единственное уникальное поведение — в самом начале).

Например, если у вас есть система с A = 0,195, Q = R = 0,1, вы сойдетесь к A = 0,2207, но это все еще недостаточно хорошо. Здесь проблема в том, что ваше начальное состояние настолько низкое, что в течение нескольких шагов данных вы практически на 0 с учетом шума. Естественно, KF может сходиться к МНОЖЕСТВУ похожих модельных решений. Любой шум испортит даже самое лучшее начальное состояние.

Если вы каким-то образом увеличите разрешение своих данных (например, увеличите начальное состояние, улучшите временные интервалы), вы увидите хорошее соответствие. Например, измените начальное условие на 110, и вы обнаружите, что две кривые похожи, хотя модель все еще довольно различна.

Я не знаю ни одного подхода к моделированию ваших данных. Если дисперсия шума на самом деле равна 1, а ваша система так быстро сходится к 0, кажется, что она обречена на неэффективное моделирование, поскольку вы просто не фиксируете какое-либо уникальное поведение в наборе данных.

person Rollen    schedule 03.03.2015
comment
Спасибо за ваши усилия и время, чтобы решить проблему. У меня есть 2 вопроса, не могли бы вы поделиться своими мыслями? (1) если модель управляется шумом x(t), существует ли диапазон дисперсии шума? (2) если x(t) является псевдослучайной последовательностью, которая генерируется после квантования выходного временного ряда детерминированной нелинейной системы, то каким будет представление модели пространства состояний? - person SKM; 04.03.2015
comment
@SKM, если x (t) - это нормально распределенный шум (белый шум), то он должен быть отфильтрован KF. Я не знаю какой-либо формулы, ограничивающей дисперсию шума, однако поведение вашей модели, вероятно, должно выходить за пределы 1-го стандартного отклонения, т.е. ваше стандартное отклонение равно 1, тогда поведение модели не должно быть ограничено константой C +/- 1 Что касается (2), это зависит от распределения x(t); это ненормально, поэтому фильтрация может быть неэффективной. Какова ваша цель с этим? Вы пытаетесь смоделировать систему как функцию x (t)? - person Rollen; 04.03.2015
comment
Для (2) Когда рассматривается модель IIR (AR), тогда x(t), PRBS является сигналом возбуждения. В другом случае для модели FIR (MA) x(t) является входным сигналом, а также сигналом возбуждения, который управляет моделью. Я не знаю распределения x(t), нормальное оно или нет. Во многих статьях читал, что последовательность 0/1 моделируется как бернулли-гауссовская или даже как смесь гауссовых. - person SKM; 05.03.2015
comment
Итак, вы отфильтровываете x (t). Поскольку это не просто гаусс, я не думаю, что он полностью отфильтрован, однако он будет работать. Это не должно изменить вашу модель. Фильтры Калмана работают на основе того, что создаваемая вами модель является авторегрессионной (линейные модели). Расширенные фильтры Калмана (EKF) работают с нелинейными моделями. Идет работа над двойными расширенными фильтрами Калмана. Вы должны прочитать о EKF. - person Rollen; 05.03.2015
comment
Уравнения KF не изменятся, правда, но если я хочу оценить параметры модели AR, мне нужно использовать максимизацию ожидания и сглаживание. Для этого я следую mlg.eng.cam.ac .uk/zoubin/course04/tr-96-2.pdf .Я знаю, что прошу от вас гораздо большего, но будет облегчением, если вы сможете сказать, что я должен изменить. Кевин Мерфи также следует тем же инструкциям, но обозначения другие. - person SKM; 05.03.2015