統計ER

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

EZRで ggplot2 を使って95%信頼区間と回帰式付き回帰直線を描く方法

kaiseki daiko banner

EZRで回帰直線に95%信頼区間を描きたい場合どうするか?

ggplot2 を使うと簡単・きれいに描ける。

ggplot2 とは?

ggplot2 とは、簡単にきれいなグラフが描けるRの高性能なパッケージである。

これを使うといい!

ggplot2はEZRにインストールされているので、library()ですぐに呼び出せる。

もしインストールされていなかったら、install.packages("ggplot2")でインストールする。

サンプルデータは、EZR公式マニュアルのデータを借りる。

ggplot2で95%信頼区間付き回帰直線を描いてみる

以下のスクリプトをRスクリプト窓に書く。

3つのパートから構成されている。

  1. ggplot()
  2. geom_point()
  3. geom_smooth()

これらを+(プラス)でつないでいく、ちょっと変わった記法である。

library(ggplot2)
ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, se=TRUE)

ggplot()のカッコ内は、データの指定とX軸、Y軸の指定である。

geom_point()は、散布図を描かせる指令。

geom_smooth()は、平滑線を描かせる指令で、method=lmは直線回帰、se=TRUEは信頼区間を表示する指定。

信頼区間は、特に指定しなければ95%である。

以下が結果。

デザイン性に優れたグラフがあっという間に描ける。

ggplot2で描いた95%信頼区間付き回帰直線の見た目を変更する

theme_bw()を加えると、白黒のシンプルな見た目になる。

ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, se=TRUE)+
  theme_bw()

theme_classic()だと、X軸、Y軸だけになる。

ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, se=TRUE)+
  theme_classic()

geom_smooth()内にcolor="black"で指定すると黒に変えられる。

ほかの色も英語で指定すればその色に変わる。

ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, se=TRUE, color="black")+
  theme_classic()

信頼区間のグレーを少し薄くするためには、geom_smooth()内にaes()でfill='confidence'というふうにfillを指定する。

そしてscale_fill_manual()で、lightgrayに変更する。

そうすると少し薄いグレーに変わる。

ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, color="black", 
  aes(fill='confidence'), show.legend=FALSE)+
  scale_fill_manual('Interval', values='lightgray')+
  theme_classic()

信頼区間を塗りつぶさず、限界を線で表示する方法はわからなかった。

グラフ内に数式を書き入れる

例えば、グラフ内に回帰式を書き入れたい場合、どうするか?

まず単回帰を行っておく。

#####線形回帰(単回帰、重回帰)#####
library(aod, pos=18)
RegModel.1 <- lm(LogCD34perBW~WBC.entry, data=GCSF_CD34)

次に、以下のように回帰式をequationとして定義する。

equation <- sprintf(
  "italic(Y) == %.3g + %.3g * italic(X)", 
  coef(RegModel.1)[1], coef(RegModel.1)[2]
  )

%.3g の部分は、次のcoef(RegModel.1)[1])(切片の推定値)とcoef(RegModel.1[2])(傾きの推定値)を順番に代入する意味で、3gは有効数字3桁にするという意味合い。

最後に、先ほどまでのスクリプトの最後に一行を書き足す。

+でつなぐのを忘れずに。

ggplot(data=GCSF_CD34, aes(x=WBC.entry, y=LogCD34perBW))+
  geom_point()+
  geom_smooth(method=lm, color="black", 
  aes(fill='confidence'), show.legend=FALSE)+
  scale_fill_manual('Interval', values='lightgray')+
  theme_classic()+
  annotate("text", x=5000, y=1.0, label=equation, parse=TRUE)

X軸が5000、Y軸が1.0の座標に、回帰式を書き入れるためのスクリプト

parse=TRUEは、数学表現であることの指示。

グラフを表示させるとこのようになる。

まとめ

EZRで95%信頼区間付きの回帰直線を描くには、ggplot2を使うとよい。

簡単にきれいな図が描ける。

参考サイト

RPubs - Confidence and Prediction intervals for Linear Regression

ggplot2: きれいなグラフを簡単に合理的に - Heavy Watal

ggplot2をインストールし美しいグラフを作るまでの基礎知識【入門編】

statistics - creating confidence area for normally distributed scatterplot in ggplot2 and R - Stack Overflow

5.9 Adding Annotations with Model Coefficients | R Graphics Cookbook, 2nd edition

EZR公式マニュアル