JavaScriptやTypeScriptで中央値を取得したい!
業務でNodeを使ってツールを作成した際に中央値を取得したい時がありましたのでまとめておきます。
フロントエンドでのJavaScriptやTypeScriptの処理でも同様に使用できるので、ご活用ください。
- 合計を計算したい!
- 平均を取得したい!
という場合は、こちらに記事にまとめておきましたのでこちらを参照してください!
中央値とは?
中央値とは、データの並びでちょうど真ん中のところの値のことです。
データを集計する際に、外れ値が存在する場合などは平均よりもこの中央値の方が適していることが多いです。
例えば、Webページの速度を計測して集計するのを例とすると、特定のネットワーク状況によっては稀に大きな値をとってしまう事も考えられます。
そのような場合だと、平均の値に大きく影響してしまうため、指針の一つとして中央値も取っておくと参考になりますね!
JavaScriptやTypeScriptで中央値を出す方法
中央値の計算方法
中央値の計算方法はこちらのサイトにある通りなので、これをプログラムにしていきます。
中央値はメディアン(Median)ともよばれます。データを小さい順に並べたときにちょうど真ん中に来る値のことです。
https://bellcurve.jp/statistics/course/4317.html
例えば「1, 1, 2, 4, 5, 8, 9, 10, 11」というデータの場合、中央値は「5」です。もしデータの数が偶数の場合、例えば「1, 1, 2, 4, 5, 8, 9, 10, 11,14」というデータの場合、中央にある2つの値「5」と「8」の平均が中央値となります。したがって、中央値は(5+8)/2=6.5です。
サンプルコード
こちらがサンプルコードとなります。
- データの数が奇数個の場合は、真ん中の値(arr[half])を返します。
- データの数が偶数個の場合は、中央にある2つの値の平均((arr[half – 1] + arr[half]) / 2)を返します。
JavaScript
const median = (numbers) => {
const half = (numbers.length / 2) | 0
const arr = numbers.sort((a, b) => {
return a - b;
})
if (arr.length % 2) {
return arr[half]
}
return (arr[half - 1] + arr[half]) / 2
}
console.log(median([100, 200, 300, 400, 500]));
console.log(median([100, 200, 300, 400, 500, 600]));
console.log(median([600, 600, 100, 200, 300, 400, 500]));
TypeScript
const median = (numbers: number[]) => {
const half = (numbers.length / 2) | 0
const arr = numbers.sort((a, b) => {
return a - b
})
if (arr.length % 2) {
return arr[half]
}
return (arr[half - 1] + arr[half]) / 2
}
console.log(median([100, 200, 300, 400, 500]))
console.log(median([100, 200, 300, 400, 500, 600]))
console.log(median([600, 600, 100, 200, 300, 400, 500]))
実行結果
こちらが実行結果になります。
ちゃんと中央値が求められているのがわかるかと思います!
# JavaScript
% node index.js
300
350
400
# TypeScript
% ts-node index.ts
300
350
400
まとめ
今回は、JavaScriptやTypeScriptを用いて中央値を取得する方法について纏めました!
基本的な計算方法は、業務でもよく使うことになると思うので、毎回ググるのではなくメモったり参考になるやつをブックマークしておくと、すぐに作業できて良いですね!
コメント