在R中使用限制系数的ARIMA模型的AIC、BIC值

3
使用forecast包中的arima()函数来估计同一个AR(或MA)模型的不同指定方式会产生不同的BIC(贝叶斯信息准则)值。
为什么会发生这种情况?
考虑两个模型:
(1) AR(1) (2) AR(2),其中AR2系数被限制为零
在纸上,这两个模型是相同的。然而,它们的估计可能不同。不确定为什么它们会产生相等的系数估计、相等的对数似然值和相等的AIC值,但是不同的BIC值。
由于似然度相等且AIC值相等,而BIC值不同,因此在估计中使用的观测值数量必须不同。然而,暗示的观测值数量差异不是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个回答

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版本,因此CRAN版本将在下一个发布时更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接