autoSarima static method

SarimaFit autoSarima(
  1. List<double> series, {
  2. int d = 1,
  3. int D = 1,
  4. required int s,
  5. int pMax = 2,
  6. int qMax = 2,
  7. int PMax = 1,
  8. int QMax = 1,
  9. bool includeMean = true,
  10. bool useBIC = false,
})

Small-grid Auto-SARIMA (AIC/BIC minimum)

Implementation

static SarimaFit autoSarima(
  List<double> series, {
    int d=1, int D=1, required int s,
    int pMax=2, int qMax=2, int PMax=1, int QMax=1,
    bool includeMean=true, bool useBIC=false,
  }
){
  SarimaFit? best;
  double bestScore = double.infinity;
  for (int p=0; p<=pMax; p++){
    for (int q=0; q<=qMax; q++){
      for (int P=0; P<=PMax; P++){
        for (int Q=0; Q<=QMax; Q++){
          if (p==0 && q==0 && P==0 && Q==0) continue;
          try {
            final fit = Sarima.fit(series, SarimaOrder(p,d,q,P,D,Q,s), includeMean: includeMean);
            final score = useBIC ? fit.bic : fit.aic;
            if (score < bestScore) { bestScore = score; best = fit; }
          } catch (_) {
            // kısa seri / başarısız optim / s uyuşmazlıkları -> geç
          }
        }
      }
    }
  }
  best ??= Sarima.fit(series, SarimaOrder(1,d,0, 0,D,0, s), includeMean: includeMean);
  return best;
}