統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

ggplot で回帰直線を書く方法 geom_smooth を使う方法 95 % 信頼区間を付ける方法

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

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

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

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


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

ggplot で回帰直線を書く方法 ggplot2 とは?

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

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

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

ggplot で回帰直線を描いてみる

以下のスクリプトを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%である。

以下が結果。

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

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


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

ggplot で書いた回帰直線の見た目を変更する

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()

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

ggplot で書いた回帰直線の式をグラフ内に書き入れる

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

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

#####線形回帰(単回帰、重回帰)#####
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公式マニュアル