class_docstr: BlockBootstrapPerturber split the time series into contiguous chunks
  called blocks, for each block noise is estimated and noise is exchanged
  and added to the signal (mean) between randomly selected blocks.
  
  References:
      .. [#0] `Bühlmann, Peter. "Bootstraps for time series."
          Statistical science (2002): 52-72.
          <https://projecteuclid.org/journals/statistical-science/volume-17/issue-1/Bootstraps-for-Time-Series/10.1214/ss/1023798998.full>`_
class_docstr_tok: ["BlockBootstrapPerturber","split","the","time","series","into","contiguous","chunks","called","blocks",",","for","each","block","noise","is","estimated","and","noise","is","exchanged","and","added","to","the","signal","(","mean",")","between","randomly","selected","blocks",".","References",":","..","[","#","0","]","`","B\u00fchlmann",",","Peter",".","``","Bootstraps","for","time","series",".","''","Statistical","science","(","2002",")",":","52-72",".","<","https",":","\/\/projecteuclid.org\/journals\/statistical-science\/volume-17\/issue-1\/Bootstraps-for-Time-Series\/10.1214\/ss\/1023798998.full",">","`","_"]
code: def _fit(
      self,
      x: Union["tsFrame", np.ndarray],
  ):
      window_length = self._parameters.get("window_length")
      self._mean, self._residual = ts_split_mean_residual(
          x, window_size=window_length
      )
      self._data_length = x.shape[0]
      return self
  
file_path: AIX360/aix360/algorithms/tsutils/tsperturbers/block_bootstrap_perturber.py
imports: import numpy
  import pandas
  from typing import Union
  from aix360.algorithms.tsutils.tsframe import tsFrame
  from aix360.algorithms.tsutils.tsperturbers.tsperturber import BlockSelector, TSPerturber
  from aix360.algorithms.tsutils.tsperturbers.perturber_utils import ts_split_mean_residual
label_desc: Use image node_id 4 for calling the BlockBootstrapPerturber obj's underlying member method code with example usage: obj._fit(x) and returns: self