MENU

R の ggplot で書いた回帰直線に geom_smooth で 95 % 信頼区間を付ける方法

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

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

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

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

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

目次

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

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

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

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次