javascript - 如何在 JavaScript(或 PHP)中获取数组的中位数和四分位数/百分位数?

标签 javascript php statistics median percentile

This question is turned into a Q&A, because I had struggle finding the answer, and think it can be useful for others

我有一个 JavaScript 值数组,需要用 JavaScript 计算它的 Q2(第 50 个百分位又名 MEDIAN)、Q1(第 25 个百分位 ) 和 Q3(第 75 个百分位数)值。

enter image description here

最佳答案

我更新了第一个答案的 JavaScript 翻译,以使用箭头函数和更简洁的符号。功能基本保持不变,除了 std,它现在计算样本标准偏差(除以 arr.length - 1 而不是仅仅 arr.length)

// sort array ascending
const asc = arr => arr.sort((a, b) => a - b);

const sum = arr => arr.reduce((a, b) => a + b, 0);

const mean = arr => sum(arr) / arr.length;

// sample standard deviation
const std = (arr) => {
    const mu = mean(arr);
    const diffArr = arr.map(a => (a - mu) ** 2);
    return Math.sqrt(sum(diffArr) / (arr.length - 1));
};

const quantile = (arr, q) => {
    const sorted = asc(arr);
    const pos = (sorted.length - 1) * q;
    const base = Math.floor(pos);
    const rest = pos - base;
    if (sorted[base + 1] !== undefined) {
        return sorted[base] + rest * (sorted[base + 1] - sorted[base]);
    } else {
        return sorted[base];
    }
};

const q25 = arr => quantile(arr, .25);

const q50 = arr => quantile(arr, .50);

const q75 = arr => quantile(arr, .75);

const median = arr => q50(arr);

关于javascript - 如何在 JavaScript(或 PHP)中获取数组的中位数和四分位数/百分位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48719873/

相关文章:

javascript - 如何制作 jQuery 变量切换按钮?

javascript - jquery ajax 成功操作参数无法正常工作

python - scipy,对数正态分布 - 参数

php - 如何从均值获得较低和较高值的偏差

javascript - 使用符号链接(symbolic link)在多个 React 应用程序之间共享代码

javascript - 数组的appendChild仅追加到最后一个元素

php - 通用 PHP <=> Javascript 命令框架?

php - AWS S3 cURL 超时

php - 获取 url php 的文件名

binary - 在 Julia 中进行频率计数的最佳方法