MENU

【無料プレゼント付き】学会発表・論文投稿に必要な統計を最短で学ぶことができる無料メルマガ

EZR と R を使って中央値に最小値・最大値のエラーバーがついた折れ線グラフを書く方法

反復測定データの各時点の中央値及び最小値・最大値を示したエラーバーがついた折れ線グラフを書きたいという要望はよく聞くが、そのようなグラフを書けるソフトウェアはなかなか見つからない

EZR と R で中央値に最小値・最大値エラーバー付きの折れ線グラフを書く方法を紹介する

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

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

目次

反復測定データをロング形式に変換する

まずは、一人一行で入力されているデータ(ワイド形式)をロング形式に変換する

エクセルでは、以下の黄色ハイライトのように、反復測定データは横に並べて入力すると思う

これをワイド形式と呼ぶ

これをロング形式にするにはアクティブデータセットから縦に積み重ねるというメニューを選択する

反復測定データを選択し(今回は Y1, Y2, Y3)、ロング形式のデータセット名(今回は Dataset_long)、縦に積み重ねた後の変数名(今回は Y)、反復測定を区別する変数名(今回は Time)を入力し、OK をクリック

出来上がりは、反復測定データが立てに積み重なっているのがわかる(id の昇順で並び替えてある)

群ごと時点ごとの中央値・最小値・最大値の計算

次に群ごと時点ごとの中央値、最小値、及び最大値を計算する

まずは、群の変数が数値型や文字型である可能性が高いため、群の変数を因子型に変換する

因子型に変換しておかないと、最終的にグラフを書くときにうまく書けないことがおきるため、因子型にしておく

因子型にするには、アクティブデータセットから「連続変数を因子に変換」、もしくは「文字変数を因子に変換」のメニューを選択する

今回は 0, 1 という数値だったので、「連続変数を因子に変換」を選択した

連続変数のカテゴリカルデータを選択し、因子水準は数値を選択して、OK をクリックする

これで、準備が整ったので、群ごと時点ごとの中央値、最小値、最大値を計算していく

EZR でグループごとに計算するには、R スクリプト枠を使用していく

以下の枠のことだ

こちらに、まずは、以下のとおり書くなり、コピペして修正するなりして、スクリプトを書く

install.packages("dplyr") # 1 回だけインストール
library(dplyr)
group_time_median <-
  Dataset_long %>%
  group_by(Treat, Time) %>%
  summarise(
    median=median(Y, na.rm=TRUE),
    min=min(Y, na.rm=TRUE),
    max=max(Y, na.rm=TRUE)
  )
group_time_median

dplyr というパッケージを使用する

まだ、インストールしたことがなければ、一回のみインストールする

ここで、Treat, Time, Y は今回の変数なので、ご自分のデータでは、これに該当する群変数、時点変数、アウトカム変数を書き入れる

範囲選択して、実行をクリックすると以下の出力が下の枠に出現する

> group_time_median
# A tibble: 6 × 5
# Groups:   Treat [2]
  Treat Time  median   min   max
  <fct> <chr>  <dbl> <dbl> <dbl>
1 0     Y1      46      25    57
2 0     Y2      62.5    46    84
3 0     Y3      80      46   106
4 1     Y1      55.5    45    80
5 1     Y2      81.5    46   110
6 1     Y3     103      65   137

Treat ごと、Time ごとに median, min, max が計算されている

これでデータの準備が整った

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

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

群ごと時点ごとの中央値折れ線グラフ 最小値・最大値エラーバー付き を書く

最小値・最大値のエラーバー付き中央値の折れ線グラフは、以下のスクリプトで書ける

library(ggplot2)
# colorful
ggplot(data=group_time_median,aes(x=Time, y=median, group=Treat, color=Treat))+
  geom_line(position=position_dodge(0.3))+
  geom_point(aes(color=Treat, shape=Treat), size=3, position=position_dodge(0.3))+
  geom_errorbar(aes(ymin=min, ymax=max), width=0.2, position=position_dodge(0.3))+
  labs(x='Time', y='Y')

こちらも、Time, Treat はご自分の変数名に変更する

全部選択して実行すると、以下のようなグラフが書ける

もし、このようなカラフルなグラフではなく、論文用にモノクロのシンプルなグラフが良ければ、以下のスクリプトになる

library(ggplot2)
# classic
ggplot(data=group_time_median,aes(x=Time, y=median, group=Treat, linetype=Treat))+
  geom_line(position=position_dodge(0.3))+
  geom_point(aes(shape=Treat), size=3, position=position_dodge(0.3))+
  geom_errorbar(aes(ymin=min, ymax=max), width=0.2, position=position_dodge(0.3))+
  labs(x='Time', y='Y')+
  theme_classic()

できあがりは以下のとおり

こちらのほうが、学術論文には適切なグラフであろう

まとめ

以上、EZR と R を使って、反復測定データの群ごと、時点ごとの中央値の折れ線グラフを、最小値・最大値のエラーバーを付けて、書く方法を解説した

パッケージは dplyr と ggplot2 を用いた

何らか参考になれば

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

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

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

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

コメント

コメントする

目次