CodeIQ×JapanR


          2012/12/01
         @doradora09
アジェンダ
•   自己紹介
•   CodeIQ コラボ企画
•   問題と解答例
•   回答の傾向
アジェンダ
•   自己紹介
•   CodeIQ コラボ企画
•   問題と解答例
•   回答の傾向
自己紹介
• 氏名:大城信晃
• Twitter: doradora09
• 職業: Web エンジニ
  ア
• R:勉強中
• 趣味:
  – カクテル作り
  – カメラ始めました
• 本日の懇親会幹事
TokyoR
• TokyoR で主に運営側で参加
• 最近は初心者用セッションも発表させて
  いただいています

     10 分で分かる R 言語入門 ver2.1
http://www.slideshare.net/akiaki5516/10rver21
アジェンダ
•   自己紹介
•   CodeIQ とは
•   問題と解答例
•   回答の傾向
CodeIQ とは
CodeIQ | IT エンジニアのための実務スキル評価サー
                  ビス
        https://codeiq.jp/
色々な言語の課題があります
Rの問題を出題させて頂きました
       !
   https://codeiq.jp/ace/doradora09/
目的
• CodeIQ を知ってもらう
• Rの布教
 – R初心者を想定した問題
目的
• CodeIQ を知ってもらう
• Rの布教
 – R初心者を想定した問題



   「 R ではじめる株価
   分析」
アジェンダ
•   自己紹介
•   CodeIQ コラボ企画
•   問題と解答例
•   回答の傾向
問題と解答例、その前に
• 問題の回答期限が
         12/3( 月 ) AM 10:00
• ですので、
• 今回の発表の内容は非公開でお願いしま
  す

• 今日の発表を聞いて問題にチャレンジさ
  れる分にはOKです
概要
• R を用いて株価データを取得しプロット
  する問題です
• 課題は1-3まであります
• 株価取得には RFinanceYJ パッケージ ( 外
  部パッ ケージ ) を利用します
RFinanceYJ
• ヤフーファイナンスから株価情報を取得
  するパッケージ
http://cran.r-project.org/web/packages/RFinanceYJ/index.html
RFinanceYJ
• ヤフーファイナンスから株価情報を取得
  するパッケージ
http://cran.r-project.org/web/packages/RFinanceYJ/index.html
RFinanceYJ
• 名前載ってて驚き
• (昔 5% くらいだけ手伝った記憶が・・)
【事前準備】
• 以下の 2 社の株価データを取得してくだ
  さい。
  1. ディー・エヌ・エー (2432.t)
 2. グリー (3632.t)
   なおデータを取得する期間は 2012 年 1
  月 4 日から現在の日付までとします。
【事前準備】
install.packages(‘RFinanceYJ’)
library('RFinanceYJ')

dena <- quoteStockTsData('2432.t', '2012-01-04')
gree <- quoteStockTsData('3632.t', '2012-01-04')



(CRAN ミラーサーバは Japan(Tokyo) を選択 )
【課題1】
• 【事前準備】で取得した2社のデータを
  それぞれ 2012 年 1 月 4 日から 5 件表示し
  て 下さい。
【課題1】 head 関数を利用
head(dena, 5)
head(gree, 5)

> head(dena, 5)
     date open height low close volume adj_close
229 2012-01-04 2321 2325 2285 2292 2077200         2292
228 2012-01-05 2288 2290 2217 2222 2882400         2222
227 2012-01-06 2235 2238 2111 2117 5601200         2117
226 2012-01-10 2092 2099 2000 2027 5049000         2027
225 2012-01-11 2005 2060 1891 1899 9326000         1899
【課題1】5行指定で表示
dena[1:5,]
gree[1:5,]

> dena[1:5,]
     date open height low close volume adj_close
229 2012-01-04 2321 2325 2285 2292 2077200         2292
228 2012-01-05 2288 2290 2217 2222 2882400         2222
227 2012-01-06 2235 2238 2111 2117 5601200         2117
226 2012-01-10 2092 2099 2000 2027 5049000         2027
225 2012-01-11 2005 2060 1891 1899 9326000         1899
【課題 2 】
• 【事前準備】で取得した 2 社のデータの終
  値 (close) を時系列でプロットしてくださ
  い。
• 補足:
 – 可能であれば比較しやすいように図を重ね合わ
   せて描画してください
【課題 2 】プロット
matplot(x=as.Date(dena$date),
        y=cbind(dena$close, gree$close),
        pch = 1:2)
【課題 2 】折れ線グラフにする
matplot(x=as.Date(dena$date),
        y=cbind(dena$close, gree$close),
        pch = 1:2, type = "o")
【課題 3 】
• データを比較しやすいように 2012 年 1 月
  4 日の終値を1として、再度プロットして
  ください。
【課題 3 】
matplot(x=as.Date(dena$date),      
        y=cbind(dena$close/dena$close[1],
                 gree$close/gree$close[1]),
        pch = 1:2, type = "o")
