0
다음 코드가 있습니다. ARMA 모델 AR (1), MA (0), AR (1) MA (2) 등의 다양한 조합을 루프하는 것만으로 매우 간단하게 보입니다.magrittr 전달 파이프를 사용하여 ARMA 모델을 사용하여 루프를 수행 할 수 없습니다.
load.or.install <- function(package.names) {
is.installed <- function(mypkg) is.element(mypkg, installed.packages()[, 1])
for (package.name in package.names) {
if (!is.installed(package.name)) {
install.packages(package.name)
}
library(package.name, character.only = TRUE, quietly = TRUE, verbose = FALSE)
}
}
load.or.install(c("tseries", "forecast", "ggplot2", "dplyr", "magrittr", "rdatamarket"))
max.p <- 8 # maximum number of AR terms
max.q <- 7 # maximum number of MA terms
#import data
ausgdp <- as.ts(dmseries("http://data.is/1jDQwpr")[, 1]) %>% log() %>% diff(difference = 1)
model.orders <- as.matrix(expand.grid(AR = 0:max.p, DIF = 0, MA = 0:max.q))
models <- list()
1:nrow(model.orders) %>% {
models[[.]] <- Arima(ausgdp, order = model.orders[.,], include.constant = T, method = "ML")
}
그러나 다음 오류 메시지가 표시됩니다.
Error in stats::arima(x = x, order = order, seasonal = seasonal, xreg = xreg, :
'order' must be a non-negative numeric vector of length 3
루프 외부에서 다음 명령을 실행하면 작동합니다. 그것의 model.orders[.,]
와 루프가 실패하면
Arima(ausgdp, order = model.orders[1,], include.constant = T, method = "ML")
는 어떤 도움을 주시면 감사하겠습니다.