class_docstr: Forecast based on naive assumptions about past trends continuing.
  
  NaiveForecaster is a forecaster that makes forecasts using simple
  strategies. Two out of three strategies are robust against NaNs. The
  NaiveForecaster can also be used for multivariate data and it then
  applies internally the ColumnEnsembleForecaster, so each column
  is forecasted with the same strategy.
  
  Internally, this forecaster does the following:
  - obtains the so-called "last window", a 1D array that denotes the
    most recent time window that the forecaster is allowed to use
  - reshapes the last window into a 2D array according to the given
    seasonal periodicity (prepended with NaN values to make it fit);
  - make a prediction for each column, using the given strategy:
    - "last": last non-NaN row
    - "mean": np.nanmean over rows
  - tile the predictions using the seasonal periodicity
  
  To compute prediction quantiles, we first estimate the standard error
  of prediction residuals under the assumption of uncorrelated residuals.
  The forecast variance is then computed by multiplying the residual
  variance by a constant. This constant is a small-sample bias adjustment
  and each method (mean, last, drift) have different formulas for computing
  the constant. These formulas can be found in the Forecasting:
  Principles and Practice textbook (Table 5.2) [1]_. Lastly, under the assumption that
  residuals follow a normal distribution, we use the forecast variance and
  z-scores of a normal distribution to estimate the prediction quantiles.
  
  Parameters
  ----------
  strategy : {"last", "mean", "drift"}, default="last"
      Strategy used to make forecasts:
  
      * "last":   (robust against NaN values)
                  forecast the last value in the
                  training series when sp is 1.
                  When sp is not 1,
                  last value of each season
                  in the last window will be
                  forecasted for each season.
      * "mean":   (robust against NaN values)
                  forecast the mean of last window
                  of training series when sp is 1.
                  When sp is not 1, mean of all values
                  in a season from last window will be
                  forecasted for each season.
      * "drift":  (not robust against NaN values)
                  forecast by fitting a line between the
                  first and last point of the window and
                  extrapolating it into the future.
  
  sp : int, or None, default=1
      Seasonal periodicity to use in the seasonal forecasting. None=1.
  
  window_length : int or None, default=None
      Window length to use in the `mean` strategy. If None, entire training
          series will be used.
  
  References
  ----------
  .. [1] Hyndman, R.J., & Athanasopoulos, G. (2021) Forecasting:
      principles and practice, 3rd edition, OTexts: Melbourne, Australia.
      OTexts.com/fpp3. Accessed on 22 September 2022.
  
  Examples
  --------
  >>> from sktime.datasets import load_airline
  >>> from sktime.forecasting.naive import NaiveForecaster
  >>> y = load_airline()
  >>> forecaster = NaiveForecaster(strategy="drift")
  >>> forecaster.fit(y)
  NaiveForecaster(...)
  >>> y_pred = forecaster.predict(fh=[1,2,3])
