Hatena::ブログ(Diary)

スピード冒険野郎の操縦席 RSSフィード

2014-08-22

2014-07-02

ブログを引越ししました

ブログ内容をWordPressのサイトに引越ししました。一部の日付が狂っていますが、元ブログのすべての記事をハンググライダーとデータマイニングに移行しました。

その他のアクセスポイントは...

アスペルガー症候群

データ解析のスライド

フェイスブックページ

ツイッター@nkawagashira

2014-05-25

アメリカでもっとも被害の大きい災害は?

CourseraのReproducible Researchという講座の課題でデータ解析をした。

アメリカでもっとも被害の大きい災害は?

https://rpubs.com/kawagashira/harmfuldisaster

人的被害ではトルネードが最悪だが、経済的損失では洪水が最悪であった。

Rpubsに登録して初めての解析結果。

2014-05-11

アメリカ発MOOCに見るデータリテラシーの基礎講座

MOOC

私は最近MOOCというオンライン講座でデータサイエンスを学んでいる。MOOCとはインターネットを通じてアメリカ等の大学の授業を受けることができるサービスだ。中でも有名なのが、Courseraで、私はCourseraにハマっている。去年からはじめて、今まで7つの授業を受けた。

CourseraのSpecialization

今まで私が受けてきたのは、一個一個別の内容の授業を受けてきた。だが最近、Courseraでは授業を幾つかのまとめたものができた。名前はSpecializationといって、一つの学問領域を幾つかの講座に分けて、提供しているものだ。

私はデータ解析が専門なので、現在Data ScienceというSpecializationに挑戦していて、すでに中の3つの講座を取得し、現在、もう2つに挑戦中だ。

このSpecializationにもう一つ面白そうなものがある。それは、Reasoning, Data Analysis and Writingだ。これは、Duke大学から提供されているもので、内容は (1)議論の方法、(2)データ解析、(3)英作文となっている。

これからの時代の基礎教育とは

私は、従来の教育については常に疑問を持っており、どんな基礎教育が一般の人に必要なのかについて時々考えることがある。学問には様々な分野があり、どれも重要そうに見える。小・中学校では、国語、算数、理科、社会、図工などにわかれているが、本当に、この分け方は正しいのだろうか。この競争の激しい時代に産業革命のために決められた学問分野の分け方が通用するのだろうか、常に疑問に思っている。

データサイエンスは基礎学問となるか

とりあえず、私の専門であるデータ解析について考えてみたいと思う。データ解析が果たして、基礎教育となるのであろうか。ビッグデータというバズワードが巷に溢れているか単なるブームなのか。また、データ解析が本当に基礎学問になるのであれば、どのような形で有るべきなのか。

データリテラシー講座

私は上記のReasoning, Data Analysis and Writingを見た時、まさにこれがデータの基礎教育ではないかと思った。

(1)のReasoningでは議論の方法を学ぶものであり、国語的言語能力と共に算数(数学)の論理的能力が必要となる。

(2)のData Analysisでは、算数(統計)的考えと図工(工学)的能力、更には社会現象を見る能力がひつようとされる。

(3)は国語(英語)の能力である。

データという一本筋の概念により、従来の国語、算数、理科、社会等を横断的に必要とする授業となっている。この講座では従来の文化系・理科系等の区別も意味をなさない。もし、データの学問を一般人に基礎教育として教えるのであれば、この講座のような形になるのではないかと思う。まさにデータリテラシーと言う言葉がふさわしいと思う。データリテラシーとは、ITリテラシーとも全く異なる。

データリテラシーが必要な時代が来る

データジャーナリズムという言葉を聞いたことがあるだろうか。データを使って、ニュースを作ることらしい。データの取得コストがゼロに近づくと誰でもデータを使って解析をすることができるようになってくる。誰でも情報発信するのと同じ感覚だ。全員がデータ解析をする必要なないが、データをどのように見るかなどの読み書きそろばんと同じレベルで基本的な作法を知る必要がある時代が来るかもしれない。

このデータジャーナリズムの基礎としてもこの講座が有用であると思う。ジャーナリスト出身者は、文章能力は高いが、データ解析能力が弱いので、データ解析を学ぶ必要がある。また、データ解析出身者は文章能力が一般に低いので、文章能力を高める必要がある。

私はとにかく驚いたのは、アメリカという国は常に時代の先を行く考えが存在し、その考えを具体化させ、世に問うているという事実だ。

2014-04-08

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

今回の問題は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. 男性殺人被害者数のヒストグラム

f:id:infoarchitect:20140408163457p:image

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


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

f:id:infoarchitect:20140408163456p:image

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

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


2A. 散布図

f:id:infoarchitect:20140408163455p:image


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

f:id:infoarchitect:20140408163453p:image

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

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

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