統計ER

統計ソフトRの使い方を中心に、統計解析方法の解説をするブログ。ありそうでなかなか見つからないサンプルサイズ計算などニッチな方法について紹介しています。

ggplot2でエラーバー付き平均値の折れ線グラフを描く

complete pack banner

text data complete pack banner

ggplot2というグラフをきれいに描画するパッケージを使って、エラーバー付きの平均値の折れ線グラフを描く方法を紹介する。

反復測定したエンドポイントの平均値と、SDとか95%信頼区間とかを描画する方法だ。

サンプルデータ

サンプルデータはいつものEZR公式マニュアルのデータ。

これをお借りする。

まずEZRのメニューから、反復測定分散分析を実行する。

以下のデータを修正して、グラフを描くスクリプトの前までで作成される、TempDF3というデータセットを流用する。

前準備として dplyr パッケージを準備する

グラフ描画の前に、データ処理を便利にしてくれる dplyr パッケージをインストール install.packages("dplyr") して、library() で呼び出しておく。

library(dplyr)

グループごと時点ごとの要約統計量を計算する

グループ FCZ のカテゴリごと、時点 time2 ごとに平均、標準偏差、n、標準誤差を集計する。

group_time_mean_sd <- TempDF3 %>% 
group_by(FCZ, time2) %>% 
summarize(mean=mean(data, na.rm=T), sd=sd(data, na.rm=T), n=n(), se=sd/sqrt(n))

ちなみに、%>%とか、group_by()とかが、dplyr パッケージの機能・関数である。

ggplot2を呼び出してグラフを描画する

次に、ggplot2 パッケージを呼び出す。

library(ggplot2)

ggplot(), geom_line(), geom_errorbar(), geom_point() でグラフを描く。

ggplot2は、+(プラス)で関数をつなげていく、ちょっと変わった記法である。

まずは、標準偏差でエラーバーを描く場合。

ggplot(data=group_time_mean_sd, aes(x = time2, y = mean, group = FCZ, color = FCZ)) + 
  geom_line() + 
  labs(x = "Weeks", y = "CD ratio") + 
  geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd), width = 0.2) + 
  geom_point(aes(color = FCZ, shape = FCZ), size = 4) 

実行すると以下のようなグラフが描ける。

エラーバーを95%信頼区間にする場合は以下のスクリプト

mean + sd のところが、mean + 1.96*se と変わっている。

ggplot(data=group_time_mean_sd, aes(x = time2, y = mean, group = FCZ, color = FCZ)) + 
  geom_line() + 
  labs(x = "Weeks", y = "CD ratio") + 
  geom_errorbar(aes(ymax = mean + 1.96*se, ymin = mean - 1.96*se), width = 0.2) + 
  geom_point(aes(color = FCZ, shape = FCZ), size = 4) 

グラフはこんな感じになる。

学術雑誌等へ投稿する場合に、白黒で表現したければ、以下のように書く。

ggplot()の中の、aes()内のlinetype=が線を実線、破線、点線などを指定している。

theme_classic()が白黒でシンプルな見た目にする関数である。

#for academic presentation and article
ggplot(data=group_time_mean_sd, aes(x = time2, y = mean, group = FCZ, linetype = FCZ)) + 
  geom_line() + 
  labs(x = "Weeks", y = "CD ratio") + 
  geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd), width = 0.2) + 
  geom_point(aes(shape = FCZ), size = 4) + 
  theme_classic()

グラフはこんな感じになる。

95%信頼区間で描画するとこんな感じ。

ggplot(data=group_time_mean_sd, aes(x = time2, y = mean, group = FCZ, linetype = FCZ)) + 
  geom_line() + 
  labs(x = "Weeks", y = "CD ratio") + 
  geom_errorbar(aes(ymax = mean + 1.96*se, ymin = mean - 1.96*se), width = 0.2) + 
  geom_point(aes(shape = FCZ), size = 4) + 
  theme_classic()

まとめ

以上、統計ソフトRのggplot2 パッケージで、きれいなエラーバー付き平均値の折れ線グラフを描く方法を紹介した。

EZRのメニューを流用して、途中からスクリプトを書くという方法で、簡単にきれいなグラフが描ける。

ぜひ、お試しあれ。

参考サイト

ggplot2を使ったグラフ作成(折れ線、時系列、エラーバー) : 干からびたウェット教授の独習でアール R

【Rテクニック】棒グラフと折れ線グラフにエラーバーを付けたい!その簡単な方法を説明します|ドクターフント

15.18 Summarizing Data with Standard Errors and Confidence Intervals | R Graphics Cookbook, 2nd edition