今回はデータ分析の基本! ヒストグラムについてやってくよ‼
ヒストグラムは値の分布を知ることができる基本中の基本である分析です。
値の分布を把握して、データの傾向を掴みましょう。
ただ、ヒストグラムを描くだけではつまらないので
今回は見た目が良いかっこいいヒストグラムを描きていきます!
対象データ
まず、分析をするにあたってデータが必要になります。
今回はKaggleで公開されているデータセットを使っていきましょう。
ヒストグラムの例で良く用いられる身長のデータが入っている下記のデータセットを用います。
データセットの中身は過去のオリンピックに出場した選手のデータになっています。
データセットの中身は下記のようになっています。
- ID – 各アスリート固有の番号
- 名前– 選手の名前
- 性別– M または F
- 年齢– 整数
- 高さ– センチメートル
- 重量– キログラム
- チーム– チーム名
- NOC – 国内オリンピック委員会の 3 文字コード
- ゲーム– 年と季節
- 年– 整数
- シーズン– 夏または冬
- 都市– 開催都市
- スポーツ– スポーツ
- イベント– イベント
- メダル– ゴールド、シルバー、ブロンズ、または NA
性別と身長のデータのみを抽出してヒストグラムで分布を見てみましょう!
身長の分布を性別ごとにしたヒストグラムを描写していきたいと思います。
CSV読み込み
まずは、データセットを読み込んでみましょう。
#CSV取り込み
AthleteAll <- read.table("athlete_events.csv",
sep = ',',
header = TRUE,
stringsAsFactors = FALSE)
必要なデータを抽出
次に性別と身長を抽出しましょう。
3列目と5列目が性別と身長になります。
#性別と身長のみ抽出
AthleteHeight <- AthleteAll[,c(3, 5)]
ヒストグラム描写
ひとまず、身長のデータを用いてスタンダードなヒストグラムを表示させましょう。
hist関数を用いると簡単にヒストグラムを表示させることができます。
このぐらいの階数だと結構きれいに正規分布に従っていますね。
#身長のヒストグラム
hist(AthleteHeight$Height)
ヒストグラム描写 -装飾-
hist関数で色付きのヒストグラムを描写してみましょう。
ついでに階級の分割数を多くしてみましょう。
#色、分割数を変えてタイトルをつける
hist(AthleteHeight$Height, col="steelblue", breaks=50)
ヒストグラム描写 -ggplot2-
hist関数ではおしゃれなヒストグラムを作るには限界があります。
そこで、ggplot2を用いてヒストグラムをおしゃれにしていきます。
まずは、ライブラリを読み込みます。
#ライブラリggplot2を使って描く
library(ggplot2) #ライブラリの読み込み
ggplot2を用いると色々なオプションを使ってグラフをかっこよくすることができます。
色や透明度をうまく調節すれば良い感じになります‼
#引数にテーブル指定
ggplot(AthleteHeight)+ #データフレームの指定
geom_histogram( aes(Height), #描画の対象となる変数
fill="steelblue", #塗り色の指定
alpha=0.6, #透明度の指定
binwidth=1 ) #階級の幅
階数の幅が狭いとこのように歪な形になっていきますね。
ヒストグラム描写 -密度プロット-
ヒストグラムでデータの分布を調べる際に度数ではなく、密度で見てみたいときがあると思います。
そのようなときも、ggplot2で描写することができます。
#密度プロットを描く
ggplot(AthleteHeight)+ #データフレームの指定
geom_density( aes(Height) ) + #描画の対象となる変数
theme(axis.text=element_text(size=12), #文字サイズの指定
axis.title=element_text(size=14,face="bold"))
オプションを追加すれば面積に色を塗ることもできますよ!
ヒストグラム描写 -二つのグラフ-
身長の分布を性別で分けて表示してみましょう。
男性の身長も女性の身長も正規分布に従っていそうですね!
#性別で色分けしてヒストグラムを描く
ggplot(AthleteHeight)+ #データフレームの指定
geom_histogram( aes(x=Height, #描画の対象となる変数
fill=Sex), #塗り分けの対象となる変数
position="identity", #重ねて描くという指定
alpha=0.5, #透明度の指定
binwidth=1 ) #階級の幅
おわりに
いかがでしょうか。ggplot2を使うことでかっこいいヒストグラムを作ることができたと思います。
資料に添付するときなどに良いですね!
GitHubにおまけのコードもありますので、ぜひ見ていってください。