Как рассчитать AIC, BIC и вероятности подобранного фильтра Калмана с использованием функции DSE в R

Я хотел бы проверить пригодность динамической линейной модели, которую я приспособил к проблемному набору данных. Я сделал это с помощью функции SS() в пакете dse в R. Есть ли способы проверить соответствие модели в R, используя вероятности и информационные тесты?

Для наглядности предположим, что моя модель - это случайная прогулка. Теоретическая форма случайного блуждания: X(t) = X(t-1) + e(t)~N(0,1) для эволюции состояния Y(t) = X(t) + w(t)~N(0,1). Код в R определяется как:

kalman.filter=dse::SS(F = matrix(1,1,1), 
              Q = matrix(1,1,1),
              H = matrix(1,1,1),
              R = matrix(1,1,1),
              z0 = matrix(0,1,1),
              P0 = matrix(0,1,1)
              )

Предположим, что фактические наблюдения были тогда:

simulate.kalman.filter=simulate(kalman.filter, start = 1, freq = 1, sampleT = 100)

Затем предположим, что мы подходим к модели под названием "тест":

test=l(kalman.filter, simulate.kalman.filter)

Как я могу проверить соответствие данных (simulate.kalman.filter) теоретической модели модели в R? Я ищу такие функции, как вероятность и байесовский критерий информации.

1 ответ

Решение

Я разобрался с ответом на вопрос.

Функция для этого называется informationTests() в том же пакете dse. Он вернет AIC, BIC и отрицательную логарифмическую вероятность подобранной модели к данным. В приведенном выше примере это делается:

informationTests(test)

Помните, что модель с более низким BIC считается лучшей. Вы также можете сравнить две модели (предположим, что у вас есть вторая модель, подогнанная к данным под названием test2), добавив вторую модель в качестве параметра:

informationTests(test, test2)

Это таблица AIC, BIC и вероятности друг против друга.

Другие вопросы по тегам