【Rによるデータサイエンス】樹木モデル(続き) 〜 回帰木

【Rによるデータサイエンス】樹木モデル」の続き。
回帰木のケーススタディについて勉強する。

◎使用するデータ
車のスピードと停止距離を表すcarsデータを使用する。

  speed dist
1     4    2
2     4   10
3     7    4
4     7   22
5     8   16

1.回帰木の作成
目的変数を距離(dist)とし、説明変数をスピード(speed)として関数rpartを使用して回帰木を作成する。

> (cars.rp<-rpart(dist~speed,data=cars))
n= 50 

node), split, n, deviance, yval
      * denotes terminal node

 1) root 50 32538.9800 42.98000  
   2) speed< 17.5 31  8306.7740 29.32258  
     4) speed< 12.5 15  1176.4000 18.20000  
       8) speed< 9.5 6   277.3333 10.66667 *
       9) speed>=9.5 9   331.5556 23.22222 *
     5) speed>=12.5 16  3535.0000 39.75000 *
   3) speed>=17.5 19  9015.6840 65.26316  
     6) speed< 23.5 14  2846.8570 55.71429  
      12) speed>=18.5 10  1323.6000 52.20000 *
      13) speed< 18.5 4  1091.0000 64.50000 *
     7) speed>=23.5 5  1318.0000 92.00000 *

これから回帰木は6つの葉を持っていることが分かる。らしいが、私にはどこを見れば葉の数が分かるのか分からない!(追記)※がついているのが葉。コメントでr-de-rさんに教えてもらいました。
なので、次のplotcpの実行によって得られるグラフの上の横軸(Size of tree)を見て葉の数を知ることにする。

2.回帰木の剪定
剪定の必要性についての考察。

> plotcp(cars.rp)


成長させた回帰木を4つの葉に剪定する必要があることを示唆している。

そういうわけで、回帰木を4つの葉に剪定する。そのためには、関数pruneを使用する!

> cars.rp1<-prune(cars.rp,cp=0.044)
> plot(cars.rp1,uniform=T,margin=0.05)
> text(cars.rp1,use.n=T)


相変わらず期待する図を描くことができない・・・。