diff --git a/src/library/stats/R/arima.R b/src/library/stats/R/arima.R index 55ce8a7d8b..3d260d75ef 100644 --- a/src/library/stats/R/arima.R +++ b/src/library/stats/R/arima.R @@ -291,15 +291,14 @@ arima <- function(x, order = c(0L, 0L, 0L), } } trarma <- .Call(C_ARIMA_transPars, init, arma, transform.pars) + mod <- makeARIMA(trarma[[1L]], trarma[[2L]], Delta, kappa, SSinit) # for armafn() res <- if(no.optim) list(convergence = 0, par = numeric(), value = armafn(numeric(), as.logical(transform.pars))) - else { - mod <- makeARIMA(trarma[[1L]], trarma[[2L]], Delta, kappa, SSinit) + else optim(init[mask], armafn, method = optim.method, hessian = TRUE, control = optim.control, trans = as.logical(transform.pars)) - } if(res$convergence > 0) warning(gettextf("possible convergence problem: optim gave code = %d", res$convergence), domain = NA) diff --git a/tests/reg-tests-1e.R b/tests/reg-tests-1e.R index 4015270ce6..a439436517 100644 --- a/tests/reg-tests-1e.R +++ b/tests/reg-tests-1e.R @@ -1712,7 +1712,9 @@ if(length(iLA) && nzchar(La_version())) { cat("sessionInfo - La_* checking: ") ## arima(*, seasonal = ) (m <- tryCmsg( arima(presidents, order=c(2,0,1), seasonal=c(1, 0)) )) +mlnx <- arima(lynx, order = c(0,1,0)) stopifnot(exprs = { + all.equal(1922.636, mlnx$aic, tolerance = 1e-6) # failed for days grepl("'seasonal'", m, fixed=TRUE) !englishMsgs || grepl("must be a non-negative numeric vector", m, fixed=TRUE)