Source code for tick.robust.robust

# License: BSD 3 clause

import numpy as np


[docs]def std_mad(x): """Robust estimation of the standard deviation, based on the Corrected Median Absolute Deviation (MAD) of x. This computes the MAD of x, and applies the Gaussian distribution correction, making it a consistent estimator of the standard-deviation (when the sample looks Gaussian with outliers). Parameters ---------- x : `np.ndarray` Input vector Returns ------- output : `float` A robust estimation of the standard deviation """ from scipy.stats import norm correction = 1 / norm.ppf(3 / 4) return correction * np.median(np.abs(x - np.median(x)))
[docs]def std_iqr(x): """Robust estimation of the standard deviation, based on the inter-quartile (IQR) distance of x. This computes the IQR of x, and applies the Gaussian distribution correction, making it a consistent estimator of the standard-deviation (when the sample looks Gaussian with outliers). Parameters ---------- x : `np.ndarray` Input vector Returns ------- output : `float` A robust estimation of the standard deviation """ from scipy.stats import iqr from scipy.special import erfinv correction = 2 ** 0.5 * erfinv(0.5) return correction * iqr(x)