では「平均 ± 標準偏差の範囲に入るデータの数を数える関数」を作ってみましょう。
これは 標準偏差を使ったデータ分析 の基本的な応用です。
目標
- 平均値を求める
- 標準偏差を求める
- 範囲 =
[平均 - 標準偏差, 平均 + 標準偏差]を計算 - その範囲に入る要素の数を数える
✅ 模範解答(for文バージョン)
function countWithinOneStdDev(arr) {
if (arr.length === 0) return 0;
// 平均を計算
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
const average = total / arr.length;
// 分散を計算
let squaredTotal = 0;
for (let i = 0; i < arr.length; i++) {
const deviation = arr[i] - average;
squaredTotal += deviation ** 2;
}
const variance = squaredTotal / arr.length;
// 標準偏差
const stdDev = Math.sqrt(variance);
// 範囲に入る数をカウント
let count = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] >= average - stdDev && arr[i] <= average + stdDev) {
count++;
}
}
return count;
}
// 実行例
console.log(countWithinOneStdDev([3, 7, 2, 9, 5]));
// 平均5.2, 標準偏差約2.48 → 範囲[2.72, 7.68] → 3,7,2,5 が入る → 4
JavaScript✅ 模範解答(for…ofバージョン)
function countWithinOneStdDev(arr) {
if (arr.length === 0) return 0;
const total = arr.reduce((sum, num) => sum + num, 0);
const average = total / arr.length;
const variance = arr.reduce((sum, num) => sum + (num - average) ** 2, 0) / arr.length;
const stdDev = Math.sqrt(variance);
let count = 0;
for (const num of arr) {
if (num >= average - stdDev && num <= average + stdDev) {
count++;
}
}
return count;
}
console.log(countWithinOneStdDev([10, 20, 30, 40]));
// 平均25, 標準偏差約11.18 → 範囲[13.82, 36.18] → 20,30 が入る → 2
JavaScript✅ 模範解答(forEachバージョン)
function countWithinOneStdDev(arr) {
if (arr.length === 0) return 0;
let total = 0;
arr.forEach(num => total += num);
const average = total / arr.length;
let squaredTotal = 0;
arr.forEach(num => squaredTotal += (num - average) ** 2);
const variance = squaredTotal / arr.length;
const stdDev = Math.sqrt(variance);
let count = 0;
arr.forEach(num => {
if (num >= average - stdDev && num <= average + stdDev) {
count++;
}
});
return count;
}
console.log(countWithinOneStdDev([4, 6, 8]));
// 平均6, 標準偏差約1.63 → 範囲[4.37, 7.63] → 6 が入る → 1
JavaScript💡 解説
- 平均 ± 標準偏差 の範囲は「データの中心にどれくらい集まっているか」を見るのに使う。
- 正規分布に近いデータでは、約68%がこの範囲に収まるとされる(統計の経験則)。
- 実際のデータで「どのくらいの割合が範囲に入るか」を調べると、分布の特徴が見えてくる。
🔥 発展練習
- 平均 ± 2標準偏差の範囲に入るデータの数を数える関数を作る
- 平均 ± 標準偏差の範囲に入るデータの「割合(%)」を返す関数を作る
