JavaScript | 平均 ± 標準偏差の範囲に入るデータの数を数える関数

JavaScript JavaScript
スポンサーリンク

では「平均 ± 標準偏差の範囲に入るデータの数を数える関数」を作ってみましょう。
これは 標準偏差を使ったデータ分析 の基本的な応用です。


目標

  1. 平均値を求める
  2. 標準偏差を求める
  3. 範囲 = [平均 - 標準偏差, 平均 + 標準偏差] を計算
  4. その範囲に入る要素の数を数える

✅ 模範解答(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標準偏差の範囲に入るデータの数を数える関数を作る
  • 平均 ± 標準偏差の範囲に入るデータの「割合(%)」を返す関数を作る

タイトルとURLをコピーしました