【发布时间】:2017-11-10 15:15:01
【问题描述】:
maxP <- 2
maxQ <- 2
AIC <- matrix(0,nrow=maxP,ncol=maxQ)
BIC <- matrix(0,nrow=maxP,ncol=maxQ)
HQC <- matrix(0,nrow=maxP,ncol=maxQ)
# Save all information criteria
for (p in 0:maxP){
for(q in 0:maxQ){
if (p>0) {ARLags <- 1:p}
else {ARLags <- 0}
if (q>0) {MALags <- 1:q}
else{MALags <- 0}
# Estimate the model
CPI_fit <- arma(CPI, order(ARLags, MALags, include.intercept = TRUE)
# Save the criteria in a P x Q matrix
AIC[p+1, q+1] <- CPI_fit$aic
BIC[p+1, q+1] <- CPI_fit$bic
}
}
AIC
BIC
我正在尝试创建一个自动程序来选择 ARMA 模型的模型规范,但我总是收到以下错误消息:
Error in if (N <= 0) NULL else seq(N) :
missing value where TRUE/FALSE needed
这是什么意思,我该如何预防?
【问题讨论】:
-
您能否将您的
CPI变量中的一部分包含在内以便可以复制它? -
order(ARLags, MALags, include.intercept = TRUE)返回一个长度为 1 的向量,但arma期望正式的order的长度为 2。 -
试试
CPI_fit <- arma(CPI, order = c(p,q), include.intercept = TRUE) -
你了解
order的作用吗?它是一个返回输入的 order 的函数,即对于输入c(1,3,2,5),它以升序返回输入的输入顺序:order(c(1,3,2,5)) = c(1,3,2,4)。函数tseries::arma期望形式参数order是长度为 two 的向量,其中第一个元素是 AR 部分,第二个元素是 ARMA 模型的 MA 部分。
标签: r time-series arima