コンテンツへスキップ

統計R言語:箱ひげ図(Boxplot)の作り方

    統計R言語

    学術論文をジャーナルなどに送る際によく求められるのが、箱ひげ図(Boxplot)ではないでしょうか?データの分布を一目見てわかるように視覚化することができるので、非常によく使われる図ですよね。箱ひげ図は英語でボックスプロットと呼ばれ、boxplot()のコードで作成できます。

    統計言語Rでこの図を作成するのはとても簡単で、基本パッケージに入っている関数を使ってすぐに作成することができますが、括弧内に入れるベクトルの取り方がちょっとややこしい気がするので、以下説明していきたいと思います。

    このR言語シリーズでは、現在イギリス教育テクノロジー研究所の博士課程でPhD取得を目指す筆者が、統計やデータ分析で使っているR言語のメモを共有しています。

    箱ひげ図(Boxplot)の作り方の基本

    データが1つの場合の箱ひげ図(Boxplot)

    データが1つの場合、Rで箱ひげ図(Boxplot)を作成する方法はとても簡単です。例えば、以下のような数値のデータがあるとします。

    # サンプルデータ
    data <- c(10, 15, 20, 25, 30, 35, 40, 45, 50, 55)

    これを視覚化したい時は、以下のようにすれば、箱ひげ図を表示させることができます。

    # boxplotを作成
    boxplot(data)

    データが2つ以上の場合の箱ひげ図(Boxplot)

    データが2つ以上のグループになっている場合は、以下のようにします。

    # サンプルデータ
    data1 <- c(10, 15, 20, 25, 30, 35, 40, 45, 50, 55)
    data2 <- c(20, 25, 30, 35, 40, 45, 50, 55, 60, 65)
    data3 <- c(30, 35, 40, 45, 50, 55, 60, 65, 70, 75)

    上記の3つのデータを並べて視覚化したい時は、以下のようにすれば、箱ひげ図を表示させることができます。

    # boxplotを作成
    boxplot(data1, data2, data3)

    こんなに単純なのに、これ(↑)に触れてくれていない記事が多くて私は最初苦労しました(笑)。

    箱ひげ図(Boxplot)の作り方の応用

    R言語は本当に色々なことをすることができて便利なツールですが、箱ひげ図(Boxplot)についてもさまざまなオプションがあり、より詳細なカスタマイズが可能です。

    リストを使って複数のデータセット並べて表示させる

    上記と同様に、複数のデータセットを一つの図に並べて表示させる場合、リストを使う方法もあります。

    # サンプルデータ
    data1 <- c(10, 15, 20, 25, 30, 35, 40, 45, 50, 55)
    data2 <- c(20, 25, 30, 35, 40, 45, 50, 55, 60, 65)
    data3 <- c(30, 35, 40, 45, 50, 55, 60, 65, 70, 75)

    この3つのデータを一つの図として表示する場合は、まずこの3つをまとめてリストにしてしまいます。

    # リストを作成
    data_list <- list(data1, data2, data3)

    それからこのリストを図として視覚化します。できてくる表は同じですが、データの形態によってはこちらのやり方の方が便利な場合もあるので一応載せておきます。

    # boxplotを作成
    boxplot(data_list)

    グループごとにデータを表示する

    今度は、一つのデータをグループに分けて、グループごとに箱ひげ図を表示させる場合について考えてみます。先ほど同様以下のようなデータがあるとします。

    # サンプルデータ
    data <- c(10, 15, 20, 25, 30, 35, 40, 45, 50, 55)

    このデータに含まれる一つ一つの数値についてどのグループに所属するのかを示しながら対応するベクトルを以下のように作ります。

    # グループを表す要因を作成
    groups <- c("A", "A", "B", "B", "B", "A", "B", "A", "A", "B")

    つまりサンプルデータの最初の「10」と「15」はグループA、3つ目から5つ目の「20」「25」「 30」はグループBに属するという意味になります。 これをグループごとの箱ひげ図として視覚化するのであれば以下のようにします。

    # boxplotを作成
    boxplot(data ~ groups)

    これでグループAとグループBそれぞれの図が表示されます。

    箱ひげ図(Boxplot)の見出しとラベル

    見出しのつけ方

    作成した図に見出しをつけたい場合は、以下のように見出しを指定することができます。見出しは図の上の部分に表示されます。

    # boxplotを作成、見出しを表示
    boxplot(data, main = "見出しの名前")

    見出しのサイズ

    さらに見出しのサイズを変えたい場合は、以下のようにします。ジャーナルに提出した原稿で見出しが見にくいなどと言われることもあるようなので、文書に挿入したときにバランスの良いサイズにしておきたいですよね。以下の例では「3」としましたが、この数値を変えて文字サイズを変えることができます。

    # boxplotを作成、見出しを表示、見出しのサイズを指定
    boxplot(data, main = "見出しの名前", cex.main = 3)

    作成した図のデータのラベル

    複数の図を並べて表示した場合は、そのそれぞれが何を表すものなのかを示すラベルを表示することができます。

    # boxplotを作成、ラベルを表示
    boxplot(data1, data2, data3, names = c("Data1", "Data2", "Data3"))

    ラベルのサイズ

    さらにラベルのサイズを指定したい場合は、以下のようにすればサイズを変えることができます。こちらも例として「2」というサイズにしてみましたが、数値を変えればサイズを変えることができます。

    # boxplotを作成、ラベルを表示、ラベルのサイズを指定
    boxplot(data1, data2, data3, names = c("Data1", "Data2", "Data3"), cex.axis = 2)

    まとめ

    いかがでしたでしょうか?これで基本的な箱ひげ図(Boxplot)は作れるのではないかと思います。Rの説明にはなんだかややこしいものもありますが、やってみるととても単純なことも多いので、うまく利用してみてくださいね。