class_docstr: Base forecaster template class.
  
  The base forecaster specifies the methods and method signatures that all forecasters
  have to implement.
  
  Specific implementations of these methods is deferred to concrete forecasters.
class_docstr_tok: ["Base","forecaster","template","class",".","The","base","forecaster","specifies","the","methods","and","method","signatures","that","all","forecasters","have","to","implement",".","Specific","implementations","of","these","methods","is","deferred","to","concrete","forecasters","."]
docstr: Compute/return prediction interval forecasts.
  
  If coverage is iterable, multiple intervals will be calculated.
  
  State required:
      Requires state to be "fitted".
  
  Accesses in self:
      Fitted model attributes ending in "_".
      self.cutoff, self._is_fitted
  
  Writes to self:
      Stores fh to self.fh if fh is passed and has not been passed previously.
  
  Parameters
  ----------
  fh : int, list, np.array or ForecastingHorizon (not optional)
      The forecasting horizon encoding the time stamps to forecast at.
      if has not been passed in fit, must be passed, not optional
  X : time series in sktime compatible format, optional (default=None)
          Exogeneous time series to fit to
      Should be of same scitype (Series, Panel, or Hierarchical) as y in fit
      if self.get_tag("X-y-must-have-same-index"), must contain fh.index
  coverage : float or list of float of unique values, optional (default=0.90)
     nominal coverage(s) of predictive interval(s)
  
  Returns
  -------
  pred_int : pd.DataFrame
      Column has multi-index: first level is variable name from y in fit,
          second level coverage fractions for which intervals were computed.
              in the same order as in input `coverage`.
          Third level is string "lower" or "upper", for lower/upper interval end.
      Row index is fh, with additional (upper) levels equal to instance levels,
          from y seen in fit, if y seen in fit was Panel or Hierarchical.
      Entries are forecasts of lower/upper interval end,
          for var in col index, at nominal coverage in second col index,
          lower/upper depending on third col index, for the row index.
          Upper/lower interval end forecasts are equivalent to
          quantile forecasts at alpha = 0.5 - c/2, 0.5 + c/2 for c in coverage.
