R: 散布図に回帰直線・曲線を追加する

UB3/informatics/r/r_plot_line

このページの最終更新日: 2023/11/23

  1. 概要と使用するデータ
  2. abline() 関数で回帰直線・曲線を加える
  3. 回帰式を加える

広告

概要と使用するデータ

このページでは、R の plot 関数を使った散布図に、回帰直線を追加する方法をまとめる。ただし、全体的に ggplot を使った方がきれいな散布図が簡単に書けるので、ggplot のページ も参照のこと。

内容的には、以下のようなページと関連が深い。

データには、trees という 組み込みのデータセット を用いる。31 本の木について、胴回り Girth、高さ Height、容積 Volume を調べたデータである。

Rの組み込みデータセット trees

Volume と Height について散布図を作ってみる。

par(pty="s") #プロットを正方形にする
plot(trees$Volume,trees$Height)

treesデータセットの散布図

これに回帰曲線を加えていく。線形回帰の場合には、追加するのは直線になる。このページでは、直線・曲線という表現にしている。

lines を使うか、curve を使って add="TRUE" とする方法もある。機会があれば追加。

abline() 関数で回帰直線・曲線を加える

さまざまな方法がある。もっとも簡単なのは abline() 関数を使う方法である。

treesデータセットの散布図
  • 変数 X および Y の散布図を plot(A, B) で作成。
  • ここに追加する直線・曲線の式は lm() 関数を使った回帰分析で算出する。reg1 = lm(Y ~ X) のようにして、lm の結果を reg1 に保存する。
  • abline(reg1) で、散布図に回帰曲線が追加される。なお、ここで summary(reg1) とすると、回帰分析の結果を見ることができる。
treesデータセットのlm関数による線形回帰

回帰式を加える

summary(reg1) の結果から、この回帰は以下の式で表されることがわかる。回帰は有意であるが、adjusted R2 は 0.3358 と低い。このあたりの詳しい説明は、ページ上のリンクから lm() 関数を使った単回帰を参照 のこと。


Height = 0.23190 x Volume + 69.00336


この式をプロットに追加したい場合、式を自分で作って、プロットに文字を記入する text() 関数または mtext() を使用するという形をとる。あまりスマートではない気がする。

treesデータセットの散布図 回帰直線・数式入り

mtext はグラフの枠を基準にしてテキストの位置を決める。text は x と y の座標指定で決める。詳細は このページ に。

あとはこの応用で、reg1 から係数を取り出したり、数値を 2 桁程度に丸めたりなどの方法があるが、とりあえずは基本の考えのみまとめた。


広告

References

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。