code iq×japanr 公開用
TRANSCRIPT
CodeIQ×JapanR
2012/12/01@doradora09
アジェンダ• 自己紹介• CodeIQ コラボ企画• 問題と解答例• 回答の傾向
アジェンダ• 自己紹介• CodeIQ コラボ企画• 問題と解答例• 回答の傾向
自己紹介• 氏名:大城信晃• Twitter: doradora09
• 職業: Web エンジニア
• R:勉強中• 趣味:
– カクテル作り– カメラ始めました
• 本日の懇親会幹事
TokyoR• TokyoR で主に運営側で参加• 最近は初心者用セッションも発表させて
いただいています
http://www.slideshare.net/akiaki5516/10rver21
10 分で分かる R 言語入門 ver2.1
アジェンダ• 自己紹介• 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として、再度プロットして ください。プロットしたらそのコードを提出してください。
問題