[R]ヒストグラムを描くhist関数

サイト移転のお知らせ

移転先はこちらです。
[R]ヒストグラムを描くhist関数
新たな記事は移転先に掲載しておりますので、そちらをご確認ください。

スポンサードリンク

ヒストグラムとは

ヒストグラムは作成した度数分布表を視覚的に捉えるための棒グラフです。

 

度数分布表はデータを整理して全体観を把握しやすくするためにとても有効な手段でしたが、直感的にわかるというものではありませんでした。

 

ヒストグラムは情報量としては圧倒的に少ないですが、度数分布表よりもわかりやすい情報を与えてくれます。

 

ヒストグラムにはもうひとつの役割があって、データがどのような確率分布に従っているかを予測するための手段としても使われます。

Rの標準関数でヒストグラムを描く

Rの作図関数を使うと度数分布表を作成することなくヒストグラムを描くことができます。

 

確率統計の学習の中では基本的に「度数分布表 → ヒストグラム」といった順番で説明されるのでそのとおりに説明していましたが、Rではデータからすぐにヒストグラムを作成することが可能です。

 

Rではベクタに hist関数を使うと自動的に階級幅の計算などを行なってヒストグラムを表示してくれます。

x <- rnorm(50, mean=30, sd=5)
hist(x)

hist関数で作成したヒストグラム

 

ヒストグラムの作成原理がわかっていれば hist関数を使ったほうが作業量を減らすことができるので、オススメの方法です。

ヒストグラムを少しだけ加工する方法

ヒストグラムでは視覚的にデータがどのような形をしているかを知ることができます。

 

ただし、単にヒストグラムを作成しただけではデータの大まかな最小最大やデータの分布を知ることぐらいしか出来ません。

 

より有用なヒストグラムを作成するには、少し手を加えて人に伝えるためのグラフに仕上げていきます。

 

ここではRの hist関数を使って作成したヒストグラムに手を加えていく方法について説明していますが、Excelなどで作成したヒストグラムをパワーポイントで公開する場合でも同じようにしてヒストグラムに手を加えればより有用なヒストグラムが出来上がります。

 

この方法はヒストグラムに手書きで加工しても通じる方法なので覚えておいて損はないでしょう。

 

 

ヒストグラムに代表値を示す直線を追加する

 

直線を追加するには abline関数の vオプションと色を変える colオプションを使います。

x <- rnorm(50, mean=30, sd=5)
hist(x)
abline(v=mean(x), col="red")
abline(v=median(x), col="blue")

代表値を入れたヒストグラム

 

赤い線が平均値、青い線が中央値です。

 

さらに具体的な平均値や中央値を表示するには legend関数や text関数を組み合わせます。

 

legend関数は直線の具体的な値を凡例としてグラフの任意の場所に設置することができます。

 

text関数はグラフの任意の場所に文字を入力するための関数です。

 

今回は legend関数を使って凡例として代表値を表示します。

legend(locator(1), legend=c(mean(x), median(x)), lwd=1, col=c("red", "blue"))

凡例付きヒストグラム

 

実行するとグラフの画面上で設置する位置をマウスで選択することができるので、凡例を設置したい場所をクリックして凡例を表示させます。

 

legend関数について補足します。

 

legendオプションは表示させたい凡例の内容で、今回は平均値と中央値の2つだったので c関数で囲っています。

 

lwdオプションは凡例の内容の前に表示する線の太さを示していて、これを指定しない場合は0として処理されてしまうので線が描かれません。

 

colオプションは凡例の内容の前に表示する線の色を示していて、 legendオプションに対応した順番で記述します。

 

 

凡例に使用する平均値や中央値の小数点以下が細かすぎると思えば、 round関数などを使って小数点第2位で丸めることで更に見やすさを強調できます。

hist(x)
abline(v=mean(x), col="red")
abline(v=median(x), col="blue")
repval <- round(c(mean(x), median(x)), digits=2)
legend(locator(1), legend=repval, lwd=1, col=c("red", "blue"))

凡例付きヒストグラム改良版

 

 

ヒストグラムに散布度を示す直線を追加する

 

散布度は基本的に単位が同じ標準偏差を取り扱います。

 

分散ではデータの単位を2乗したものが単位になっているので、同じヒストグラム上に描くのは不適切なためです。

 

もう一つの方法は四分位数を描く方法があります。

 

四分位数を書く場合には中央値(第2四分位数)も一緒に描くとデータをイメージしやすいヒストグラムになるでしょう。

 

線の引き方は代表値の場合と同じように abline関数を使用し、具体的な数値は legend関数を使用します。

hist(x)
vline <- c(mean(x), mean(x)+sd(x), mean(x)-sd(x))
abline(v=vline, col=c("red", "green", "green"))
lege <- c(round(mean(x), 3), expression(bar(x) %+-% "1SD"))
legend(locator(1), legend=lege, lwd=1, col=c("red", "green"))

凡例付きヒストグラム改良版2

 

線を引く値が少し複雑なので予め vlineという変数に保存しておきます。

 

同じ理由で、凡例に使う文章も legeという変数に保存しておきます。

 

expression関数は初めて使用しますが、これは凡例に数式の形で文字を表示させるときに使います。

 

スポンサードリンク

「[R]ヒストグラムを描くhist関数」と同じカテゴリーのページ

[R]無作為抽出をする
無作為抽出とはなにか? Rで無作為抽出をするにはsample関数を使う
[R]統計学的なデータの種類の扱い
Rで統計的(数学的)なデータの種類をどのように扱うかという話。
[R]度数分布表を作る方法
Rでは度数分布表を作る関数が用意されていない。 ここではRで度数分布表を作成するための方法と、度数分布表を自動で作成する関数を紹介している。
[R]代表値を求める
Rで代表値を求めるための方法。 平均値はmean、中央値はmedian、最頻値はtableを使って求めることができます。 基本的な使い方と補足説明を入れてあります。
[R]散布度を求める
散布度をRで求める方法。 散布度にはいろいろな基準があるが、Rはほとんどすべてを網羅している。
[R]箱ひげ図を描く
Rではboxplot関数を使って、箱ひげ図を直接綺麗に描くことができる。 Rで箱ひげ図を描くための方法を説明する。
[R]正規分布に従う2次元データの作り方
Rで擬似データとして、正規分布に従う2次元データを作成する方法