最頻値
解説/アルゴリズム
データの中で最も個数の多い値のことを最頻値(モード)
と呼ぶ。
const data = [0, 6, 10, 2, 3, 5, 10, 9, 5, 6, 3, 2, 4, 5, 7, 1, 3, 4, 7, 3];
const max = 10; // 要素の最大値
const count = new Array(max + 1).fill(0);
data.forEach((value) => {
count[value]++;
});
let mode = 0;
let maxValue = -1;
count.forEach((value, i) => {
if (value > maxValue) {
mode = i;
maxValue = value;
}
});
// 3
console.log(mode);
度数分布表の最頻値
度数分布表での最頻値は、度数が最も大きい階級の階級値になる。
階級(点) 以上~未満 | 度数(人) |
---|---|
0 ~ 20 | 0 |
20 ~ 40 | 3 |
40 ~ 60 | 7 |
60 ~ 80 | 4 |
80 ~ 100 | 5 |
100 ~ 120 | 1 |
この度数分布表では、40~60点
の度数が7人
と一番多いので最頻値は階級値である50
になる。
const data = [
86, 20, 71, 43, 39, 66, 59, 50, 83, 63, 48, 31, 80, 79, 100, 92, 83, 44, 52,
56,
];
const table: number[] = [];
const range = 20;
const max = 120;
const rMax = Math.ceil(max / range);
type Data = { index: number; value: number };
let maxData: Data = { index: -1, value: -1 };
for (let i = 0; i < rMax; i++) {
table[i] = 0;
}
data.forEach((v) => {
const i = Math.floor(v / range);
table[i]++;
});
table.forEach((b, i) => {
const curValue = table[i];
if (maxData.value < curValue) {
maxData.index = i;
maxData.value = curValue;
}
});
const rangeMin = range * maxData.index;
const rangeMax = range * (maxData.index + 1);
const mode = (rangeMin + rangeMax) / 2;
// 最頻値は50です。
console.log(`最頻値は${mode}です。`);