2014-09-04 2 views
2

Различных способов задания модели же АР (или М), чтобы быть оценены с помощью функции arima() в пакете forecast в R урожайности различных BIC (байесовский информационный критерий) значениях.АИКА, BIC значение ARIMA с ограниченными коэффициентами в R

Почему это происходит?

Рассмотрим две модели:

(1) АР (1)
(2) АР (2) с коэффициентом на AR2 ограничивается нулевой

На бумаге две модели одинаковы. Однако их оценка может отличаться (?). Не уверены, почему они дают равные оценки коэффициентов, равные значения логарифмического правдоподобия и равные значения AIC, но разные значения BIC.

Поскольку значения BIC различаются, а вероятность равна равным, а значения AIC равны, количество наблюдений, используемых в оценке, должно быть разным между двумя моделями. Однако подразумеваемая разница в количестве наблюдений не 1 или 2, а гораздо больше.

Это оправдано, или это ошибка?

Интересно, какая разница и как рассчитывается BIC в случае (2). Я хотел бы иметь возможность воспроизводить результаты, поэтому мне нужно понять, как все работает здесь.

Ниже приводится воспроизводимый пример. Запустив его в R, посмотрите на напечатанный BIC, а также AICc, значения - они отличаются между моделями.

library(forecast) 
T=1000; seed=1; set.seed(seed); x=rnorm(T) 
model1=arima(x,order=c(1,0,0)     ,method="CSS-ML",transform.pars=FALSE) 
model2=arima(x,order=c(2,0,0),fixed=c(NA,0,NA),method="CSS-ML",transform.pars=FALSE) 
print(model1) 
print(model2) 

То же самое относится и к АР (р) и МА моделей (Q), которые я не обсуждать явно держать его просто.

Было бы здорово, если бы кто-нибудь мог объяснить, почему это происходит. Благодаря!

ответ

2

Расчет AICc и BIC выполняется в пределах функции forecast:::print.Arima, а AIC - arima(). Если вы посмотрите на код для forecast:::print.Arima вы увидите следующее:

npar <- length(x$coef) + 1 
nstar <- length(x$residuals) - x$arma[6] - x$arma[7] * x$arma[5] 
bic <- x$aic + npar * (log(nstar) - 2) 
aicc <- x$aic + 2 * npar * (nstar/(nstar - npar - 1) - 1) 

Обратите внимание, что npar не учитывает, не оцененных коэффициентов (т.е. тех, ограничивается указанными значениями). Предполагается, что все коэффициенты в x$coef были оценены. Можно было бы исправить это с помощью

npar <- length(x$coef[x$mask]) + 1 

Я установил github version of the package, поэтому версия CRAN будет обновлен в следующей версии.

Смежные вопросы