code: def median_absolute_error(
      y_true,
      y_pred,
      horizon_weight=None,
      multioutput="uniform_average",
      **kwargs,
  ):
      """Median absolute error (MdAE).
  
      MdAE output is non-negative floating point. The best value is 0.0.
  
      Like MAE, MdAE is on the same scale as the data. Because MAE takes the
      absolute value of the forecast error rather than squaring it, MAE penalizes
      large errors to a lesser degree than MdSE or RdMSE.
  
      Taking the median instead of the mean of the absolute errors also makes
      this metric more robust to error outliers since the median tends
      to be a more robust measure of central tendency in the presence of outliers.
  
      Parameters
      ----------
      y_true : pd.Series, pd.DataFrame or np.array of shape (fh,) or (fh, n_outputs) \
               where fh is the forecasting horizon
          Ground truth (correct) target values.
  
      y_pred : pd.Series, pd.DataFrame or np.array of shape (fh,) or (fh, n_outputs) \
               where fh is the forecasting horizon
          Forecasted values.
  
      horizon_weight : array-like of shape (fh,), default=None
          Forecast horizon weights.
  
      multioutput : {'raw_values', 'uniform_average'}  or array-like of shape \
              (n_outputs,), default='uniform_average'
          Defines how to aggregate metric for multivariate (multioutput) data.
          If array-like, values used as weights to average the errors.
          If 'raw_values', returns a full set of errors in case of multioutput input.
          If 'uniform_average', errors of all outputs are averaged with uniform weight.
  
      Returns
      -------
      loss : float
          MdAE loss.
          If multioutput is 'raw_values', then MdAE is returned for each
          output separately.
          If multioutput is 'uniform_average' or an ndarray of weights, then the
          weighted average MdAE of all output errors is returned.
  
      See Also
      --------
      mean_absolute_error
      mean_squared_error
      median_squared_error
      geometric_mean_absolute_error
      geometric_mean_squared_error
  
      References
      ----------
      Hyndman, R. J and Koehler, A. B. (2006). "Another look at measures of
      forecast accuracy", International Journal of Forecasting, Volume 22, Issue 4.
  
      Examples
      --------
      >>> from sktime.performance_metrics.forecasting import median_absolute_error
      >>> y_true = np.array([3, -0.5, 2, 7, 2])
      >>> y_pred = np.array([2.5, 0.0, 2, 8, 1.25])
      >>> median_absolute_error(y_true, y_pred)
      0.5
      >>> y_true = np.array([[0.5, 1], [-1, 1], [7, -6]])
      >>> y_pred = np.array([[0, 2], [-1, 2], [8, -5]])
      >>> median_absolute_error(y_true, y_pred)
      0.75
      >>> median_absolute_error(y_true, y_pred, multioutput='raw_values')
      array([0.5, 1. ])
      >>> median_absolute_error(y_true, y_pred, multioutput=[0.3, 0.7])
      0.85
      """
      return _median_absolute_error(
          y_true,
          y_pred,
          sample_weight=horizon_weight,
          multioutput=multioutput,
      )
  
imports: import numpy
  from scipy.stats import gmean
  from sklearn.metrics import mean_absolute_error
  from sklearn.metrics import mean_squared_error
  from sklearn.metrics import median_absolute_error
  from sklearn.metrics._regression import _check_reg_targets
  from sklearn.utils.stats import _weighted_percentile
  from sklearn.utils.validation import check_consistent_length
  from sktime.utils.stats import _weighted_geometric_mean
label_desc: Use image node_id 10 for calling a global function with example usage: median_absolute_error(y_true, y_pred, horizon_weight, multioutput) and returns: _median_absolute_error