指定要由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)模型,为了简化起见,我不会对其进行明确讨论。

如果有人可以解释为什么会发生,那将很棒。谢谢!

最佳答案

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

07-27 13:38