autoArimaSmart function

ArimaFit autoArimaSmart(
  1. List<double> series, {
  2. AutoConfig cfg = const AutoConfig(),
})

Implementation

ArimaFit autoArimaSmart(
  List<double> series, {
  AutoConfig cfg = const AutoConfig(),
}) {
  final d = ndiffs(series);
  ArimaFit? best; double bestScore=double.infinity;

  for (int p=0;p<=cfg.pMax;p++){
    for (int q=0;q<=cfg.qMax;q++){
      if (p==0 && q==0) continue;
      try {
        final fit = Arima.fit(series, ArimaOrder(p,d,q),
          includeMean: cfg.includeMean, exactMLE: cfg.exactMLE);
        if (!_arStationary(fit.ar) || !_maInvertible(fit.ma)) continue;
        final score = cfg.useBIC ? fit.bic : fit.aic;
        if (score < bestScore) { bestScore=score; best=fit; }
      } catch(_) { /* kısa veri vs. */ }
    }
  }
  best ??= Arima.fit(series, ArimaOrder(1, d, 0),
      includeMean: cfg.includeMean, exactMLE: cfg.exactMLE);
  return best;
}