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