class_docstr: Wrapper for ``pmdarima.arima.AutoARIMA``.
  It currently does not handle the regressor issue when there is
  gap between train and predict periods.
  
  Parameters
  ----------
  score_func : callable
      see ``BaseForecastEstimator``.
  coverage : float between [0.0, 1.0]
      see ``BaseForecastEstimator``.
  null_model_params : dict with arguments to define DummyRegressor null model, optional, default=None
      see ``BaseForecastEstimator``.
  regressor_cols: `list` [`str`], optional, default None
      A list of regressor columns used during training and prediction.
      If None, no regressor columns are used.
  
  See ``AutoArima`` documentation for rest of the parameter descriptions:
  
          * https://alkaline-ml.com/pmdarima/modules/generated/pmdarima.arima.AutoARIMA.html#pmdarima.arima.AutoARIMA
  
  Attributes
  ----------
  model : ``AutoArima`` object
      Auto arima model object
  fit_df : `pandas.DataFrame` or None
      The training data used to fit the model.
  forecast : `pandas.DataFrame`
      Output of the predict method of ``AutoArima``.
class_docstr_tok: ["Wrapper","for","``","pmdarima.arima.AutoARIMA","``",".","It","currently","does","not","handle","the","regressor","issue","when","there","is","gap","between","train","and","predict","periods",".","Parameters","--","--","--","--","--","score_func",":","callable","see","``","BaseForecastEstimator","``",".","coverage",":","float","between","[","0.0",",","1.0","]","see","``","BaseForecastEstimator","``",".","null_model_params",":","dict","with","arguments","to","define","DummyRegressor","null","model",",","optional",",","default=None","see","``","BaseForecastEstimator","``",".","regressor_cols",":","`","list","`","[","`","str","`","]",",","optional",",","default","None","A","list","of","regressor","columns","used","during","training","and","prediction",".","If","None",",","no","regressor","columns","are","used",".","See","``","AutoArima","``","documentation","for","rest","of","the","parameter","descriptions",":","*","https",":","\/\/alkaline-ml.com\/pmdarima\/modules\/generated\/pmdarima.arima.AutoARIMA.html","#","pmdarima.arima.AutoARIMA","Attributes","--","--","--","--","--","model",":","``","AutoArima","``","object","Auto","arima","model","object","fit_df",":","`","pandas.DataFrame","`","or","None","The","training","data","used","to","fit","the","model",".","forecast",":","`","pandas.DataFrame","`","Output","of","the","predict","method","of","``","AutoArima","``","."]
docstr: Fits ``ARIMA`` forecast model.
  
  Parameters
  ----------
  X : `pandas.DataFrame`
      Input timeseries, with timestamp column,
      value column, and any additional regressors.
      The value column is the response, included in
      X to allow transformation by `sklearn.pipeline.Pipeline`
  y : ignored
      The original timeseries values, ignored.
      (The y for fitting is included in ``X``.)
  time_col : `str`
      Time column name in ``X``
  value_col : `str`
      Value column name in ``X``
  fit_params : `dict`
      additional parameters for null model
  Returns
  -------
  self : self
      Fitted model is stored in ``self.model``.
docstr_tok: ["Fits","``","ARIMA","``","forecast","model",".","Parameters","--","--","--","--","--","X",":","`","pandas.DataFrame","`","Input","timeseries",",","with","timestamp","column",",","value","column",",","and","any","additional","regressors",".","The","value","column","is","the","response",",","included","in","X","to","allow","transformation","by","`","sklearn.pipeline.Pipeline","`","y",":","ignored","The","original","timeseries","values",",","ignored",".","(","The","y","for","fitting","is","included","in","``","X","``",".",")","time_col",":","`","str","`","Time","column","name","in","``","X","``","value_col",":","`","str","`","Value","column","name","in","``","X","``","fit_params",":","`","dict","`","additional","parameters","for","null","model","Returns","--","--","--","-","self",":","self","Fitted","model","is","stored","in","``","self.model","``","."]
code: def fit(
      self,
      X,
      y=None,
      time_col=TIME_COL,
      value_col=VALUE_COL,
      **fit_params,
  ):
      """Fits ``ARIMA`` forecast model.
  
      Parameters
      ----------
      X : `pandas.DataFrame`
          Input timeseries, with timestamp column,
          value column, and any additional regressors.
          The value column is the response, included in
          X to allow transformation by `sklearn.pipeline.Pipeline`
      y : ignored
          The original timeseries values, ignored.
          (The y for fitting is included in ``X``.)
      time_col : `str`
          Time column name in ``X``
      value_col : `str`
          Value column name in ``X``
      fit_params : `dict`
          additional parameters for null model
      Returns
      -------
      self : self
          Fitted model is stored in ``self.model``.
      """
      X = X.sort_values(by=time_col)
      # fits null model
      super().fit(
          X, y=y, time_col=time_col, value_col=value_col, **fit_params
      )
  
      self.fit_df = X
      # fits AutoArima model
      self.model = AutoARIMA(
          start_p=self.start_p,
          d=self.d,
          start_q=self.start_q,
          max_p=self.max_p,
          max_d=self.max_d,
          max_q=self.max_q,
          start_P=self.start_P,
          D=self.D,
          start_Q=self.start_Q,
          max_P=self.max_P,
          max_D=self.max_D,
          max_Q=self.max_Q,
          max_order=self.max_order,
          m=self.m,
          seasonal=self.seasonal,
          stationary=self.stationary,
          information_criterion=self.information_criterion,
          alpha=self.alpha,
          test=self.test,
          seasonal_test=self.seasonal_test,
          stepwise=self.stepwise,
          n_jobs=self.n_jobs,
          start_params=self.start_params,
          trend=self.trend,
          method=self.method,
          maxiter=self.maxiter,
          offset_test_args=self.offset_test_args,
          seasonal_test_args=self.seasonal_test_args,
          suppress_warnings=self.suppress_warnings,
          error_action=self.error_action,
          trace=self.trace,
          random=self.random,
          random_state=self.random_state,
          n_fits=self.n_fits,
          out_of_sample_size=self.out_of_sample_size,
          scoring=self.scoring,
          scoring_args=self.scoring_args,
          with_intercept=self.with_intercept,
          return_conf_int=self.return_conf_int,
          dynamic=self.dynamic,
          regressor_cols=self.regressor_cols,
      )
  
      # fits auto-arima
      if self.regressor_cols is None:
          reg_df = None
      else:
          reg_df = X[self.regressor_cols]
      self.model.fit(y=X[[value_col]], X=reg_df)
  
      return self
  
imports: from typing import Dict
  from typing import List
  from typing import Optional
  from typing import Union
  import numpy
  import pandas
  from pmdarima.arima import AutoARIMA
  from sklearn.metrics import mean_squared_error
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.time_properties import infer_freq
  from greykite.sklearn.estimator.base_forecast_estimator import BaseForecastEstimator
label_desc: Use image node_id 2 for calling the AutoArimaEstimator obj's underlying member method code with example usage: obj.fit(X, y, time_col, value_col) and returns: self