【解説】「ヒストグラムと散布図を描いてみよう」

今回の問題はRの初心者向けで、まずデータ読み込み、ヒストグラムと散布図を生成する問題でした。

問題は以下の通りです。

世界193カ国の殺人被害者のデータを読み込んで2種のヒストグラムと2種の散布図をPDFファイルに出力してください。

読み込む入力ファイルはHomicides_by_sex2.csvを使ってください。
こちらからダウンロード(homicide.zip)して解凍。
データはUNODC Homicide statisticsのHomicide by sexのエクセルファイルをコンマ区切りのCSV形式に変換したものです。

入力ファイルの最後には説明文など不要な行がありますので、うまくパラメータを使って読み込んでください。
"Males rate per 100,000"のカラムは10万人当たりの男性殺人被害者数、"Females rate per 100,000"は10万人当たりの女性殺人被害者数です。

出力するファイルはPDF形式でhomicide.pdfとしてください。1ページにつき1つの図で、全部で4つの図を描画してください。
下記の図を描画してください。

男性殺人被害者数のヒストグラム
1A. 男性殺人被害者数のヒストグラム
1B. 男性殺人被害者数の対数ヒストグラム(x軸を対数化してください)
binの数は30個。等間隔になっているbinで描画してください。目盛りはlog値になっていてもOKです。

女性と男性の殺人被害者数の散布図
女性をx軸、男性をy軸にして、各国を点として散布図を描画してください。
2A. 散布図
2B. 散布図(x軸、y軸共に対数表示)

対数は自然対数logでOKです。値には0も含まれており、log化できないものありますが、今回は警告などは無視してプログラムを作成してください。
各図にはメインタイトル、x軸ラベル、y軸ラベルを日本語でつけてください。

■解答方法
解答は作成したRのプログラムをtxtに変換し、アップロードしてください。

プログラムの例は以下の通りです。

### homicide.R ###

pdf('homicide.pdf')
par(family="Japan1GothicBBB")

h <- read.csv('Homicides_by_sex2.csv', nrow=193)
str(h)
f <- h$Females.rate.per.100.000
m <- h$Males.rate.per.100.000

### HISTOGRAM ###
hmain <- '男性殺人被害者のヒストグラム'
hxlab <- '10万人当たりの殺人被害者数'
hylab <- '殺人被害者の頻度'

hist(m, main=hmain, xlab=hxlab, ylab=hylab, breaks=30)
hist(log(m), main=hmain, xlab=paste(hxlab, '(対数)', sep=''), ylab=hylab, breaks=30)

### SEXUAL COMPARISION PLOT ###
pmain <- '世界各国の男女別殺人被害者'
flab <- '10万人当たりの女性殺人被害者数'
mlab <- '10万人当たりの男性殺人被害者数'

plot(f, m, main=pmain, xlab=flab, ylab=mlab)
plot(f, m, main=paste(pmain, '(対数表示)', sep=''), log='xy', xlab=flab, ylab=mlab)

ファイルはコンマ区切りなので、読み込みにはread.csv()を使います。1行目はタイトルで、データの行数は193なので、nrow=193でデータ行数を指定します。

日本語を表示させるにはフォントファミリーパラメータの設定が必要です。
par(family="Japan1GothicBBB")


1A. 男性殺人被害者数のヒストグラム

binの数はhist()関数のbreaksパラメータで指定することができます。


1B. 男性殺人被害者数の対数ヒストグラム

値を対数化するにはlog()関数を使えばいいですね。ただし、このやり方だと数値も対数化されているので、分かりにくいですが、今回の問題では数値が対数になっていてもOKです。

1Aのヒストグラムは左側(小さい値)に集まっていますが、1Bの方は対数かすることによって大きな二つの山が見えてきました。


2A. 散布図


2B. 散布図(x軸、y軸共に対数表示)

散布図の対数化は、hist()とは異なり、plot()関数のlogパラメータでlog=”xy”のように指定します。この場合、x軸とy軸が対数スケールとなります。

2Aでは点が扇形に広がっているように見えますが、2Bでは対角線に並んでいるように見えます。点のばらつきから推測すると、男性・女性殺人被害者数は対数スケールで扱う方がうまく行きそうだということが分かります。

データ解析の最初に行うべきことはデータの概要をつかむことです。ですから、最初にすることは、ヒストグラムや散布図を書いてみることです。データの雰囲気を捉えることが解析への重要なステップの一つなのです。