JavaScript | 分散を計算する関数

JavaScript JavaScript
スポンサーリンク

では「分散を計算する関数」を作ってみましょう。
これは 偏差の二乗の平均 を求めることで、データのばらつきを数値化する練習です。


目標

  • 配列の平均値を求める
  • 各要素の偏差(二乗)を計算する
  • その二乗の平均値を返す(=分散)

✅ 模範解答(for文バージョン)

function getVariance(arr) {
  if (arr.length === 0) return null; // 空配列ならnull

  // 平均値を計算
  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;
  }

  // 分散 = 偏差の二乗の平均
  return squaredTotal / arr.length;
}

// 実行例
console.log(getVariance([3, 7, 2, 9, 5]));
// 平均は5.2 → 分散は6.16
JavaScript

✅ 模範解答(for…ofバージョン)

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

  const total = arr.reduce((sum, num) => sum + num, 0);
  const average = total / arr.length;

  let squaredTotal = 0;
  for (const num of arr) {
    const deviation = num - average;
    squaredTotal += deviation ** 2;
  }

  return squaredTotal / arr.length;
}

console.log(getVariance([10, 20, 30, 40]));
// 平均は25 → 分散は125
JavaScript

✅ 模範解答(forEachバージョン)

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

  let total = 0;
  arr.forEach(num => total += num);
  const average = total / arr.length;

  let squaredTotal = 0;
  arr.forEach(num => {
    const deviation = num - average;
    squaredTotal += deviation ** 2;
  });

  return squaredTotal / arr.length;
}

console.log(getVariance([4, 6, 8]));
// 平均は6 → 分散は2.67
JavaScript

💡 解説

  • 分散 = 偏差の二乗の平均
  • 値が平均からどれくらい離れているかを数値化できる。
  • 分散が大きい → データのばらつきが大きい
  • 分散が小さい → データが平均の近くに集まっている

🔥 発展練習

  • 分散の平方根を計算して「標準偏差」を返す関数を作る
  • 標準偏差を使って「平均 ± 標準偏差の範囲に何個のデータが入るか」を数える
タイトルとURLをコピーしました