2023年9月16日(土) 11:20 〜 13:20 第4会場 (4F 403)
再現可能なデータ解析・論文執筆とQuarto
Quartoを使った解析報告方法
Quartoを使った論文執筆方法
本発表は,JSPS科研費「再現可能な心理学研究のためのクラウド研究基盤の開拓(20K20870)」の助成を受けています。
心理学研究100本のうち再現されたのは39本 (“Estimating the Reproducibility of Psychological Science” 2015)
引用数が多く効果があるとされた臨床医学研究45本のうち再現されたのは20本 (Ioannidis 2005)
1576名の調査から,70%が他の研究者の研究を再現できず,50%が自分の研究の再現もできなかった (Baker 2016)
→研究知見に対する再現可能性の担保が重要!
Goodman, Fanelli, and Ioannidis (2016) による3つの再現可能性
方法の再現可能性: 論文と同じデータに同じ方法を用いて,同じ結果が得られること
結果の再現可能性: 新規のデータに同じ方法を用いて,同じ結果が得られること
推論の再現可能性: 結果から質的に同じ結論が得られること
→データ共有がなければそもそも不可能・・・
→データとコードの共有方法が重要!
オープンソースの科学・技術出版システム
解析コードと文章を1つのファイル内で統合でき,以下のように文章,コード,結果(プロット)からなるファイルを出力できる。
平均と標準偏差が1の正規分布から100個の乱数をプロットします。
Quartoファイルの拡張子はqmd
Quartoは,qmd形式からMarkdown形式(md)に変換し,それをpandocを介して,HTML,PDF,マイクロソフトWord, マイクロソフトPower Point,ePub形式などに変換できる。
knitrだけでなくJupyterをエンジンに使えるので,PythonやJuliaなどを扱うのが便利になった。
QuartoはRStudioに限定されず,VS Codeなど他のIDEでも使える。
R Markdownは用途に合わせて追加パッケージをインストールする形式だが,Quartoは単体で機能できるように作成されている(Rに依存しない)。
→RStudioとR Markdownにかなり慣れているコアユーザーはQuartoに移行する必要はない。むしろ初めて技術・出版システムを使う人向けかもしれない。
一番簡単なのは,最新のRとRStudioをインストールする方法(終わり!)
JupyterエンジンやPython,Juliaは個別にインストールする必要がある(今回のTWSのスコープ外)。
Quartoではデータ解析をするので,別に保存されたデータを読み込む必要がある。
Quartoのファイルが置かれている場所,データの置かれている場所,Rのカレントワーキングディレクトリの3つが重要になる(qmdファイルからデータが読めないとエラーが出る)。
RStudioのプロジェクト機能とディレクトリ構造を意識する
まずは「New Directory」をクリックする。
すでに作成済みのディレクトリをプロジェクトに使う場合は「Existing Directory」,GitHubなどのバージョンコントロールをする場合は「Version Control」を使用する。
「New Project」をクリックする。
その他に「R Package」用のプロジェクトなどもある。「Quarto Project」ではプロジェクトフォルダ内にQmdファイルが配置される(今回は使わない)。
Directory nameにプロジェクト名を書き込む(sotsuronとかでいいので,分かるように英語・ローマ字で書く)。
Create project as subdirectory of :でディレクトリの場所を決める(指定した場所に上記のDirectory nameのディレクトリが作成される)。
プロジェクトを開くと,右下パネルのFilesが指定したディレクトリになる。
ディレクトリ内にRprojという拡張子のファイルが作成される(プロジェクトの情報を保存したファイル)。
プロジェクトのディレクトリがカレントワーキングディレクトリになる(Consoleで以下を実行すると確認できる)。このディレクトリを起点に,Qmdファイルを作成したり,データを配置する。
研究や作業単位ごとにProjectを作る。その際にProject間の切り替えをするのにRecent Projectsが便利。
Recent Projectsには,過去に開いたプロジェクトが出てくるので,使うものを選択すれば良い。
左のようになっているとまずい。
中身が分かるようにファイル名をつけ,解析,データ,関数などでフォルダにまとめる(Research compendium)。
今回のTWSでは最小のディレクトリ構成にする。
プロジェクトのディレクトリ直下にanalysis01.qmdファイルを置く(解析を分ける必要ができたらanalysis02.qmdと連番をふる)
データはdataフォルダを作成して,そのフォルダ内に配置する。
QuartoはMarkdown形式で文章やコードブックが書けるが,いきなりMarkdownとか言われても困ると思う。
Visual editorモードなら,Wordのような感じで,太字,斜体などの指定や挿入を上のツールバーから実施できる。
**太字にしたい文字**
で太字に指定するなど,Markdownの詳細はこちら)普通の文章はNormal
になり,見出しはHeader 1
からHeader 6
である。
Header
は数字が小さいほど,大きな見出しになる。
見出しを構造化して,文章のアウトラインを意識しよう!
OK
をクリックする。キーボードショートカット | Markdown記法 | |
---|---|---|
ボールド体 | ⌘ B | **bold** |
イタリック体 | ⌘ I | *italic* |
コード | ⌘ D | `code` |
見出し 1 (一番大きい) | ⌥⌘ 1 | # |
見出し 2 | ⌥⌘ 2 | ## |
見出し 3 | ⌥⌘ 3 | ### |
リンク | ⌘ K | <href> |
Rチャンク | ⌥⌘ I | ```{r} |
MermaidとGraphvizは,ダイアグラムを描くソフトでQuartoで使える。
SEMや因果ダイアグラムを描く時に便利(詳細こちらを参照)
pagebreak
)の指定ができる。Insert -> Citationで,以下の画面が立ち上がる。DOIやPubmed検索から文献を簡単に登録できる。
文献は@kunisato2023
だとKunisato et al.(2023)
となり,[@kunisato2023]
だと(Kunisato et al., 2023)
となる。
LaTeX MathでLatex形式で数式が挿入できる(文章内に挿入するInlineと数式だけの行をつくるDisplayがある)。
定義は用語説明に使えるが利便性が不明,特殊文字を入れたい場合はSpecial Charactersから挿入する。
こんな感じになる。
Quartoの使い方(tip)
Quartoの使い方としては・・・1つ目としては・・・
Quartoの使い方(important)
Quartoの使い方は・・・1つ目としては・・・
Quartoの使い方(caution)
Quartoの使い方は・・・1つ目としては・・・
Quartoの使い方(warning)
Quartoの使い方は・・・1つ目としてはデータ解析の報告書の作成がある・・・
Quartoの使い方(warning,simple)
Quartoの使い方は・・・1つ目としてはデータ解析の報告書の作成がある・・・
Quartoの使い方(warning,minimal)
Quartoの使い方は・・・1つ目としてはデータ解析の報告書の作成がある・・・
<!--# -->
が挿入されるので,#より後ろにコメントを残す。/
をタイプすることでも可能。Rmdファイル内のRコードは,Rコードを表示する・しない,Rコードを実行する・しない,コードの結果を表示する・しないなど,色々と調整したいところ。
Rチャンクには,オプションがあり,Rコードとその結果の扱いや図のサイズなどについても指定できる。
Rコードのチャンクを参照するための名前をつける場合は,label
を使う。
eval |
コードの実行(false はコード表示のみ) |
echo |
コードの表示 |
output |
実行した結果の表示(true , false , と asis 。 asis はmarkdownのままを出す場合) |
warning |
警告の表示 |
error |
エラーの表示(エラーがでても処理継続) |
include |
コードと結果の表示(false ならすべての出力が抑制される) |
fig-width |
図の幅(単位はインチ) |
fig-height |
図の高さ(単位はインチ) |
fig-cap |
図のキャプション |
fig-subcap |
図のサブキャプション |
out-width |
出力されるドキュメントでの図の幅(図は出力先で調整されるのでfig-widthとは異なる。デフォルトはpxだが,cm, mm, in, inch, %の単位が使える) |
out-height |
出力されるドキュメントでの図の高さ(図は出力先で調整されるのでfig-widthとは異なる。デフォルトはpxだが,cm, mm, in, inch, %の単位が使える) |
実際にqmdファイルを作って,データを読み込んで,Rのコードを実行してみましょう。
データを掲載するジャーナルも増えてきている。
対象者:一般参加者295名
介入:3つのポジティブ心理学的介入と統制条件に無作為割付。(1)“Using Signature Strengths(ウェブサイトで性格の強みを評価し,上位の強みのうちの1つを次の週に新しい別のやり方で実施する)”,(2)“Three Good Things(その日に起こった良いことを3つあげて,なぜそれが起こったのか原因説明とともに記録する)”, (3)“Gratitude Visit(親切してくれたけど感謝を示してない人に手紙を書く介入)”,(4)“Recording early memories(統制条件,幼いころの記憶を書く)”
アウトカム:Authentic Happiness Inventory (AHI) の24項目,Center for Epidemiological Studies Depression(CES-D) scaleの20項目
測定時期:介入前(0), 介入後(1), 1週間後(2), 1ヶ月後(3),3ヶ月後(4),6ヶ月後(5)
Woodworth et al.(2018)のデータにアクセスして,ファイルをダウンロードして開く。作成したプロジェクト内のdataフォルダ内にparticipant-info.csvとahi-cesd.csvを配置する。
データの読み込み,データの前処理,可視化などはtidyverseパッケージ使うと便利。
dataフォルダに保存したWoodworth et al.(2018)のデータを読み込む。データはcsv形式だったので,read_csv()で読み込む。ファイルはdataフォルダにいれているので,ファイル名の前に”data/“をいれる(フォルダを指定できる)。
Rではデータフレームという構造でデータを扱う。データフレームは,a行b列からなる表形式のデータであり,列には変数が含まれる。
read_csv()で読み込んだデータはデータフレームになっており,オブジェクト名を打つとデータフレームが表示される。
データ型 | 説明 | 省略形 |
---|---|---|
logical | 論理型(TRUE, FALSE) | lgl |
integer | 整数型(1,2) | int |
double | 倍精度小数点型 (1.0,2.1) | dbl |
character | 文字型 | chr |
factor | 因子型 | fct |
ordered | 順序型 | ord |
Date | 日付型 | date |
パイプ演算子でつなぐと前の処理の内容が次の処理に引き継がれるので,可読性高くコードが書ける。
|>
はTools -> Global options -> Codeで,Use native pipe operator…にチェックをいれてApplyすればRStudioで使える。
Windowsは Ctrl + Shift + m Macは Command + Shift + mのショートカットでパイプ演算子が入力できる。
gtsummary
パッケージのtbl_summary()
を使うと簡単に変数の要約ができる(by
でグループ分けして表にできる)Characteristic | 1, N = 721 | 2, N = 761 | 3, N = 741 | 4, N = 731 |
---|---|---|---|---|
sex | ||||
1 | 62 (86%) | 66 (87%) | 62 (84%) | 61 (84%) |
2 | 10 (14%) | 10 (13%) | 12 (16%) | 12 (16%) |
age | 45 (36, 54) | 46 (36, 53) | 44 (34, 51) | 40 (32, 51) |
educ | ||||
1 | 3 (4.2%) | 3 (3.9%) | 2 (2.7%) | 6 (8.2%) |
2 | 3 (4.2%) | 8 (11%) | 3 (4.1%) | 7 (9.6%) |
3 | 10 (14%) | 7 (9.2%) | 7 (9.5%) | 15 (21%) |
4 | 26 (36%) | 32 (42%) | 32 (43%) | 14 (19%) |
5 | 30 (42%) | 26 (34%) | 30 (41%) | 31 (42%) |
income | ||||
1 | 21 (29%) | 20 (26%) | 17 (23%) | 15 (21%) |
2 | 31 (43%) | 34 (45%) | 36 (49%) | 35 (48%) |
3 | 20 (28%) | 22 (29%) | 21 (28%) | 23 (32%) |
1 n (%); Median (IQR) |
量的な変数はヒストグラムで分布を確認
occasion=0のCES-D得点のヒストグラムを描く。filterでoccasion=0に絞り込んで,パイプ演算子でfilterされたdataをggplotに入れて,aesでx軸を指定する。
stat_halfeye()
でバイオリンプロットの半分を描いてから,stat_dots
でドットプロット追加し,geom_boxplot
で箱ひげ図を追加する。library(ggdist)
data |>
filter(intervention == 3 | intervention == 4) |>
filter(occasion == 0) |>
mutate(intervention2 = ifelse(intervention == 3,"Gratitude Visit","Recording early memories")) |>
ggplot(aes(x = intervention2, y = cesdTotal)) +
stat_halfeye(width = .5, justification = -.15,point_color = NA, .width = 0) +
stat_dots(side = "left", dotsize = 1, justification = 1.1, binwidth = 1) +
geom_boxplot(width = .1,outlier.shape = NA) +
theme_classic() +
labs(x = "Intervention", y = "CES-D") +
coord_cartesian(clip = 'off', xlim = c(1, 2))
HTMLファイルは便利ですが,他の人と共有する際に,画像などの各種ファイルも同時に共有する必要がある(面倒だし,メールで送れない)。
qmdファイルのYAMLの”format: html”を以下に変更するとHTMLファイルに画像などを埋め込んでくれる。
format:
html:
embed-resources: true
toc: true
toc-depth: 2
プレゼンテーションスライド
ウェブサイト
本
論文
Quartoでプレゼンスライドも作れる(このスライドもQuartoで作成している)。
Rの解析結果が含まれるような研究の場合は,Quartoで作成するのも便利(変にスライドにこだわらなくなるのも良い)
作成法:新規作成からQuarto Presentationを選択して,revealjs
(reveal.js, HTML), pptx
(MS Power Point), beamer
(Beamer, LaTeX/PDF)の3つから1つを選ぶ。
File -> New Project…-> New DirectoryでQuarto Websiteを選ぶ。
既にあるqmdファイルに加筆し,新規作成したqmdファイルを_quarto.yml
に追加するなどしてウェブサイトを作る。
BuildのRender Websiteでウェブサイト全体のRenderを行う。
File -> New Project…-> New DirectoryでQuarto Websiteを選ぶ。
既にあるqmdファイルに加筆し,新規作成したqmdファイルを_quarto.yml
に追加するなどしてウェブサイトを作る。
BuildのRender Websiteでウェブサイト全体のRenderを行う。
国里のゼミではRmdで卒論を書くので,それをまとめてbookにしてゼミ論集にしています(今後はQmdに移行予定)。
Journal / Publisher | Name | Install |
---|---|---|
Association of Computing Machinery | acm | quarto use template quarto-journals/acm |
American Chemical Society | acs | quarto use template quarto-journals/acs |
American Geophysical Union | agu | quarto use template quarto-journals/agu |
Biophysical journal | biophysical-journal | quarto use template quarto-journals/biophysical-journal |
Elsevier Journals | elsevier | quarto use template quarto-journals/elsevier |
American Statistical Association Journals | jasa | quarto use template quarto-journals/jasa |
Journal of Statistical Software | jss | quarto use template quarto-journals/jss |
Public Library of Science | plos | quarto use template quarto-journals/plos |
Y
,「Directory name:」に好きなディレクトリ名をつける(ただし,英数字で名前をつける)PLOS ONE用のテンプレートのqmdファイルを開く。
本来は自分用に改変をするが,まずはRenderする。
Quarto Journal Templatesには登録されていないが,APA形式での出力ができるテンプレートもある。
A Quarto Extension for Creating APA 7 Style Documentsにあるように,以下をRStudioのTerminal上で実行すれば,APA形式のテンプレートが入手できる。
quarto use template wjschne/apaquarto
Quarto Journal Templatesにない場合は,自分でオリジナルテンプレートを作成する(共有すれば他の人も使える)。
オリジナルテンプレートを作成する場合,Githubのarticle-format-templateをコピーして使うのが良さそう。
jpaRmdは,R Markdownで論文を書くためのテンプレートパッケージ。
心理学研究などに投稿可能な形式で美しいPDFが出力される(Kosugittiのいぶし銀Rコードにより完璧な引用文献リストが作成できる!)。
→困る点:共著者や英文校閲者がwordのコメント機能を使うとなるとPDFが不便,LaTeXベースなので美しさを重視して行数が投稿規定からずれることがある,最終的に出版社からwordを求められる…wordに変換する時チョット泣いた…
PDFで美的なフォーマットにこだわるのをやめる!
最近は雑誌/出版社がWordテンプレートを出していたりするので,Wordテンプレートに合わせてWordを出力するようにしたい。
JPRは便利なWordテンプレートが共有されているし,私がAssociate Editorでもあるので,試しにQuarto Journal Templatesに従って作成してみました。
作成したテンプレートは,https://github.com/ykunisato/jprにあります。
quarto use template ykunisato/jpr
“jpr_paper.qmd”を開いて,適宜書き込む(学会が提供するWord Templateのコメントも追加しているので参照ください)。
Renderをクリックして,Word出力して確認する。
なお,心理学研究用のテンプレートのjjpも作成している。
GitHubアカウントを作成して,https://github.com/quarto-journals/article-format-template にアクセスする。