R での四分位数および箱ひげ図の作成

Last update: 2011/07/25

高校数学 I での四分位数はいわゆる「ヒンジ」と呼ばれる四分位数であり,通常の Excel 等で求められる四分位数とは少し値が異なります.ここでは R および Rcmdr による四分位数と箱ひげ図の求め方を紹介します.なお2010 年度の男子 U1819 のナショナルチーム選手のデータをサンプルデータとして用います.注意:fivenum の四分位数は標本の大きさが奇数の場合,中央値を含め前半部分の中央値,中央値を含め後半部分の中央値になっているみたいです.したがって,fivenum は指導要領とは数値が少し異なります(ページ下の注意を参照).

    • データの準備,R および Rcmdr の起動

      • データは長方形データで準備します.Rcmdr で直接入力してもよいですし,Excel 等で入力してインポートしても構いません.Excel のときは変数名等も忘れずに 1 行目に入力しておきます(図 1).R を起動し,パッケージで Rcmdr を起動しておきます.Rcmdr からデータを読み込みます.Rcmdr の「データセットを表示」をクリックして,データを確認してみましょう(図 2).なおここでは「BasketBall」の名称のデータセットとして,変数名等も上記の図の通りにしました.

図 1.サンプルデータの一部

図 2.R でのデータ表示

    • 各グループごとの箱ひげ図を作成する方法

      • Rcmdr を用いて各国の身長の箱ひげ図を作成しましょう.Rcmdr で「グラフ」>「箱ひげ図」と選択し,ダイアログでは変数に「身長」,“層別のプロット”ボタンをクリックして,層別変数に「国」を選びます(図 3).最後に“OK”ボタンをクリックすると箱ひげ図が得られます(図 4).

      • ここで Rcmdr のスクリプトウィンドウを見ると『boxplot(身長~国, ylab="身長", xlab="国", data=BasketBall)』となっています.これを少し調整しましょう.

      • 横に伸びる箱ひげ図を書く場合は,引数として『horizontal = TRUE』を追加します.つまり『boxplot(身長~国, ylab="身長", xlab="国", data=BasketBall, horizontal = TRUE)』となります(図 5).

      • R の箱ひげ図ではデータによっては外れ値を検出しますが,これをさけるためには引数に『range = 0』を追加します.つまり『boxplot(身長~国, ylab="身長", xlab="国", data=BasketBall, horizontal = TRUE, range = 0)』となります.

      • 数値軸(今回はもともとは y 軸)の表示範囲を変えるときには ylim を使います.たとえば,『ylim = c(170,210)』とすると 170 から 210 を表示します.なお,x 軸の表示範囲は xlim を用います.この場合,項目数で調整する必要があります.3 項目なら c(0.5,3.5) など.ちなみに軸の大小逆転をする場合は,この範囲に対して単に始点と終点を逆に書くか,rev を使って逆にします.たとえば,c(3.5, 0.5) または rev(c(0.5,3.5)) となります.

図 3.箱ひげ図の設定

図 4.R での箱ひげ図表示

図 5.横に伸びる箱ひげ図

    • 各グループごとの四分位数を求める方法

      • Rcmdr で四分位数を求めてみましょう.Rcmdr で「統計量」>「要約」>「数値による要約…」を選び,画面(図 6)のように選ぶとグループごとの平均値,標準偏差(ただしこれは不偏分散の正の平方根になっています),分位数(分位点)を求めることができます(図 7).

      • ただしこの場合,学習指導要領と異なる四分位数になりますので,別の方法で四分位数を求めます.Rcmdr で「統計量」>「要約」>「層別の統計量…」を選び,画面(図 8)のように選ぶ(fivenum と入力することに注意)とグループごとの四分位数を求めることができます(図 9).

      • その他にも R を使っていれば,R のコンソール等を用いて『by (BasketBall$Height, BasketBall$Country, fivenum)』などと入力しても求められます.

図 6.数値による要約値の設定

図 7.数値による要約値の出力結果

図 8.層別の統計量の設定

図 9.層別の統計量の出力結果

練習:ある飲食店の昼食時間と夕食時間の顧客の違いを考えるために購入金額の比較を行うことになった.予想では夕食時間の方が購入金額のばらつきが大きく感じ,昼食時間よりも客単価は高いはずだが,平均の客単価を下げる一因になっているとあった.そこである日の昼食時間(12:00-13:00)と夕食時間(19:00-20:00)にそれぞれ調査を結果,次のデータを得た(仮想データ).このとき箱ひげ図を用いて昼食時間と夕食時間の分布を視覚的に比較,平均値や中央値,また四分位数,範囲,四分位範囲等を用いて,予想を検証しよう.

データを Rcmdr で入力し(図 A),箱ひげ図を求めた(図 B).図 B より夕食で 2 人の外れ値があることが分かった.以下,高校の「データの分析」に合わせ,外れ値がない形で示します.図 B' が外れ値を使わなかった箱ひげ図です(横に伸びるタイプに変えています).

図 A.データ

図 B.R での箱ひげ図表示

図 B'.横に伸びる箱ひげ図

次に時間別の平均値等(図 C)や四分位数(中央値を含む)も求めた(図 D).

図 C.サンプルデータの一部

図 D.R でのデータ表示

これらのことから次のことがわかった.グラフや範囲(レンジ)から夕食時間の方がばらつきが大きかった.しかし平均値や中央値はあまり差がなく,四分位範囲は昼食時間よりも夕食時間の方が小さく,散らばっているとは言えなかった.参考までに考察すると夕食時間の一部の人を除けば散らばりは昼食時間と夕食時間にはそこまで違いがあるとは言えず,予想は外れていたといえる.

注意:上述したように fivenum は指導要領の四分位数とは値が異なる場合があります.動作確認データ(図 A1)でみてましょう.このデータで,「数値による要約…」を使うと図 A2 となり,「層別の統計量…」を選ぶと図 A3 が得られます.これからみても標本の大きさが奇数の場合にはどちらも異なり(指導要領では Q1 は 3,Q3 は 9),偶数の場合は,「層別の統計量」の結果は指導要領の定義と一致します.奇数の場合は,quantile の Type = 6 が一致すると思いますが,少し面倒ですね.良い方法を探してみます.

図 A1.動作確認データ

図 A2.数値による要約での四分位数

図 A3.層別の統計量での四分位数

2011-2011 Copyright © Takeuchi Laboratory all rights reserved.