2014-09-04 454 views
2

指定相同的AR(或MA)模型的不同的方法來通過函數arima()在包forecastR產量不同BIC(貝葉斯信息準則)值來估計。AIC,與作爲R受限係數ARIMA的BIC值

爲什麼會發生這種情況?

考慮兩個模型:

(1)AR(1)
(2)AR(2)與上AR2係數限制爲零

在紙面上,這兩個模型是相同的。但是,他們的估計可能會有所不同(?)。不確定他們爲什麼產生相等的係數估計值,等於對數似然值和相等的AIC值 - 但是不同的BIC值。

由於BIC值不同,而可能性相等且AIC值相等,所以在估計中使用的觀測數量必須在兩個模型之間不同。然而,觀測數的隱含差異不是1或2,而是更多。

這是合理的,還是一個bug?

我想知道這是什麼區別,以及如何計算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) 

這同樣適用於AR(p)和MA(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版本將在下一版本更新。