Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rでreproducible research

6,898 views

Published on

  • Be the first to comment

Rでreproducible research

  1. 1. RでReproducible Research 2012年7月7日 第24回Tokyo.R @sfchaos
  2. 2. アジェンダ� 自己紹介� Reproducible Researchとは� Rでやってみる� まとめ 1
  3. 3. 1. 自己紹介 2
  4. 4. � TwitterID: @sfchaos� 職業: データ分析� 抱負: 頑張る 3
  5. 5. 2. Reproducible Research 4
  6. 6. 2.1 Reproducible Researchとは� 「再現可能な研究」のこと.� データ分析者にとっては,「再現可能なデータ分 析」.� 後々,分析条件の確認や追試を実施できるよう, データ,分析内容,結果を確認できるようにすべ し. 5
  7. 7. 2.1.1 再現不可能な分析の例� コンソールやデバイスの分析結果をコピペする� コンソール上だけでコマンドを打ち,ソースコード を残さない 6
  8. 8. 2..2 効率的なレポート生成� 分析結果を数100枚~数1,000枚のレポートに まとめることも珍しくはない.� また,データ分析では条件を変えて同じプログラ ムを実行してレポートを作成することも往々にし て発生しがち. 7
  9. 9. � このようなレポートを作成するために,気合と根 性でRから出力した図や表をベタ貼りすることは 非現実的.� 何とか楽してレポートを作成したい!!� その一つの方法として,文芸的プログラミングが ある. 8
  10. 10. 2.3 文芸的プログラミング� RRは,Donard Knuthが提唱した「文芸的プログ ラミング(Literate Programming)」が大いに関 係する.� 文芸的プログラミングは, ドキュメントとソースを併記したWEBと呼ばれるメ タソースを記述し、そこからドキュメントとソース コードをそれぞれ生成させることで情報の一体性 を高めている (Wikipedia「文芸的プログラミング」) 9
  11. 11. � 興味がある方は,Knuth氏の書籍をどうぞ. 10
  12. 12. 3. Rでやってみる 11
  13. 13. 3.1 CRAN TASK VIEW� CRAN TASK VIEWには"Reproducible Research"のカテゴリが存在する. 12
  14. 14. � 出力フォーマットごとに,以下のようなパッケージがある.� CRAN TASK VIEWには,これらだけでなく,ソースコード のハイライトやRのオブジェクトのキャッシュを行うパッ ケージも列挙されている. 出力フォーマット パッケージの例LaTeX Hmisc, xtable, reporttools, r2lh, tables, pgfSweaveHTML R2HTML, hwriter, xtableODF odfWeaveMicrosoft Office R2wd, R2PPTプレインテキスト AsciiDoc, asciiその他 knitr 13
  15. 15. (;´д`)ゞ いっぱいあって,どこから手をつけたら良いのやら・・・ 14
  16. 16. � 私はこんな感じで使っています. 出力フォーマット 用途 使用パッケージLaTeX Rで作成した数表やオブ xtable ジェクトのLaTexで読み込 める形式への変換Microsoft Office Rで作成した図や数表の R2PPT, R2wdフォーマット 取り込み 15
  17. 17. � これらは,Rで作成した図や数表をLaTeXや Microsoft Office系のレポーティングツールに取 り込むために使用.� 一方で,Rのソースコードを作成しながら,レポー トを作成する以下のようなパッケージも存在する (文芸的プログラミング). � Sweave � knitr 16
  18. 18. 3.2 Sweave� 以下の@wakutekaさんのブログ記事が秀逸. 「文芸的な、あまりに文芸的な」 (R Advent Calendar 2011)http://d.hatena.ne.jp/wakuteka/20111206/13231 82969 17
  19. 19. 3.3 knitrパッケージ� Sweaveの精神を引き継いだ動的なレポートを生 成するためのパッケージ http://yihui.name/knitr/ 18
  20. 20. 3.3.1 簡単な例test.Rnwdocumentclass{article}begin{document}<<setup, include=FALSE, cache=FALSE>>=opts_chunk$set(fig.path=figure/minimal-, fig.align=center, fig.show=hold)options(replace.assign=TRUE, width=90)@title{test}author{sfchaos}maketitle<<cars>>=library(ggplot2)summary(cars)plot(cars)qplot(speed, dist, data=cars)@end{document} 19
  21. 21. $R> library(knitr)> knit2pdf("test.Rnw") これでLaTeX形式のPDFファイルが 生成されるが, 結構面倒 20
  22. 22. 3.3.2 Rのソースコードだけ記述するtest.rlibrary(ggplot2)summary(cars)plot(cars)qplot(speed, dist, data=cars) 21
  23. 23. $R> library(knitr)> stitch("test.r") LaTeX形式のPDFファイルが生成される 22
  24. 24. 楽にレポート作成ができるようになった! 23
  25. 25. だが待て. LaTeXだけでなく,もっといろいろなフォーマットで出力したい. → knitr + pandocで 24
  26. 26. 3.3.3 knitr + pandoc http://johnmacfarlane.net/pandoc/ 25
  27. 27. test_pandoc.r(Rのソースコード)#@knitr summarysummary(cars) ドキュメントを作るときに用いるタグを指定しておく#@knitr plot1plot(cars)#@knitr plot2library(ggplot2)qplot(speed, dist, data=cars) 26
  28. 28. ファイル名末尾のtest_pandoc_knit_.md(ドキュメント生成) "_knit_"は必ずつける% knit-pandoc test% sfchaos<!-- Setting up R -->`ro warning=FALSE, dev="png", fig.cap="", cache=FALSE or````{r reading, echo=FALSE}read_chunk("test_pandoc.r")``````{r}<<summary>> Rのソースコードと分析結果を埋め込むために,```` Rのソースコードに埋め込んだタグを指定する```{r plot-fig1, result="asis"} ({r} で始まり で終わるブロックの中)<<plot1>>``````{r plot-fig2, result="asis"}<<plot2>>``` 27
  29. 29. # markdownへの変換 (markdown形式のファイル"test_pandoc.md"が生成される)$ Rscripe -e "library(knitr); knit(test_pandoc_knit_.md)"# pdfへの変換$ pandoc -s test_pandoc.md -t latex -o test_pandoc.pdf # HTMLへの変換 $ pandoc -s test_pandoc.md -t html -o test_pandoc.html # OpenOffice形式への変換 $ pandoc test_pandoc.md -o test_pandoc.odt # Microsoft Word形式への変換 $ pandoc test_pandoc.md -o test_pandoc.docx 参考: kariert, Reproducible research with markdown, knitr and pandoc  (R-bloggers 2012/5/17) 28
  30. 30. � pandocを用いて出力できるフォーマット 出力フォーマットTeX LaTeX, ConTeXt, LaTeX Beamer slidesHTML XHTML, HTML5, and HTML slide shows using Slidy, Slideous, S5, or DZSlidesWord Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XMLEBook EPUB文書フォーマット DocBook, GNU TexInfo, Groff man pagesマークアップフォーマット Markdown, reStructuredText, AsciiDoc, MediaWiki markup, Emacs Org-Mode, Textile 29
  31. 31. これで, いろいろなフォーマットのドキュメントが作れるようになる 30
  32. 32. 3.3.4 RStudioを用いる� RStudio(ver0.96以上)を用いて,このようなレ ポート作成が非常に楽に行える. 31
  33. 33. � 「ファイル(File)」 → 「新規作成(New)」 → 「R Markdown」� 以下のようなファイルを作成test.rmd 拡張子は"rmd"carsデータセットに対する分析========================================================統計量```{r}summary(cars)```散布図```{r fig.width=7, fig.height=6}plot(cars)``` 32
  34. 34. � knit HTMLボタンを押す 33
  35. 35. この後,Rpubsに投稿したり,HTMLファイルとして保存するのも 楽勝.34
  36. 36. 4. まとめ 35
  37. 37. � Reproducible Research データ分析者にとっては,「再現可能な分析」� knitrパッケージを用いるといろいろとできそう.� 未調査事項が多いので,また機会を見つけて発 表します. 36
  38. 38. 参考資料� JJ Allaire and Yihui Xie, "New Tools for Reproducible Research with R", 2012. 37

×