指定由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)模型,我没有明确讨论以保持简单。
如果有人可以解释为什么会发生这种情况,那就太好了。谢谢!
答案 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版本将在下一版本中更新。