日本の高校数学の四分位数の求め方はRの9種類のどれとも違う
こんな驚きのツイートを見かけました。
Rの quantile 函数では、分位数を求める方法が9種類用意されています。どれを使うかによって、もとめられる値が変わります。ちなみに日本の高校数学の四分位数のもとめ方はその9種類のどれにもあてはまりません。
— Fumiaki Nishihara (@f_nisihara) 2017年3月29日
まず、Rに9種類も四分位数が実装されているのがびっくりですよね。
?quantilesで調べてみると、
type
an integer between 1 and 9 selecting one of the nine quantile algorithms detailed below to be used.
と書いてあります。9種類もあるのは本当だった!
英語のWikipediaのQuantileをみるとわかりやすく9種類を解説してありました。ちなみに、たまたま気になってR-2の式を確認したのだけど、ちょっと間違えていると思います。
https://t.co/YPgEqPXXqi
— Akiya Mizukoshi (@Akiyah) 2017年4月17日
R-2の計算式、
Qp=(x⌈h – 1/2⌉ + x⌈h + 1/2⌉) / 2
ってなっているけど
Qp=(x⌈h – 1/2⌉ + x⌊h + 1/2⌋) / 2
じゃないのかなー
もっと丁寧に書いてあるのがQuartiles_in_R.pdfです。9種類のtypeに違いが出る場合を4種類のデータで示しています。下の画像は、data12の表で、data11、data10、data9もあります。
さて、本題です。日本の高校数学の四分位数は、これらとは違うのでしょうか。高校の教科書は持っていないのですが、ベネッセの解説を見つけました。
データを小さい方から順に並べたとき,中央値に相当するのが「第2四分位数」であり,
下位(中央値より小さい方)のデータの中央値が「第1四分位数」
上位(中央値より大きい方)のデータの中央値が「第3四分位数」となります。
と書いてあります。なるほど、定義としてはわかりやすいですね。でもRのquantileとは定義は違いますね。quantileはn分位数が出せるけど、この高校定義だとn=4の四分位数に限定されています。
さて、定義は違うけど、計算結果はRの9種類のどれとも違うのでしょうか。確認するために、Quartiles_in_R.pdfで使っているdata12, data11, data10, data9で計算してみました。
DATA | Q1 | MEDIAN | Q3 |
data12 <- c(2,3,5,7,11,13,17,19,23,29,31,37) | 6 | 15 | 26 |
data11 <- c(2,3,5,7,11,13,17,19,23,29,31) | 5 | 13 | 23 |
data10 <- c(2,3,5,7,11,13,17,19,23,29) | 5 | 12 | 19 |
data9 <- c(2,3,5,7,11,13,17,19,23) | 4 | 11 | 18 |
Quartiles_in_R.pdfと見比べてみると、確かに全部一致するものはないですね。type=2に一番近いですがdata9の時にtype=2は5,11,17ですのでちょっと違います。というわけで最初のツイートは正しいことが確認できました。
Rは9種類も四分位数の定義があるのに、なんで日本の高校はさらに新しい定義を作るのだろう、と最初は思ったのですが、ここまで計算してみるとちょっと考えが変わってきました。Rは9種類の四分位数(quantile)を実装しているけど、四分位数じゃなくてn分位数に対応しているために定義は少しややこしくなっています。一方、日本の高校の定義は、「中央値より下の中央値」「中央値より上の中央値」という感じで、わかりやすいんですよね。n=4の四分位数に限定の定義ですが、確かに教科書に載せるにはこっちの方が適切なのかも。と思いました。
ちなみに、今読んでいるこの本の四分位数は、定義の形はちょっと違うけど、Rのquantileのtype=7(default)と同じ値になるようでした。よかった。