MENU

EZR と R の ggplot でエラーバー付きの平均値折れ線グラフを書く方法

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

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

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

ggplot でエラーバー付き折れ線グラフを書く土台を作る

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

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

TempDF3 の内容を見てみると、ワイド形式だったデータをロング形式に変えたデータであると言える。

最初から、ロング形式、つまり、1 症例複数行のデータになっている場合は、次のステップから始めても大丈夫と思う。

グループ変数(この例は、FCZ)と時点変数(この例では、time2)をご自分のデータの変数名に置き換えることになる。

ggplot でエラーバー付き折れ線グラフを書く前準備をする

グラフ描画の前に、データ処理を便利にしてくれる 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 パッケージの機能・関数である。

集計結果は以下の通りになる。

FCZ グループごと、time2 時点ごとに、平均、標準偏差、サンプルサイズ、標準誤差が集計・計算されている。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

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)

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

点とエラーバーを少しだけずらしたい場合は、position = position_dodge() を使う。

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

こんな感じで少しだけずれて、見やすくなる。

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

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】ggplot2でエラーバーを付ける|ドクターフント(Dr. Hund)

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

参考書籍

EZRでやさしく学ぶ統計学 改訂3版 〜EBMの実践から臨床研究まで〜
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (1件)

コメントする

目次