docstr_tok: ["Compute\/return","prediction","interval","forecasts",".","If","coverage","is","iterable",",","multiple","intervals","will","be","calculated",".","State","required",":","Requires","state","to","be","``","fitted","''",".","Accesses","in","self",":","Fitted","model","attributes","ending","in","``","_","''",".","self.cutoff",",","self._is_fitted","Writes","to","self",":","Stores","fh","to","self.fh","if","fh","is","passed","and","has","not","been","passed","previously",".","Parameters","--","--","--","--","--","fh",":","int",",","list",",","np.array","or","ForecastingHorizon","(","not","optional",")","The","forecasting","horizon","encoding","the","time","stamps","to","forecast","at",".","if","has","not","been","passed","in","fit",",","must","be","passed",",","not","optional","X",":","time","series","in","sktime","compatible","format",",","optional","(","default=None",")","Exogeneous","time","series","to","fit","to","Should","be","of","same","scitype","(","Series",",","Panel",",","or","Hierarchical",")","as","y","in","fit","if","self.get_tag","(","``","X-y-must-have-same-index","''",")",",","must","contain","fh.index","coverage",":","float","or","list","of","float","of","unique","values",",","optional","(","default=0.90",")","nominal","coverage","(","s",")","of","predictive","interval","(","s",")","Returns","--","--","--","-","pred_int",":","pd.DataFrame","Column","has","multi-index",":","first","level","is","variable","name","from","y","in","fit",",","second","level","coverage","fractions","for","which","intervals","were","computed",".","in","the","same","order","as","in","input","`","coverage","`",".","Third","level","is","string","``","lower","''","or","``","upper","''",",","for","lower\/upper","interval","end",".","Row","index","is","fh",",","with","additional","(","upper",")","levels","equal","to","instance","levels",",","from","y","seen","in","fit",",","if","y","seen","in","fit","was","Panel","or","Hierarchical",".","Entries","are","forecasts","of","lower\/upper","interval","end",",","for","var","in","col","index",",","at","nominal","coverage","in","second","col","index",",","lower\/upper","depending","on","third","col","index",",","for","the","row","index",".","Upper\/lower","interval","end","forecasts","are","equivalent","to","quantile","forecasts","at","alpha","=","0.5","-","c\/2",",","0.5","+","c\/2","for","c","in","coverage","."]
code: def predict_interval(self, fh=None, X=None, coverage=0.90):
      """Compute/return prediction interval forecasts.
  
      If coverage is iterable, multiple intervals will be calculated.
  
      State required:
          Requires state to be "fitted".
  
      Accesses in self:
          Fitted model attributes ending in "_".
          self.cutoff, self._is_fitted
  
      Writes to self:
          Stores fh to self.fh if fh is passed and has not been passed previously.
  
      Parameters
      ----------
      fh : int, list, np.array or ForecastingHorizon (not optional)
          The forecasting horizon encoding the time stamps to forecast at.
          if has not been passed in fit, must be passed, not optional
      X : time series in sktime compatible format, optional (default=None)
              Exogeneous time series to fit to
          Should be of same scitype (Series, Panel, or Hierarchical) as y in fit
          if self.get_tag("X-y-must-have-same-index"), must contain fh.index
      coverage : float or list of float of unique values, optional (default=0.90)
         nominal coverage(s) of predictive interval(s)
  
      Returns
      -------
      pred_int : pd.DataFrame
          Column has multi-index: first level is variable name from y in fit,
              second level coverage fractions for which intervals were computed.
                  in the same order as in input `coverage`.
              Third level is string "lower" or "upper", for lower/upper interval end.
          Row index is fh, with additional (upper) levels equal to instance levels,
              from y seen in fit, if y seen in fit was Panel or Hierarchical.
          Entries are forecasts of lower/upper interval end,
              for var in col index, at nominal coverage in second col index,
              lower/upper depending on third col index, for the row index.
              Upper/lower interval end forecasts are equivalent to
              quantile forecasts at alpha = 0.5 - c/2, 0.5 + c/2 for c in coverage.
      """
      if not self.get_tag("capability:pred_int"):
          raise NotImplementedError(
              f"{self.__class__.__name__} does not have the capability to return "
              "prediction intervals. If you "
              "think this estimator should have the capability, please open "
              "an issue on sktime."
          )
      self.check_is_fitted()
  
      # input checks and conversions
  
      # check fh and coerce to ForecastingHorizon
      fh = self._check_fh(fh)
      # check alpha and coerce to list
      coverage = check_alpha(coverage, name="coverage")
  
      # check and convert X
      X_inner = self._check_X(X=X)
  
      # we call the ordinary _predict_interval if no looping/vectorization needed
      if not self._is_vectorized:
          pred_int = self._predict_interval(
              fh=fh, X=X_inner, coverage=coverage
          )
      else:
          # otherwise we call the vectorized version of predict_interval
          pred_int = self._vectorize(
              "predict_interval",
              fh=fh,
              X=X_inner,
              coverage=coverage,
          )
  
      return pred_int
  
imports: from copy import deepcopy
  from itertools import product
  import numpy
  import pandas
  from sktime.base import BaseEstimator
  from sktime.datatypes import VectorizedDF, check_is_scitype, convert_to, get_cutoff, mtype_to_scitype, scitype_to_mtype, update_data
  from sktime.forecasting.base._fh import ForecastingHorizon
  from sktime.utils.datetime import _shift
  from sktime.utils.validation._dependencies import _check_estimator_deps
  from sktime.utils.validation.forecasting import check_alpha, check_cv, check_fh, check_X
  from sktime.utils.validation.series import check_equal_time_index
  from sktime.utils.warnings import warn
label_desc: Use image node_id 11 for calling the BaseForecaster obj's underlying member method code with example usage: obj.predict_interval(fh, X, coverage) and returns: pred_int