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 fully probabilistic forecasts.
  
  Note: currently only implemented for Series (non-panel, non-hierarchical) y.
  
  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
  marginal : bool, optional (default=True)
      whether returned distribution is marginal by time index
  
  Returns
  -------
  pred_dist : sktime BaseDistribution
      predictive distribution
      if marginal=True, will be marginal distribution by time point
      if marginal=False and implemented by method, will be joint
docstr_tok: ["Compute\/return","fully","probabilistic","forecasts",".","Note",":","currently","only","implemented","for","Series","(","non-panel",",","non-hierarchical",")","y",".","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","marginal",":","bool",",","optional","(","default=True",")","whether","returned","distribution","is","marginal","by","time","index","Returns","--","--","--","-","pred_dist",":","sktime","BaseDistribution","predictive","distribution","if","marginal=True",",","will","be","marginal","distribution","by","time","point","if","marginal=False","and","implemented","by","method",",","will","be","joint"]
code: def predict_proba(self, fh=None, X=None, marginal=True):
      """Compute/return fully probabilistic forecasts.
  
      Note: currently only implemented for Series (non-panel, non-hierarchical) y.
  
      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
      marginal : bool, optional (default=True)
          whether returned distribution is marginal by time index
  
      Returns
      -------
      pred_dist : sktime BaseDistribution
          predictive distribution
          if marginal=True, will be marginal distribution by time point
          if marginal=False and implemented by method, will be joint
      """
      if not self.get_tag("capability:pred_int"):
          raise NotImplementedError(
              f"{self.__class__.__name__} does not have the capability to return "
              "fully probabilistic predictions. If you "
              "think this estimator should have the capability, please open "
              "an issue on sktime."
          )
  
      if hasattr(self, "_is_vectorized") and self._is_vectorized:
          raise NotImplementedError(
              "automated vectorization for predict_proba is not implemented"
          )
      self.check_is_fitted()
      # input checks
      fh = self._check_fh(fh)
  
      # check and convert X
      X_inner = self._check_X(X=X)
  
      # pass to inner _predict_proba
      pred_dist = self._predict_proba(
          fh=fh, X=X_inner, marginal=marginal
      )
  
      return pred_dist
  
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 13 for calling the BaseForecaster obj's underlying member method code with example usage: obj.predict_proba(fh, X, marginal) and returns: pred_dist