米国医学研究者のDr. Pontaです。
今回は論文投稿時にそのまま使えてしまう図をRで瞬時に作図する方法を解説します。作画はggplotをベースをしている”ggpubr”を使うと、自動でP値も計算、グラフ内に自動で埋め込んでくれます。機能特徴を以下に列挙します。
- テーマの設定: ggpubrは、グラフ外観をカスタマイズするためのテーマを提供します。例えば、テーマの背景色、フォント、グリッド線のスタイルなどを設定できます。
- 統計解析の補助: ggpubrは、統計解析に関連する情報をグラフに表示するための機能を提供します。例えば、p値や信頼区間などを自動的にグラフに追加することができます。
- 比較グラフの作成: ggpubrは、異なるグループや条件のデータを比較するためのグラフを作成するための機能を提供します。例えば、棒グラフ、箱ひげ図、violinプロットなどを作成できます。
- テーブルの作成: ggpubrは、グラフに関連する統計情報や要約統計を表形式で表示するための機能も提供します。これにより、グラフとテーブルを組み合わせてデータの解析結果を示すことができます。
使い方実践
今回はIRISデータを使って基本的な使用法をみていきます。ggpubrの良い点は自動で統計解析結果をプロットに追加できる点につきると思うので、その機能だけ紹介します。
Boxplot
シンプルに以下コードを実施すると、できてしまいます。あとはPDF等で保存するだけで論文投稿にすぐ使えます。
まずはもとになるボックスプロットを書きます。
ggboxplot(iris, x = "Species", y = "Sepal.Length", color = "Species")
では次に4つのパターンの統計比較を実施してみます。
# p値を追加する
# 比較した群、順番をまず指定する
my_comparisons <- list( c("setosa", "versicolor"), c("versicolor", "virginica"), c("setosa", "virginica") )
# 各群比較, p 数値表記(上段右図)
ggboxplot(iris, x = "Species", y = "Sepal.Length", color = "Species") +
stat_compare_means(comparisons = my_comparisons) + # Add pairwise comparisons p-value
stat_compare_means(label.y = 10) + # Add global p-value
ggtitle("各群比較, p 数値表記")
# 各群比較, p *表(上段左図)
ggboxplot(iris, x = "Species", y = "Sepal.Length", color = "Species") +
stat_compare_means(comparisons = my_comparisons, label = "p.signif") + # Add pairwise comparisons p-value
stat_compare_means(label.y = 10) +
ggtitle("各群比較, p *表記")
# 特定群だけに対する検定(下段左図)
ggboxplot(iris, x = "Species", y = "Sepal.Length", color = "Species") +
stat_compare_means(label.y = 10) +
stat_compare_means(label = "p.signif", method = "t.test", ref.group = "setosa") +
ggtitle("setosa群のみ対する検定")
# 全体平均に対する検定(下段右図)
ggboxplot(iris, x = "Species", y = "Sepal.Length", color = "Species") +
stat_compare_means(label = "p.signif", method = "t.test", ref.group = ".all.") +
geom_hline(yintercept = mean(iris$"Sepal.Length"), linetype = 2)+ # Add horizontal line at base mean
ggtitle("全体平均に対する検定")
Correlation plot
次に散布図に相関係数を自動で追加する方法を見てみます。
# General correlation plot
ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width",
add = "reg.line", # Add regression line
conf.int = TRUE, # Add confidence interval
) + stat_cor(method = "spearman", cor.coef.name = "rho")
# plot with groups
ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width",
add = "reg.line", # Add regression line
conf.int = TRUE, # Add confidence interval
color = "Species", size=1
) + stat_cor(aes(color = Species), method = "spearman", cor.coef.name = "rho")
まとめ
ggpubrを使ってなかったときは、わざわざ別にp値計算を行って、手動で論文図作成時に書き入れていたことと比較すると、圧倒的に早いです。ほぼ自動でできるので、探索的データ解析時から論文用のファイナル解析時まで活用範囲がとても広く便利です。一度使うと手放せません。皆さんもお試しください。
今回も最後までお読みいただきありがとうございました。