はじめに
監視設定をしていた際に出てきた「パーセンタイル」という考え方。
文系出身で、中学高校の苦手科目は数学であった私にはすぐに理解ができない代物でした。
自分なりに調べて理解ができたのでアウトプットとしてまとめておきます。
パーセンタイルとは
データを小さい順に並べたときに100等分した位置を示す指標。
…と言われてもいまいちピンときませんでした。
具体例で考えてみましょう。
以下のような試験結果があったとします。
生徒 | 点数 |
---|---|
A | 40 |
B | 50 |
C | 40 |
D | 50 |
E | 30 |
F | 70 |
G | 100 |
結構難しい試験だったようで、Gを除くとあまり成績が芳しくありません。
しかし、一人秀才のGがいるため平均点は約54点です
もしGがいなかったとしてA~Fの6人だった場合、平均点は約46点です。
G一人で平均点を8点も引き上げています。周りの生徒からするといい迷惑ですね。
親へ報告するときに平均点を伝えてしまうと、平均点を超えているF以外は平均点以下として叱られてしまいます。
ここで活躍するのが中央値です。
中央値とはつまり50パーセンタイルのことです。
この場合の50パーセンタイルの求め方は以下の通りです。
・まず点数を小さい順に並べます。(30, 40, 40, 50, 50, 70, 100)
・データは7人分なので 7 * 0.5 = 3.5 番目の人(下から)の点数が目安となります。
・3.5番目は3番目と4番目の間のため、補間をします。
40 + (50 - 40) * 0.5 = 45
<3番目の点数> + <4番目と3番目の差分> * <「3.5番目」の小数点以下部分>
つまりこの試験結果の50パーセンタイルは45点であり、50点のB,Dは叱られずに済むかもしれません。
今回はわかりやすく中央値を使用しましたが、例えばこの試験結果を用いて90パーセンタイルを求めた場合は以下のようになります。
7 * 0.9 = 6.3 番目
70 + (100 - 70) * 0.3 = 79 点
90パーセンタイルなんて何に使うんだと思うかもしれませんが、簡単に言うと上振れ・外れ値を除外するための考え方だと思っています。
今回のサンプルデータは7人しかいませんでしたが、仮に100人いたとした場合の、90番目がいたとしたら79点ですよ、ということです。91~100番目の上位10%は上振れなのでそこを抜いて考えると最高値はこのくらい、という認識でいればまずはいいと思います。
監視での考え方
最初の部分に戻りますがこのパーセンタイルという考え方、監視設定をする際に重要になってきます。
仮にレイテンシについてのパフォーマンス計測をしていたとしましょう。
平均値として30ミリ秒程度のレイテンシでリクエストを処理しているWebサービスがあったとして、99パーセンタイルのレイテンシが300ミリ秒であった場合、一部のユーザーは大幅なレスポンス遅延を体験していることになります。
これは平均値だけを収集していると読み取れません。
こういった事情からパフォーマンス集計においては平均値ではなく99パーセンタイル、もしくは99.9パーセンタイルにて計測することが良いといわれる場合があります。
100パーセンタイル
99.9まで行くなら100にすればいいのに、と思った方もいるかもしれません。
ですが100パーセンタイルとはつまり最大値を表します。
最大値ということはごく稀な外れ値や測定誤差などで上振れした値が計測されてしまう可能性があります。
こういった上振れ値を排除しながら、平均値ではぼかされてしまう値を見落とさないようにすることができるのがパーセンタイルという指標だということですね。
さいごに
以上、パーセンタイルについて自分なりの理解をまとめてみました。
文系の数学では習わない指標に悩まされる方の一助になれば幸いです。
(文系の数学でも習っているものだったらすみません)
(そもそも理系であればみなさん通るものなのでしょうか…?)