この記事では、Rプログラミングでヒストグラムを作成するための hist() 関数の使い方を、多数の例を参考にして学びます。
ヒストグラムは、Rプログラミング言語のhist()
関数を使って作成することができます。
組み込みのデータセットであるairquality
を使用してみましょう。
> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
154件の観測値を持つ華氏(degree Fahrenheit)の温度パラメータを使用します。
例1:シンプルなヒストグラム
Temperature <- airquality$Temphist(Temperature)
上では、等間隔で改行された9つのセルがあることがわかります。
プロットの見え方をコントロールするために、追加のパラメータを渡すことができます。 これらについては、ヘルプセクションの?hist
をご覧ください。
よく使われるものとしては、main
xlab
ylab
xlim
ylim
col
で色を指定するなどです。
さらに、引数のfreq=FALSE
を使えば、頻度の代わりに確率分布を得ることができます。
例2:パラメータを追加したヒストグラム
# histogram with added parametershist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="darkmagenta",freq=FALSE)
Y軸のラベルが頻度ではなく密度になっていることに注意してください。
hist()の戻り値
hist()
関数は、6つのコンポーネントを持つリストを返します。
> h <- hist(Temperature)> h$breaks 55 60 65 70 75 80 85 90 95 100$counts 8 10 15 19 33 34 20 12 2$density 0.010457516 0.013071895 0.019607843 0.024836601 0.043137255 0.044444444 0.026143791 0.015686275 0.002614379$mids 57.5 62.5 67.5 72.5 77.5 82.5 87.5 92.5 97.5$xname "Temperature"$equidist TRUEattr(,"class") "histogram"
クラス histogram
のオブジェクトが返されていることがわかります。
-
breaks
区切りのある場所 -
counts
そのセルに入るオブザベーションの数 -
density
セルの密度 -
xname
– x 引数名、 -
equidist
– 区切りが等間隔であるかどうかを示す論理値。
。 mids
– セルの中点、
これらの値を使ってさらに処理を行うことができます。
例えば、次の例では、戻り値を使って、text()
関数を使って各セルの上にカウントを配置しています。
例 3: ヒストグラムの戻り値をtext()を使ったラベルに使用する
h <- hist(Temperature,ylim=c(0,40))text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
区切りの数を定義する
breaks
の引数で、ヒストグラムに必要なセルの数を指定できます。
Rはこの提案を考慮して、最適なセル数を計算します。 以下は、同じデータでセルの数を変えた2つのヒストグラムです。
例 4: 異なるブレイクを持つヒストグラム
hist(Temperature, breaks=4, main="With breaks=4")hist(Temperature, breaks=20, main="With breaks=20")
上の図では、実際にプロットされたセルの数が指定した数よりも多いことがわかります。 これにより、不均等な間隔でヒストグラムをプロットすることが可能になります。
例 5: 不均等な幅のヒストグラム
hist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="chocolate",border="brown",breaks=c(55,60,70,75,80,100))
となります。