四分位範囲・箱ひげ図
データを並べて4等分すると、散らばり具合が一目でわかる
- 1
- 四分位範囲・箱ひげ図の本質的な定義と直感的ビジュアルをシミュレーターで体験できる。
- 2
- 公式や証明の背景にある数学的意味と、厳密な導出ステップを解説。
- 3
- 実社会における工学応用(IQRによる外れ値検出とA/Bテストのデータ可視化)のTypeScript実装コードを収録。
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
四分位範囲・箱ひげ図の基礎原理を体系化し、抽象的な計算を直感的に扱うために誕生した。
身につく武器・思考力
データを並べて4等分すると、散らばり具合が一目でわかる。この考え方を身につけることで、複雑な課題を単純化して数理モデルとして解く力が養われる。
実社会・ITでの活躍現場
- •IQRによる外れ値検出とA/Bテストのデータ可視化
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
下のデータ点をドラッグして値を動かしてみよう。数値を並べ替えたときの最小値・第1四分位数(Q1)・中央値(Q2)・第3四分位数(Q3)・最大値が、箱ひげ図としてリアルタイムに更新される様子を観察しよう。
↑ 箱ひげ図は、データの「散らばり具合(ばらつき)」を一目で把握するためのグラフです。真ん中の箱には全体の約50%のデータが収まっており、箱の幅()が狭いほどデータが密集していることを示します。
Layer 2 — 定義・受験・証明
定義
データを小さい順に並べたとき、全体を4等分する位置にある値を四分位数という。小さい方から (第1四分位数)、(中央値)、(第3四分位数)と呼び、 を四分位範囲(IQR: Interquartile Range)という。箱ひげ図は、最小値・・・・最大値の5つの値を使って、データの分布を箱とひげで視覚化したものである。
公式・数理モデル
証明・導出
データを昇順に並べた列を とする。
1. 中央値 は、全体を半分に分ける値。 が奇数なら中央の値、偶数なら中央2つの平均。 2. は、 より小さい側のデータ(下半分)の中央値。 3. は、 より大きい側のデータ(上半分)の中央値。
箱ひげ図では、 から までを「箱」として描き、箱の中に (中央値)の線を引く。箱の両端から最小値・最大値までを「ひげ」として伸ばす。
外れ値の判定には、しばしば次の基準が使われる。
押さえておきたいポイント
- 箱の長さ(IQR)が短いほど、データが中央付近に密集している
- 中央値の線が箱の中心からずれていると、分布が左右非対称である
- 四分位範囲は平均値・標準偏差と違い、外れ値の影響を受けにくい「頑健な」散らばりの指標
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
IQRによる外れ値検出とA/Bテストのデータ可視化
IQR(四分位範囲)は、センサーデータのノイズ除去や不正な計測値の検知、A/Bテストで各グループの応答時間や売上のばらつきを比較する際の統計的な外れ値検出手法として実務でよく使われる。平均値だけでは見えない分布の歪みや外れ値を、箱ひげ図で直感的に共有できる。
1function quartiles(sorted: number[]): { q1: number; q2: number; q3: number } {2 const median = (arr: number[]): number => {3 const mid = Math.floor(arr.length / 2);4 return arr.length % 2 !== 0 ? arr[mid] : (arr[mid - 1] + arr[mid]) / 2;5 };6 const mid = Math.floor(sorted.length / 2);7 const lower = sorted.slice(0, mid);8 const upper = sorted.length % 2 !== 0 ? sorted.slice(mid + 1) : sorted.slice(mid);9 return { q1: median(lower), q2: median(sorted), q3: median(upper) };10}1112function detectOutliers(data: number[]): number[] {13 const sorted = [...data].sort((a, b) => a - b);14 const { q1, q3 } = quartiles(sorted);15 const iqr = q3 - q1;16 const lowerBound = q1 - 1.5 * iqr;17 const upperBound = q3 + 1.5 * iqr;18 return data.filter((x) => x < lowerBound || x > upperBound);19}2021// A/Bテストの応答時間(ms)から異常値だけを抜き出す22console.log(detectOutliers([120, 130, 125, 128, 900, 122, 119]));23// => [900] が外れ値として検出される
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元