Rの複数グラフ表示でヒストグラムの適切な階級幅を見つける(par,mfrow,mfcol)

ヒストグラムの階級幅をどれくらいにするか。小さすぎるとばらつきの影響が出てしまうし、大きすぎると意味が読み取りづらくなってしまいますよね。

パラメタを変えながら何度もhist関数を実行し、表示結果を目で見て判断というのが一般的でしょうか。

どうせなら、いっぺんに描画してまとめて比較しましょう、というやり方です。

# 正規分布に従う乱数を1000個
x <- rnorm(1000)
 
# 表示領域を3行×2列に分割
par(mfrow=c(3,2))
 
# 階級幅の数を変えながら複数のヒストグラムを描画
for (n in c(5,10,15,20,25,30)){
  hist(x,breaks=seq(min(x),max(x),length=n+1),main=paste(n,"分割"))
}
 
上記の表示結果だと、「20分割まで行っちゃうと単峰性が崩れるから、15分割くらいかな」みたいな感じでしょうか。

上記のように mfrow=c(3,2) と指定すれば3行×2列を行方向に並べる、mfcol=c(3,2) と指定すれば3行×2列を列方向に並べる、となります。

length = n+1 となっているのは、5個の階級に分けるためには、6個の境界が必要だからですね。

[蛇足]
関数名やパラメタ名を覚えるにはその語源を知るといいですよね。parはパラメタ(parameter)、rowは行(row)、colは列(column)というのはよさそうですが、mfが何の略だか分からない。「matrix figure」なんじゃないかと個人的には思っていますが、でたらめかも。コメントで教えてくれた人には10ガバスあげます。

コメント

このブログの人気の投稿

Rのグラフで軸の目盛りの刻み幅を変更する方法

Rで繰り返しを含む数列の生成(rep関数、seq関数)

reorderを使ってggplotの棒グラフの並び順を降順にする方法