ggplot2パッケージ(tidyverseパッケージに含まれている)のdiamondsデータを使う。
> library(tidyverse) > head(diamonds) # A tibble: 6 x 10 carat cut color clarity depth table price x y z <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> 1 0.31 Good E SI1 63.3 55 544 4.33 4.36 2.75 2 0.8 Very Good H VS2 59.1 59 2953 6.02 6.07 3.57 3 0.78 Very Good H VS1 61.9 57.1 2854 5.87 5.95 3.66 4 0.3 Ideal G VVS2 61.5 57 684 4.29 4.33 2.65 5 1.5 Good F SI2 59.7 61 8181 7.39 7.44 4.43 6 1.2 Very Good E SI2 61.4 58 6130 6.81 6.88 4.2
carat:重さ(カラット)cut:カットの質(5段階)color:色(7段階)clarity:透明度(8段階)depth:table:最も幅広い部分に対する最上部の幅price:値段(USD)x,y,z:それぞれ長さ・幅・高さ(mm)
geom_point( )で散布図を描く
マーカーについては以下の引数を指定できる。
shape,size:マーカーの形、サイズcolor,stroke:マーカーの枠線の色、太さfill,alpha:塗りつぶしの色、透過度
※ プロットマーカーについては以前まとめた記事があります(2022-07-17 追加)
第3の変数で色分けしたい場合は、aes()の中で変数を指定する。下の例ではcutの種類別に色を指定した他、透過性を上げマーカーの枠を消して、重なりがあってもなるべく見やすいようにした。
ggplot(data = diamonds, aes(x = carat, y = price)) + geom_point(aes(color = cut), alpha = 0.5, stroke = 0)

geom_smooth( )で回帰直線・曲線を描く
回帰モデルを当てはめて得られる期待値(と信頼区間)をプロットする。当てはめるモデルは、methodとformulaで指定する。
method"lm":線形回帰モデル。サンプル数が1000個未満のときはこれがデフォルト(このときformula = y ~ x)"glm":一般化線形回帰モデル(ロジスティック回帰モデルなど)"gam":一般化加法モデル。サンプル数が1000個以上のときはこれがデフォルト(このときformula = y ~ s(x, bs = "cs"))"loess":locally weighted scatter plot smooth(局所的に重み付けされた散布図平滑化)
下のコードではyをxの5次式で回帰したもモデルを使った。
ggplot(data = diamonds, aes(x = carat, y = price)) + geom_smooth(method = "lm", formula = y ~ poly(x,5))

代表値の線に関しては、
color:色linetype:線の種類size:太さ
※ 線については以前まとめた記事があります(2022-07-17 追加)
標準誤差については、
fill:塗りつぶしの色alpha:透過度se=FALSEとすると信頼区間の帯は描かない。
が指定できる。
geom_rug( )で周辺ラグプロットを描く
それぞれの変数の分布をバーコードみたいに描いたもの。diamondsデータそのままだとサンプル数が多過ぎてつぶれてしまうので少し間引いたデータで描いてみる。
diamonds %>% sample_n(size=100) %>% ggplot(aes(x = carat, y = price)) + geom_rug()

単独で使うことはまずなさそう。
color, alpha, linetype, sizeで色、透過度、線の種類、太さを指定できる。
geom_rug( )に特有の引数としては、
sides:ラグを表示する場所。sides = "bl"のようにtop, bottom, right, leftの頭文字を使って指定する。length:ラグの長さを指定する。長さはunit( )という関数を使う(下リンク参照)。
おわりに
- geom_smooth( )の詳細はそれぞれのモデルについて書くときにでも。
参考資料
- 本家ページ: