autoArimaSmart function
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;
}