Как рассчитать 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 и вероятности друг против друга.