median_absolute_deviation.js

import median from "./median.js";

/**
 * [中位绝对偏差](http://en.wikipedia.org/wiki/Median_absolute_deviation)是一种
 * 鲁棒的统计离散度量。相比标准差,它对异常值更具抵抗力。
 *
 * @param {Array<number>} x 输入数组
 * @returns {number} 中位绝对偏差
 * @example
 * medianAbsoluteDeviation([1, 1, 2, 2, 4, 6, 9]); // => 1
 */
function medianAbsoluteDeviation(x) {
    const medianValue = median(x);
    const medianAbsoluteDeviations = [];

    // 计算每个数据点与中位数的绝对偏差
    for (let i = 0; i < x.length; i++) {
        medianAbsoluteDeviations.push(Math.abs(x[i] - medianValue));
    }

    // 返回这些绝对偏差的中位数
    return median(medianAbsoluteDeviations);
}

export default medianAbsoluteDeviation;