class_docstr: Given an anomalous observation x and samples from the distribution of X, this score represents:
      score(x) = |x - med[X]| / mad[X]
  
  This scores the given sample based on its distance to the median of X and scaled by the median absolute deviation
  of X.
  
  The higher the score, the higher the deviation of the observation from the median of X.
code: def fit(self, X: np.ndarray) -> None:
      self._median = np.median(X)
      self._mad = mad(X)
  
imports: from typing import Optional
  import numpy
  from statsmodels.robust import mad
  from dowhy.gcm.anomaly_scorer import AnomalyScorer
  from dowhy.gcm.constant import EPS
  from dowhy.gcm.density_estimator import DensityEstimator
  from dowhy.gcm.util.general import shape_into_2d
label_desc: Use image node_id 2 for calling the MedianDeviationScorer obj's underlying member method code with example usage: obj.fit(X) without return types