JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで数値配列の分散を計算する方法

問題

昇順にソートされた数値の配列を受け取り、その分散(Variance)を計算するJavaScript関数を作成する必要があります。

分散とは、一連の数値が平均値からどれだけばらついているかを表す統計量で、まず平均値を求め、その平均との差の二乗和をデータ数で割ることで計算できます。

計算式

まず、平均値(M)は次のように定義されます。

$Mean (M) = ( \sum_{i=0}^{n-1} arr[i])$ / n

続いて、分散(V)は各要素と平均値の差を二乗し、それらを合計してデータ数で割った値になります。

Variance (V) = $(\sum_{i=0}^{n-1} (arr[i] - M)^2)$ / n

実装例

以下は実際のコード例です。配列が空の場合は 0 を返すようにしています。

const arr = [4, 6, 7, 8, 9, 10, 10];
const findVariance = (arr = []) => {
   if(!arr.length){
      return 0;
   };
   const sum = arr.reduce((acc, val) => acc + val);
   const { length: num } = arr;
   const median = sum / num;
   let variance = 0;
   arr.forEach(num => {
      variance += ((num - median) * (num - median));
   });
   variance /= num;
   return variance;
};
console.log(findVariance(arr))

コードの解説

  • reduceメソッド:配列全体の合計値を一度に計算します。
  • median変数:合計値を要素数で割り、平均値を求めています。なお、統計用語として厳密には「平均(mean)」であり「中央値(median)」ではないため注意が必要です。
  • forEachメソッド:各要素について「要素 − 平均」の二乗を累積していきます。
  • 最後に累積した値を要素数で割ることで分散が求まります。

出力結果

4.204081632653061

このように、reduceとforEachを組み合わせることで、シンプルかつ読みやすいコードで数値配列の分散を計算することができます。

  1. JavaScriptで配列の中央値を計算する方法をわかりやすく解説

    中央値(メジアン)とは、数値データを小さい順に並べたときにちょうど中央に位置する値のことです。JavaScriptで配列の中央値を求めるには、まず配列をソートし、その後要素数に応じて処理を分けます。要素数が奇数の場合は中央の1つの要素を、偶数の場合は中央に近い2つの要素の平均値を中央値として返します。中央値の計算手順配列をソートする - 数値配列の場合、sort() メソッドに比較関数 (a, b) => a - b を渡して正しく昇順ソートします。中央のインデックスを求める - Math.floor(arr.length / 2) で中央位置を整数として取得します。要素数の判定を行う

  2. JavaScriptで配列の平均値を計算する方法

    JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia