AIC,AR中具有受限系数的ARIMA的BIC值

时间:2014-09-04 14:28:45

标签: r time-series

指定由arima()中的包forecast中的函数R估计的相同AR(或MA)模型的不同方式产生不同的BIC(贝叶斯信息标准)值。

为什么会这样?

考虑两种模式:

(1)AR(1)
(2)AR(2),AR2上的系数限制为零

在纸面上,这两个模型是相同的。但是,他们的估计可能会有所不同(?)。不确定为什么他们产生相等的系数估计,相等的对数似然值和相等的AIC值 - 但不同的BIC值。

由于BIC值不同而可能性相等且AIC值相等,因此估算中使用的观测数量必须在两个模型之间不同。但是,观察数量的隐含差异不是1或2,而是更多。

这是否合理,还是一个错误?

我想知道差异是什么以及在案例(2)中如何计算BIC。我希望能够重现结果,所以我需要了解这里的工作原理。

下面我提供一个可重复的例子。在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)模型,我没有明确讨论以保持简单。

如果有人可以解释为什么会发生这种情况,那就太好了。谢谢!

1 个答案:

答案 0 :(得分:3)

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版本将在下一版本中更新。