4.5 Histogram, Densityplot

量的変数の場合,Histogram(ヒストグラム)・またはDensity plot(デンシティプロット)が便利である. Densityとは密度の意味で,経験的(観測データの意味)な密度関数の推定した結果を可視化できる.

また,これらは多変数の場合にも有効である.それぞれのヒストグラムを重ねて描くことで, 分布の違いを視覚的に捉えることができる.

4.5.1 データの準備

サンプルとして扱うデータを生成しておく.

set.seed(20)
x <- rnorm(n=2000, mean=10, sd=3) # N(10, 3)の正規分布からのサンプルを1000発生させる
summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9996  7.9069  9.9540  9.9286 11.9352 18.7963

4.5.2 Histogram

ヒストグラムはhistという関数を利用することで簡単に作成できる.breaksという引数に正の整数をしていすることで ビン数を指定することができる.また,rgb()関数はrgb(red, green, blue, transparensy)とそれぞれ0~1の数値を指定することで 色を指定することができる(transparensyは透明度の意味).border=FALSEとすることでビンの外枠の線を透明にしている.

hist(x, breaks=20, col=rgb(0.2,0.8,0.5,0.5), border=FALSE)


Exercise 4.2 (histogram) 以下のコードを実行して,それぞれの引数の意味を確かめよ.

set.seed(20)
x <- rnorm(n=2000, mean=10, sd=3) # N(10, 3)の正規分布からのサンプルを1000発生させる
hist(x, breaks=30, col=rgb(0.5,0.2,0.5,0.7), border=TRUE)

4.5.3 ヒストグラムを利用する際の注意点

ヒストグラムにおける縦の棒をbin(ビン)と呼び,その幅をbin幅(bin width)と呼んだりする. プロットする際には,ビン幅またはビン数を明示的に指定することを推奨する. 数や幅を変えると図からウケる印象が全く変わってしまうこともあるため,注意が必要である. 必要以上に細かくしても,必要以上に粗くしても解釈がばらついてしまう可能性がある.

ggplotで作成する場合は以下のようにする.少しややこしいがggplotではcolorでビンの外枠の色を指定し, fillで塗りつぶす色を指定する. binsでビン数を指定しており,これはplotにおけるbreaksと同じ意味である.

ggplot(data.frame(x=x), aes(x=x)) +
  geom_histogram(bins=20, fill="#404080", alpha=0.8, color="#e9ecef")

また,ggplotではビン幅を指定することが簡単にできる.その場合はbinwidthという引数を利用すれば良い. 以下ではbinwidth=0.2とし,ビン幅を0.2と指定している.

ggplot(data.frame(x=x), aes(x=x)) +
  geom_histogram(binwidth=0.2, fill="#404080", alpha=0.8, color="#e9ecef")


Exercise 4.3 (16進数のカラーコードを使う) Rに限らず,プログラミングやWeb制作では16進数のカラーコード(Hex color code)を利用することがある. 例えば,下記のようなサイトには,実際の色とカラーコードを確認することができる.

https://htmlcolorcodes.com/

さて,既に紹介した以下のヒストグラムのコードのうち,ビンを塗りつぶす色を指定するfillという引数に任意のカラーコードを指定して 色を変えたヒストグラムを作成せよ..

ggplot(data.frame(x=x), aes(x=x)) +
  geom_histogram(bins=20, fill="[ここにカラーコードを指定する]", alpha=0.8, color="#e9ecef")