docstr: Predict horizon time-points ahead the input x in fit_eval
  :param x: ARIMA predicts the horizon steps foreward from the training data.
      So x should be None as it is not used.
  :param horizon: the number of steps forward to predict
  :param update: whether to update the original model
  :param rolling: whether to use rolling prediction
  :return: predicted result of length horizon
docstr_tok: ["Predict","horizon","time-points","ahead","the","input","x","in","fit_eval",":","param","x",":","ARIMA","predicts","the","horizon","steps","foreward","from","the","training","data",".","So","x","should","be","None","as","it","is","not","used",".",":","param","horizon",":","the","number","of","steps","forward","to","predict",":","param","update",":","whether","to","update","the","original","model",":","param","rolling",":","whether","to","use","rolling","prediction",":","return",":","predicted","result","of","length","horizon"]
code: def predict(self, x=None, horizon=24, update=False, rolling=False):
      """
      Predict horizon time-points ahead the input x in fit_eval
      :param x: ARIMA predicts the horizon steps foreward from the training data.
          So x should be None as it is not used.
      :param horizon: the number of steps forward to predict
      :param update: whether to update the original model
      :param rolling: whether to use rolling prediction
      :return: predicted result of length horizon
      """
      if x is not None:
          raise ValueError("x should be None")
      if update and not rolling:
          raise Exception(
              "We don't support updating model without rolling prediction currently"
          )
      if self.model is None:
          raise Exception(
              "Needs to call fit_eval or restore first before calling predict"
          )
  
      if not update and not rolling:
          forecasts = self.model.predict(n_periods=horizon)
      elif rolling:
          if not update:
              self.save("tmp.pkl")
  
          forecasts = []
          for step in range(horizon):
              fc = self.model.predict(n_periods=1).item()
              forecasts.append(fc)
  
              # Updates the existing model with a small number of MLE steps for rolling prediction
              self.model.update(fc)
  
          if not update:
              self.restore("tmp.pkl")
              os.remove("tmp.pkl")
  
      return forecasts
  
file_path: analytics-zoo/pyzoo/zoo/chronos/model/arima.py
imports: import os
  import pickle
  from pmdarima.arima import ARIMA
  from pmdarima.arima import ndiffs
  from pmdarima.arima import nsdiffs
  from zoo.orca.automl.metrics import Evaluator
  from zoo.orca.automl.model.abstract import BaseModel, ModelBuilder
label_desc: Use image node_id 4 for calling the ARIMAModel obj's underlying member method code with example usage: obj.predict(x, horizon, update, rolling) and returns: forecasts