30
× TOKYO.R #27 ココココココココココ コココ

Tokyo r27

Embed Size (px)

DESCRIPTION

Tokyo.R 第27回 CodeIQとのコラボレーション解説編

Citation preview

Page 1: Tokyo r27

×

TOKYO.R #27

コラボレーション企画解説編

Page 2: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQって?4.どんな問題を出したのか5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 3: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQって?4.どんな問題を出したのか5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 4: Tokyo r27

• 名前 : 簑田 高志• Twitter ID :aad34210• ブログ :http://

pracmper.blogspot.com/• 出身地 : 熊本県• 仕事 : インターネット広告のアナリスト

自己紹介

Page 5: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQって?4.どんな問題を出したのか5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 6: Tokyo r27

• みなさん、すでにお気づきかと思いますが…

どうしてこの企画を【私が】やることになった?

• この方から

• この方に相談が行き…

• 猫にムチャぶりされた。

CodeIQ と TokyoR とでコラボしたらおもしろいよね

おお!いいっすね〜。 ( さて誰にふろうかなー?)

@ millionsmile

@ yokkuns

おお、人柱っすね。いいっすよー(安請け合い

@ aad34210

Page 7: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4.どんな問題を出したのか5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 8: Tokyo r27

CODEIQ ってどんなサイト? URL:https://codeiq.jp/

企業やオープンソースの団体などから質問を出してもらい、それをエンジニアが解答をして、出題者から評価してもらうというサイト。→ Tokyo.Rで問題をだすのは初めての試み。

Page 9: Tokyo r27

CODEIQ ってどんなサイト?https://codeiq.jp/ace/aad34210/q62

Page 10: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4.どんな問題を出したのか?5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 11: Tokyo r27

どんな問題をだしたのか?• R をさわり始めた人や、初心者の人たちに向けて、教科書の問

題に加えて、実践的なコードを書くほうが習得が早いはず。

• 実際の問題のねらいとしては、このように書いています。

■ 出題のねらい  Rを使いはじめて間もない方が、この問題をスムーズに解けると、ひと通りの Rの機能を使って解析ができるだろうということをねらいとしています。

• 問題を解答してくれるターゲットは、「 Rの初心者」です。

• なので、この問題を時間以内に解ける!という自信がある方は、R の初心者以上の方かも ?!

Page 12: Tokyo r27

どんな問題をだしたのか?(前提)

【前提】あなたは、ある大学の大学入試センターの職員です。今年の受験者数は 1000 人でした。手元にあるテスト結果データを使って、各教科の傾向を確認したいと考えています。

データは以下のような形式になっています。 ・ student_no : 受験番号 ・ city : 受験地域 ・ national_language : 国語 ・ math : 数学 ・ english : 英語 ・ society : 社会 ・ science : 理科

【データ格納場所】http://www.geocities.jp/ados/exam_results.csv

※ 課題は全部で 5 題出題されています。

Page 13: Tokyo r27

どんな問題をだしたのか?(問題文 1 )【課題 1 】データは CSV 形式になっています。 exam_results.csv をダウンロードし、解析環境の R への読み込んでください。 CSV を読み込んだの R のコードを提出してください。

【課題 2 】各教科の以下の統計量を知りたいです。 R を使って求めてください。計算に使った R のコードと計算結果を提出してください。

(1) 各教科の平均点(2) 各教科の標準偏差(3) 各教科の最高得点(4) 各教科の最低得点(5) 各教科の範囲

Page 14: Tokyo r27

どんな問題をだしたのか?(問題文 2 )【課題 3 】地域別の統計量も知りたいです。 R を使って求めて下さい。計算に使った R のコードと計算結果を提出してください。

(1) 地域別の各教科の平均点(2) 地域別の各教科の標準偏差(3) 地域別の各教科の最高得点(4) 地域別の各教科の最低得点(5) 地域別の各教科の範囲

【課題 4 】各教科の「平均点」「最高得点」「最低得点」「範囲」の統計量が一目でわかるようなグラフを描きたいです。どのようなグラフがわかりやすいでしょうか。描画に使った R のコードと描画したグラフを提出してください。

Page 15: Tokyo r27

どんな問題をだしたのか?(問題文 3 )【課題 5 】過去 5 年分でも同じようなデータがあることがわかりました。過去の傾向も同じように調べたいと思っています。複数年度を同じように見たい場合、 1 年ずつコードを書くのは面倒なため、 Funciton を使って簡略化したいと思っています。ファイル名は exam_results2011.csv 、 exam_results2010.csv .... となっており、このファイル名の年数の部分を変えるだけで、【課題 2 】の結果が表示されるようにしたいです。Function を作成し、そのコードを提出してください。

Page 16: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4.どんな問題を出したのか?5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 17: Tokyo r27

解答例(課題 1 )【課題 1 】データは CSV 形式になっています。 exam_results.csv をダウンロードし、解析環境の R への読み込んでください。 CSV を読み込んだの R のコードを提出してください。

【解答 1 】file <- "http://www.geocities.jp/ados/exam_results.csv"dt <- read.csv(file , header = TRUE , sep = ",")

head(dt)tail(dt)

• 直接インターネット上のファイルを取得する形で R に取り込んでいます。• もちろん、ダウンロードした上で、ローカルファイルパスを指定しても問題あ

りません。• Read.csv でデータを読み込みます。• ちゃんとデータが入っているかどうか確認するため、 head(),tail()関数でデー

タ内容を確認します。

Page 18: Tokyo r27

解答例(課題 2 )【課題 2 】各教科の以下の統計量を知りたいです。 R を使って求めてください。計算に使った R のコードと計算結果を提出してください。(1) 各教科の平均点(2) 各教科の標準偏差(3) 各教科の最高得点(4) 各教科の最低得点(5) 各教科の範囲【解答 2 】# 解答例 1summary(dt[,c(-1:-3)])apply(dt[,c(-1:-3)] , 2 , range)apply(dt[,c(-1:-3)] , 2 , sd)

# 解答例 2apply(dt[,c(-1:-3)] , 2 , max)apply(dt[,c(-1:-3)] , 2 , min)apply(dt[,c(-1:-3)] , 2 , mean)apply(dt[,c(-1:-3)] , 2 , sd)apply(dt[,c(-1:-3)] , 2 , range)

Page 19: Tokyo r27

解答例(課題 2 )【解答 2 】# 解答例 1summary(dt[,c(-1:-3)])apply(dt[,c(-1:-3)] , 2 , range)apply(dt[,c(-1:-3)] , 2 , sd)

# 解答例 2apply(dt[,c(-1:-3)] , 2 , max)apply(dt[,c(-1:-3)] , 2 , min)apply(dt[,c(-1:-3)] , 2 , mean)apply(dt[,c(-1:-3)] , 2 , sd)apply(dt[,c(-1:-3)] , 2 , range)

• 解答例 1 では、 Summary を使って一気に平均・最高点・最低点を出しています。足りていない統計値(範囲・標準偏差)は apply関数を使って別で出しています。

• 解答例 2 では、それぞれの統計量を apply関数を使って出しています。

Page 20: Tokyo r27

解答例(課題 3 )【課題 3 】地域別の統計量も知りたいです。 R を使って求めて下さい。計算に使った R のコードと計算結果を提出してください。(1) 地域別の各教科の平均点(2) 地域別の各教科の標準偏差(3) 地域別の各教科の最高得点(4) 地域別の各教科の最低得点(5) 地域別の各教科の範囲【解答例 1 】by(dt[,c(-1:-3)] , dt[,3] , summary)by(dt[,c(-1:-3)] , dt[,3] , range)by(dt[,c(-1:-3)] , dt[,3] , sd)

【解答例 2 】nl <- tapply(dt[,4] , dt[,3] , summary)nl_r <- tapply(dt[,4] , dt[,3] , range)nl_sd <- tapply(dt[,4] , dt[,3] , sd)mt <- tapply(dt[,5] , dt[,3] , summary)mt_r <- tapply(dt[,5] , dt[,3] , range)mt_sd <- tapply(dt[,4] , dt[,3] , sd)en <- tapply(dt[,6] , dt[,3] , summary)en_r <- tapply(dt[,6] , dt[,3] , range)en_sd <- tapply(dt[,4] , dt[,3] , sd)so <- tapply(dt[,7] , dt[,3] , summary)so_r <- tapply(dt[,7] , dt[,3] , range)so_sd <- tapply(dt[,4] , dt[,3] , sd)sc <- tapply(dt[,8] , dt[,3] , summary)sc_r <- tapply(dt[,8] , dt[,3] , range)sc_sd <- tapply(dt[,4] , dt[,3] , sd)

Page 21: Tokyo r27

解答例(課題 3 )【解答例 1 】by(dt[,c(-1:-3)] , dt[,3] , summary)by(dt[,c(-1:-3)] , dt[,3] , range)by(dt[,c(-1:-3)] , dt[,3] , sd)

【解答例 2 】nl <- tapply(dt[,4] , dt[,3] , summary)nl_r <- tapply(dt[,4] , dt[,3] , range)nl_sd <- tapply(dt[,4] , dt[,3] , sd)mt <- tapply(dt[,5] , dt[,3] , summary)mt_r <- tapply(dt[,5] , dt[,3] , range)mt_sd <- tapply(dt[,4] , dt[,3] , sd)en <- tapply(dt[,6] , dt[,3] , summary)en_r <- tapply(dt[,6] , dt[,3] , range)en_sd <- tapply(dt[,4] , dt[,3] , sd)so <- tapply(dt[,7] , dt[,3] , summary)so_r <- tapply(dt[,7] , dt[,3] , range)so_sd <- tapply(dt[,4] , dt[,3] , sd)sc <- tapply(dt[,8] , dt[,3] , summary)sc_r <- tapply(dt[,8] , dt[,3] , range)sc_sd <- tapply(dt[,4] , dt[,3] , sd)

• 解答例 1 では、 by関数を使って Cityごとに平均・最高点・最低点を出しています。足りていない統計値(範囲・標準偏差)は同じように By関数を使って別で出しています。

• 解答例 2 では、それぞれの統計量を apply関数を使って出しています。

Page 22: Tokyo r27

解答例(課題 4 )【課題 4 】各教科の「平均点」「最高得点」「最低得点」「範囲」の統計量が一目でわかるようなグラフを描きたいです。どのようなグラフがわかりやすいでしょうか。描画に使った R のコードと描画したグラフを提出してください。

【解答 4 】boxplot(dt[,c(4:8)] , main = "Boxplot")

• ここで解答してほしいのは「箱ひげ図」• デフォルトの箱ひげ図では「中央値」を表示します。平均値を計算して、 Plot

してください。(上記コードはデフォルトのまま利用しています)

Page 23: Tokyo r27

解答例(課題 5 )【課題 5 】過去 5 年分でも同じようなデータがあることがわかりました。過去の傾向も同じように調べたいと思っています。複数年度を同じように見たい場合、 1 年ずつコードを書くのは面倒なため、 Funciton を使って簡略化したいと思っています。ファイル名は exam_results2011.csv 、 exam_results2010.csv .... となっており、このファイル名の年数の部分を変えるだけで、【課題 2 】の結果が表示されるようにしたいです。Function を作成し、そのコードを提出してください。

Page 24: Tokyo r27

解答例(課題 5 )get_results <- function(file_name){

# 課題 1file <- paste("http://www.geocities.jp/ados/" , file_name , sep = "" , collapse = "")dt <- read.csv(file , header = TRUE , sep = ",")

# 課題 2print(summary(dt[,c(-1:-3)]))print(apply(dt[,c(-1:-3)] , 2 , range))

}

• Function を使って次回以降パラメータ(ファイル名)を指定するだけで計算結果を実行できるようにします。

• ポイントは、課題 1 のコードをどのように受け渡すか。• Paste関数を使ってファイル URL を組み立ててデータを取得しています。• それ以外のコードは Print関数を使って結果を表示させています。

Page 25: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4.どんな問題を出したのか?5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 26: Tokyo r27

解答例(解答ポイント)

• 課題 1 :ファイルの取り込み Read.csv関数を使って R に読み込む

• 課題 2 :統計量計算 集計関数( apply関数)を使って計算をします。 R に実装されている関数を利用すること。

• 課題 3 :カテゴリごとの統計量計算 Tapply 、 aggregate関数などを使って統計量を計算しましょう。

• 課題 4 :グラフ作成 Boxplot を使ってグラフを描画します。

• 課題 5 : Function作成 パラメータ設定を工夫すれば、後は課題で出したコードを Print 文で

囲むだけ

Page 27: Tokyo r27

目次

1.自己紹介2.どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4.どんな問題を出したのか?5. 解答例6. まとめ7. おまけ

※ スクリーンショットや機能等は Mac 版となります。

Page 28: Tokyo r27

おまけ (1) :参考資料■参考資料 「はじめての R 」: Tokyo.R 第 18回資料

http://www.slideshare.net/aad34210/tokyo-r18

「はじめての R 」: Tokyo.R 第 21回資料http://www.slideshare.net/aad34210/tokyo-r21

「はじめての R 」: Tokyo.R 第 24回資料http://www.slideshare.net/aad34210/tokyo-r24-rgraphtutorial

Page 29: Tokyo r27

おまけ (2):参加者募集中!

まだまだ挑戦者募集中です!10月 29日(月) AM10: 00まで!時間が足りなくて断念したり、解答結果が未送信な方もいらっしゃいますので今日の解説を覚えてもらって準備してください。

10月 20日(土) 10 時半時点

Page 30: Tokyo r27

ご清聴ありがとうございましたm(___)m