JavaScript | 「平均・分散・標準偏差・範囲内の割合」をまとめて返す 統計サマリー関数

JavaScript JavaScript
スポンサーリンク

では「統計サマリー関数」を作ってみましょう。
これは 平均・分散・標準偏差・範囲内の割合 をまとめて返す関数です。


目標

  • 平均値を計算
  • 分散を計算
  • 標準偏差を計算
  • 平均 ± 1, 2, 3 標準偏差の範囲に入るデータの割合(%)を計算
  • まとめてオブジェクトで返す

✅ 模範解答

function getStatisticsSummary(arr) {
  if (arr.length === 0) return null;

  // 平均
  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);

  // 範囲に入る割合を計算する関数
  function countWithin(k) {
    const lower = average - k * stdDev;
    const upper = average + k * stdDev;
    const count = arr.filter(num => num >= lower && num <= upper).length;
    return (count / arr.length) * 100; // 割合(%)
  }

  return {
    average,
    variance,
    stdDev,
    within1StdDev: countWithin(1), // 平均 ±1σ の割合
    within2StdDev: countWithin(2), // 平均 ±2σ の割合
    within3StdDev: countWithin(3)  // 平均 ±3σ の割合
  };
}

// 実行例
console.log(getStatisticsSummary([3, 7, 2, 9, 5]));
/*
{
  average: 5.2,
  variance: 6.16,
  stdDev: 2.48,
  within1StdDev: 80,   // 5個中4個
  within2StdDev: 100,  // 全部
  within3StdDev: 100
}
*/
JavaScript

💡 解説

  • 平均 → データの中心
  • 分散 → ばらつきの大きさ
  • 標準偏差 → 元の単位でのばらつき
  • ±1σ, ±2σ, ±3σ の割合 → 正規分布なら「68-95-99.7ルール」に近づく

🔥 発展練習

  • この関数に「最小値・最大値」も追加して返す
  • データ数(n)も返すようにして「サンプルサイズ」を明示する
  • グラフ化して分布を可視化する

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