あとは見やすくする
• ここまでで大体 3点程度 ( 5点満点 )
• あとは軸と凡例等の見易さで加点
【各軸のタイトル追加】
matplot(x=as.Date(dena$date),      
        y=cbind(dena$close/dena$close[1],
                gree$close/gree$close[1]),
        pch = 1:2, type = "o”
        xlab='date' , ylab=”per_close", main = 'dena vs gree')
【日付追加】
d <- format(dena$date,"%m/%d")
dena.c <- dena$close/dena$close[1]
gree.c <- gree$close/gree$close[1]
par(xaxt="n")
matplot(
      y=cbind(dena.c, gree.c),
      pch = 1:2, type = "o",
      xlab='date' , ylab="per_close", main = 'dena vs gree')
par(xaxt="s")
axis(1,at=1:length(d),labels=d)
【日付追加】
d <- format(dena$date,"%m/%d")
dena.c <- dena$close/dena$close[1]
gree.c <- gree$close/gree$close[1]
par(xaxt="n")
matplot(
      y=cbind(dena.c, gree.c),
      pch = 1:2, type = "o",
      xlab='date' , ylab="per_close", main = 'dena vs gree')
par(xaxt="s")
axis(1,at=1:length(d),labels=d)
【凡例追加】
d <- format(dena$date,"%m/%d")
dena.c <- dena$close/dena$close[1]
gree.c <- gree$close/gree$close[1]
par(xaxt="n")
matplot(
      y=cbind(dena.c, gree.c),
      pch = 1:2, type = "o",
      xlab='date' , ylab="per_close", main = 'dena vs gree')
par(xaxt="s")
axis(1,at=1:length(d),labels=d)
axis(4,c(tail(dena.c,1),tail(gree.c,1)),c("DeNA","GREE"))
【凡例追加】
d <- format(dena$date,"%m/%d")
dena.c <- dena$close/dena$close[1]
gree.c <- gree$close/gree$close[1]
par(xaxt="n")
matplot(
      y=cbind(dena.c, gree.c),
      pch = 1:2, type = "o",
      xlab='date' , ylab="per_close", main = 'dena vs gree')
par(xaxt="s")
axis(1,at=1:length(d),labels=d)
axis(4,c(tail(dena.c,1),tail(gree.c,1)),c("DeNA","GREE"))
評価基準
• 以下の項目が評価基準になります
 – 重ねてのプロット
 – 各軸の項目名
 – 日付
 – 折れ線グラフ
 – 凡例
アジェンダ
•   自己紹介
•   CodeIQ コラボ企画
•   問題と解答例
•   回答の傾向
得点( 12 人中)
 点数     人数

 5      4

 4      6

 3      1

 2      1
得点(のべ 25 人中)
  点数    人数

  5      9
  4      12
   3     2
  2      1
  1      0
   0     1
プロット関数の種類( 12 人中)

     関数       人数

     plot     7

    ts.plot   3

    ggplot2   2

    matplot   0
プロット関数の種類(のべ 25 人
      中)
     関数       人数

      plot    16

    ggplot2   4

    ts.plot   3

    Matplot   1

    未解答       1
解答例 (plot)
解答例 (ts.plot)
解答例 (ggplot2)
まとめ
• 今回の問題が解けるとRを使って
 – 株価データ取得
 – 2つのデータを比較
 – 軸や凡例付きの作図
といった基本的な利用が出来るようになり
 ます
まだまだ受付中!
        12/3( 月 ) AM 10:00
 までチャレンジ受け付けてますので
是非 CodeIQ にチャレンジしてみてくだ
               さい!
ご清聴ありがとうございました
質疑応答
予備資料
問題
• 【概要】 R を用いて株価データを取得しプロットする問題です。
  株価データの取得には CRAN に登録されている RFinanceYJ パッケ
  ージ ( 外部パッ ケージ ) を利用します。
•  【事前準備】 RFinanceYJ パッケージをインストールしてくださ
  い。 また RFinanceYJ パッケージの quoteStockTsData を使って
  以下の 2 社の株価データを取得してください。
• 1. ディー・エヌ・エー (2432.t) 2. グリー (3632.t) なおデータを取
  得する期間は 2012 年 1 月 4 日から現在の日付までとします。
• 【課題1】 【事前準備】で取得した2社のデータをそれぞれ 2012
  年 1 月 4 日から 5 件表示して 下さい。データを表示したらデータ
  取得から表示までのコードを 提出して下さい。
•  【課題 2 】 【事前準備】で取得した 2 社のデータの終値 (close)
  を時系列でプロットしてくだ さい。プロットしたらそのコードを
  提出してください。
• 【課題 3 】 データを比較しやすいように 2012 年 1 月 4 日の終値を
  1として、再度プロットして ください。プロットしたらそのコー
  ドを提出してください。

Code iq×japanr 公開用