class_docstr_tok: ["Forecast","based","on","naive","assumptions","about","past","trends","continuing",".","NaiveForecaster","is","a","forecaster","that","makes","forecasts","using","simple","strategies",".","Two","out","of","three","strategies","are","robust","against","NaNs",".","The","NaiveForecaster","can","also","be","used","for","multivariate","data","and","it","then","applies","internally","the","ColumnEnsembleForecaster",",","so","each","column","is","forecasted","with","the","same","strategy",".","Internally",",","this","forecaster","does","the","following",":","-","obtains","the","so-called","``","last","window","''",",","a","1D","array","that","denotes","the","most","recent","time","window","that","the","forecaster","is","allowed","to","use","-","reshapes","the","last","window","into","a","2D","array","according","to","the","given","seasonal","periodicity","(","prepended","with","NaN","values","to","make","it","fit",")",";","-","make","a","prediction","for","each","column",",","using","the","given","strategy",":","-","``","last","''",":","last","non-NaN","row","-","``","mean","''",":","np.nanmean","over","rows","-","tile","the","predictions","using","the","seasonal","periodicity","To","compute","prediction","quantiles",",","we","first","estimate","the","standard","error","of","prediction","residuals","under","the","assumption","of","uncorrelated","residuals",".","The","forecast","variance","is","then","computed","by","multiplying","the","residual","variance","by","a","constant",".","This","constant","is","a","small-sample","bias","adjustment","and","each","method","(","mean",",","last",",","drift",")","have","different","formulas","for","computing","the","constant",".","These","formulas","can","be","found","in","the","Forecasting",":","Principles","and","Practice","textbook","(","Table","5.2",")","[","1","]","_.","Lastly",",","under","the","assumption","that","residuals","follow","a","normal","distribution",",","we","use","the","forecast","variance","and","z-scores","of","a","normal","distribution","to","estimate","the","prediction","quantiles",".","Parameters","--","--","--","--","--","strategy",":","{","``","last","''",",","``","mean","''",",","``","drift","''","}",",","default=","''","last","''","Strategy","used","to","make","forecasts",":","*","``","last","''",":","(","robust","against","NaN","values",")","forecast","the","last","value","in","the","training","series","when","sp","is","1",".","When","sp","is","not","1",",","last","value","of","each","season","in","the","last","window","will","be","forecasted","for","each","season",".","*","``","mean","''",":","(","robust","against","NaN","values",")","forecast","the","mean","of","last","window","of","training","series","when","sp","is","1",".","When","sp","is","not","1",",","mean","of","all","values","in","a","season","from","last","window","will","be","forecasted","for","each","season",".","*","``","drift","''",":","(","not","robust","against","NaN","values",")","forecast","by","fitting","a","line","between","the","first","and","last","point","of","the","window","and","extrapolating","it","into","the","future",".","sp",":","int",",","or","None",",","default=1","Seasonal","periodicity","to","use","in","the","seasonal","forecasting",".","None=1",".","window_length",":","int","or","None",",","default=None","Window","length","to","use","in","the","`","mean","`","strategy",".","If","None",",","entire","training","series","will","be","used",".","References","--","--","--","--","--","..","[","1","]","Hyndman",",","R.J.",",","&","Athanasopoulos",",","G.","(","2021",")","Forecasting",":","principles","and","practice",",","3rd","edition",",","OTexts",":","Melbourne",",","Australia",".","OTexts.com\/fpp3",".","Accessed","on","22","September","2022",".","Examples","--","--","--","--",">",">",">","from","sktime.datasets","import","load_airline",">",">",">","from","sktime.forecasting.naive","import","NaiveForecaster",">",">",">","y","=","load_airline","(",")",">",">",">","forecaster","=","NaiveForecaster","(","strategy=","''","drift","''",")",">",">",">","forecaster.fit","(","y",")","NaiveForecaster","(","...",")",">",">",">","y_pred","=","forecaster.predict","(","fh=","[","1,2,3","]",")"]
code: def __init__(self, strategy="last", window_length=None, sp=1):
      super().__init__()
      self.strategy = strategy
      self.sp = sp
      self.window_length = window_length
  
      # Override tag for handling missing data
      # todo: remove if GH1367 is fixed
      if self.strategy in ("last", "mean"):
          self.set_tags(**{"handles-missing-data": True})
  
imports: import math
  import numpy
  import pandas
  from scipy.stats import norm
  from sktime.datatypes._convert import convert, convert_to
  from sktime.datatypes._utilities import get_slice
  from sktime.forecasting.base import ForecastingHorizon
  from sktime.forecasting.base._base import DEFAULT_ALPHA, BaseForecaster
  from sktime.forecasting.base._sktime import _BaseWindowForecaster
  from sktime.utils.seasonality import _pivot_sp, _unpivot_sp
  from sktime.utils.validation import check_window_length
  from sktime.utils.validation.forecasting import check_sp
  from sktime.utils.warnings import warn
label_desc: Use image node_id 1 to create a new NaiveForecaster object from inherited base classes: _BaseWindowForecaster with example: obj = NaiveForecaster(strategy, window_length, sp)