Tokyo r27

769 views

Published on

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

Published in: Technology
  • Be the first to comment

Tokyo r27

  1. 1. × コラボレーション企画 解説編TOKYO.R #27
  2. 2. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQって?4. どんな問題を出したのか5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  3. 3. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQって?4. どんな問題を出したのか5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  4. 4. 自己紹介• 名前 :簑田 高志• Twitter ID :aad34210• ブログ :http://pracmper.blogspot.com/• 出身地 :熊本県• 仕事 :インターネット広告のアナリスト
  5. 5. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQって?4. どんな問題を出したのか5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  6. 6. どうしてこの企画を【私が】やることになっ た?• みなさん、すでにお気づきかと思いますが…• この方から CodeIQとTokyoRとでコラボしたらおもしろい よね @millionsmile• この方に相談が行き… おお!いいっすね〜。(さて誰にふろうか なー?) @yokkuns• 猫にムチャぶりされた。 おお、人柱っすね。いいっすよー(安請け合い @aad34210
  7. 7. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4. どんな問題を出したのか5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  8. 8. CODEIQってどんなサイト? URL:https://codeiq.jp/企業やオープンソースの団体などから質問を出してもらい、それをエンジニアが解答をして、出題者から評価してもらうというサイト。→ Tokyo.Rで問題をだすのは初めての試み。
  9. 9. CODEIQってどんなサイト? https://codeiq.jp/ace/aad34210/q62
  10. 10. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4. どんな問題を出したのか?5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  11. 11. どんな問題をだしたのか?• Rをさわり始めた人や、初心者の人たちに向けて、教科書の問 題に加えて、実践的なコードを書くほうが習得が早いはず。• 実際の問題のねらいとしては、このように書いています。 ■出題のねらい Rを使いはじめて間もない方が、この問題をスムーズに解け ると、ひと通りのRの機能を使って解析ができるだろうという ことをねらいとしています。• 問題を解答してくれるターゲットは、「Rの初心者」です。• なので、この問題を時間以内に解ける!という自信がある方 は、Rの初心者以上の方かも?!
  12. 12. どんな問題をだしたのか?(前提)【前提】あなたは、ある大学の大学入試センターの職員です。今年の受験者数は1000人でした。手元にあるテスト結果データを使って、各教科の傾向を確認したいと考えています。データは以下のような形式になっています。 ・student_no : 受験番号 ・city : 受験地域 ・national_language : 国語 ・math : 数学 ・english : 英語 ・society : 社会 ・science : 理科【データ格納場所】http://www.geocities.jp/ados/exam_results.csv ※ 課題は全部で5題出題されています。
  13. 13. どんな問題をだしたのか?(問題文1)【課題1】データはCSV形式になっています。exam_results.csvをダウンロードし、解析環境のRへの読み込んでください。CSVを読み込んだのRのコードを提出してくだ【課題2】各教科の以下の統計量を知りたいです。Rを使って求めてください。計算に使ったRのコードと計算結果を提出してください。(1) 各教科の平均点(2) 各教科の標準偏差(3) 各教科の最高得点(4) 各教科の最低得点(5) 各教科の範囲
  14. 14. どんな問題をだしたのか?(問題文2)【課題3】地域別の統計量も知りたいです。Rを使って求めて下さい。計算に使ったRのコードと計算結果を提出してください。(1) 地域別の各教科の平均点(2) 地域別の各教科の標準偏差(3) 地域別の各教科の最高得点(4) 地域別の各教科の最低得点(5) 地域別の各教科の範囲【課題4】各教科の「平均点」「最高得点」「最低得点」「範囲」の統計量が一目でわかるようなグラフを描きたいです。どのようなグラフがわかりやすいでしょうか。描画に使ったRのコードと描画したグラフを提出してください。
  15. 15. どんな問題をだしたのか?(問題文3)【課題5】過去5年分でも同じようなデータがあることがわかりました。過去の傾向も同じように調べたいと思っています。複数年度を同じように見たい場合、1年ずつコードを書くのは面倒なため、Funcitonを使って簡略化したいと思っています。ファイル名はexam_results2011.csv 、exam_results2010.csv .... となっており、このファイル名の年数の部分を変えるだけで、【課題2】の結果が表示されるようにしたいです。Functionを作成し、そのコードを提出してください。
  16. 16. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4. どんな問題を出したのか?5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  17. 17. 解答例(課題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()関数でデータ 内容を確認します。
  18. 18. 解答例(課題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)
  19. 19. 解答例(課題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関数を使って出しています。
  20. 20. 解答例(課題3)【課題3】地域別の統計量も知りたいです。Rを使って求めて下さい。計算に使ったRのコードと計算結果を提出してください。(1) 地域別の各教科の平均点(2) 地域別の各教科の標準偏差(3) 地域別の各教科の最高得点(4) 地域別の各教科の最低得点(5) 地域別の各教科の範囲【解答例1】 【解答例2】 nl <- tapply(dt[,4] , dt[,3] , summary)by(dt[,c(-1:-3)] , dt[,3] , summary) nl_r <- tapply(dt[,4] , dt[,3] , range)by(dt[,c(-1:-3)] , dt[,3] , range) nl_sd <- tapply(dt[,4] , dt[,3] , sd)by(dt[,c(-1:-3)] , 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)
  21. 21. 解答例(課題3)【解答例1】 【解答例2】by(dt[,c(-1:-3)] , dt[,3] , summary) nl <- tapply(dt[,4] , dt[,3] , summary) nl_r <- tapply(dt[,4] , dt[,3] , range)by(dt[,c(-1:-3)] , dt[,3] , range) nl_sd <- tapply(dt[,4] , dt[,3] , sd)by(dt[,c(-1:-3)] , 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関数を使って出しています。
  22. 22. 解答例(課題4)【課題4】各教科の「平均点」「最高得点」「最低得点」「範囲」の統計量が一目でわかるようなグラフを描きたいです。どのようなグラフがわかりやすいでしょうか。描画に使ったRのコードと描画したグラフを提出してください。【解答4】boxplot(dt[,c(4:8)] , main = "Boxplot")• ここで解答してほしいのは「箱ひげ図」• デフォルトの箱ひげ図では「中央値」を表示します。平均値を計算して、Plot してください。(上記コードはデフォルトのまま利用しています)
  23. 23. 解答例(課題5)【課題5】過去5年分でも同じようなデータがあることがわかりました。過去の傾向も同じように調べたいと思っています。複数年度を同じように見たい場合、1年ずつコードを書くのは面倒なため、Funcitonを使って簡略化したいと思っています。ファイル名はexam_results2011.csv 、exam_results2010.csv .... となっており、このファイル名の年数の部分を変えるだけで、【課題2】の結果が表示されるようにしたいです。Functionを作成し、そのコードを提出してください。
  24. 24. 解答例(課題5)get_results <- function(file_name){ #課題1 file <- paste("http://www.geocities.jp/ados/" , file_name , sep = "" , collapse = "") dt <- read.csv(file , header = TRUE , sep = ",") #課題2 print(summary(dt[,c(-1:-3)])) print(apply(dt[,c(-1:-3)] , 2 , range))}• Functionを使って次回以降パラメータ(ファイル名)を指定するだけで計算結 果を実行できるようにします。• ポイントは、課題1のコードをどのように受け渡すか。• Paste関数を使ってファイルURLを組み立ててデータを取得しています。• それ以外のコードはPrint関数を使って結果を表示させています。
  25. 25. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4. どんな問題を出したのか?5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  26. 26. 解答例(解答ポイント)• 課題1 :ファイルの取り込み  Read.csv関数を使ってRに読み込む• 課題2 :統計量計算  集計関数(apply関数)を使って計算をします。Rに実装されている関 数を利用すること。• 課題3 :カテゴリごとの統計量計算  Tapply、aggregate関数などを使って統計量を計算しましょう。• 課題4 :グラフ作成  Boxplotを使ってグラフを描画します。• 課題5 :Function作成  パラメータ設定を工夫すれば、後は課題で出したコードをPrint文で囲 むだけ
  27. 27. 目次1. 自己紹介2. どうしてこの企画を【私が】やることになったか3. CodeIQってどんなサイト?4. どんな問題を出したのか?5. 解答例6. まとめ7. おまけ ※ スクリーンショットや機能等はMac版となります。
  28. 28. おまけ(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
  29. 29. おまけ(2):参加者募集中! 10月20日(土)10時半時点まだまだ挑戦者募集中です!10月29日(月) AM10:00まで!時間が足りなくて断念したり、解答結果が未送信な方もいらっしゃいますので今日の解説を覚えてもらって準備してください。
  30. 30. ご清聴ありがとうございました m(___)m

×