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 个百分位数)值。
最佳答案
我更新了第一个答案的 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/