反復測定データの各時点の中央値及び最小値・最大値を示したエラーバーがついた折れ線グラフを書きたいという要望はよく聞くが、そのようなグラフを書けるソフトウェアはなかなか見つからない
EZR と R で中央値に最小値・最大値エラーバー付きの折れ線グラフを書く方法を紹介する
反復測定データをロング形式に変換する
まずは、一人一行で入力されているデータ(ワイド形式)をロング形式に変換する
エクセルでは、以下の黄色ハイライトのように、反復測定データは横に並べて入力すると思う
これをワイド形式と呼ぶ
これをロング形式にするにはアクティブデータセットから縦に積み重ねるというメニューを選択する
反復測定データを選択し(今回は 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 が計算されている
これでデータの準備が整った
群ごと時点ごとの中央値折れ線グラフ 最小値・最大値エラーバー付き を書く
最小値・最大値のエラーバー付き中央値の折れ線グラフは、以下のスクリプトで書ける
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 を用いた
何らか参考になれば
コメント