js实现统计量
JavaScript 实现统计量
JavaScript 可以用于计算各种统计量,包括均值、中位数、众数、方差、标准差等。以下是一些常见统计量的实现方法。
计算均值(平均值)
均值是所有数据的总和除以数据的数量。可以使用以下代码计算均值:
function calculateMean(data) {
const sum = data.reduce((acc, val) => acc + val, 0);
return sum / data.length;
}
const data = [1, 2, 3, 4, 5];
console.log(calculateMean(data)); // 输出: 3
计算中位数
中位数是数据集中间的值。如果数据集长度为偶数,则取中间两个数的平均值。
function calculateMedian(data) {
const sortedData = [...data].sort((a, b) => a - b);
const mid = Math.floor(sortedData.length / 2);
if (sortedData.length % 2 === 0) {
return (sortedData[mid - 1] + sortedData[mid]) / 2;
} else {
return sortedData[mid];
}
}
const data = [1, 2, 3, 4, 5];
console.log(calculateMedian(data)); // 输出: 3
计算众数
众数是数据集中出现频率最高的值。如果有多个众数,可以返回所有众数。
function calculateMode(data) {
const frequencyMap = {};
data.forEach(num => {
frequencyMap[num] = (frequencyMap[num] || 0) + 1;
});
let maxFrequency = 0;
const modes = [];
for (const num in frequencyMap) {
if (frequencyMap[num] > maxFrequency) {
modes.length = 0;
modes.push(Number(num));
maxFrequency = frequencyMap[num];
} else if (frequencyMap[num] === maxFrequency) {
modes.push(Number(num));
}
}
return modes.length === 1 ? modes[0] : modes;
}
const data = [1, 2, 2, 3, 4];
console.log(calculateMode(data)); // 输出: 2
计算方差
方差是数据点与均值之差的平方的平均值。
function calculateVariance(data) {
const mean = calculateMean(data);
const squaredDiffs = data.map(num => Math.pow(num - mean, 2));
return calculateMean(squaredDiffs);
}
const data = [1, 2, 3, 4, 5];
console.log(calculateVariance(data)); // 输出: 2
计算标准差
标准差是方差的平方根,表示数据的离散程度。
function calculateStandardDeviation(data) {
return Math.sqrt(calculateVariance(data));
}
const data = [1, 2, 3, 4, 5];
console.log(calculateStandardDeviation(data)); // 输出: ~1.414
使用现成库
如果需要更复杂的统计计算,可以使用现成的 JavaScript 库,如 simple-statistics 或 mathjs。
// 使用 simple-statistics
const ss = require('simple-statistics');
const data = [1, 2, 3, 4, 5];
console.log(ss.mean(data)); // 输出: 3
console.log(ss.median(data)); // 输出: 3
console.log(ss.standardDeviation(data)); // 输出: ~1.414
这些方法可以帮助快速实现常见的统计量计算,适用于数据分析、可视化或机器学习任务。







