トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Decision Tree Analysis

*disclaimer
36002

R

決定木分析

サンプルデータとスクリプト


サンプルデータ(各指標)から、
1)欠損値を含むデータ2つを除き、
2)ファイル名のカラムを削除したものを、
jpn.4cというデータフレームに入れているものとします。

> nrow(jpn.4b)
[1] 287
> nrow(jpn.4c)
[1] 285
> head(jpn.4c)
  Score Token Type NoS       TTR       GI     MATTR      AWL      ASL
1     4   319  135  30 0.4231975 7.558549 0.5921317 4.304075 10.63333
2     4   356  161  29 0.4522472 8.532983 0.6649157 4.233146 12.27586
3     3   201  121  13 0.6019900 8.534682 0.7170149 4.746269 15.46154
4     4   260  140  27 0.5384615 8.682431 0.6877692 4.761538  9.62963
5     4   420  175  25 0.4166667 8.539126 0.6341905 3.995238 16.80000
6     3   261  124  20 0.4750958 7.675407 0.6390038 4.072797 13.05000

Decision Tree Analysis

パッケージ rpart をインストール。

Scoreを目的変数(分類カテゴリー)として、残りの言語指標(説明変数)のどれがどのくらい分類に寄与するかを観察します。

式は: rpart(目的変数 ~ ., data = データフレーム)
結果を、モデルとして保存するようにします。

具体的には、まず、attachして使うデータフレーム名を決めておく。

> attach(jpn.4c)
> jpn.DTmodel <- rpart(Score ~ ., data = jpn.4c)
> jpn.DTmodel
n= 285 

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

 1) root 285 166.0491000 3.635088  
   2) Type< 130.5 152  45.8684200 3.118421  
     4) Token< 163.5 11   4.9090910 2.090909 *
     5) Token>=163.5 141  28.4397200 3.198582  
      10) Token< 262 109  14.2568800 3.082569  
        20) AWL< 4.72274 91   6.9890110 3.010989 *
        21) AWL>=4.72274 18   4.4444440 3.444444 *
      11) Token>=262 32   7.7187500 3.593750  
        22) AWL< 4.229472 19   4.4210530 3.368421 *
        23) AWL>=4.229472 13   0.9230769 3.923077 *
   3) Type>=130.5 133  33.2330800 4.225564  
     6) Token< 398 96  10.9895800 4.010417  
      12) Token< 272.5 10   2.4000000 3.600000 *
      13) Token>=272.5 86   6.7093020 4.058140 *
     7) Token>=398 37   6.2702700 4.783784  
      14) ASL< 13.07619 7   1.4285710 4.285714 *
      15) ASL>=13.07619 30   2.7000000 4.900000 *

結果のグラフ

library(rpart.plot)
rpart.plot(jpn.DTmodel)


  • 上から順に、重要な指標と位置づけられる。

  1. 一番重要な指標が Type 131以上あるか、
  2. 次に Token が398 以上あるか
  3. そのうえ、ASL(平均文長)が13以上あれば、評価は 4.9 になる。

  • 一番下のレベルで、AWL(平均語長)が基準として選ばれている。
  • まったく図に表れない指標(各種語彙多様性指標や文の数)はスコアの決定には寄与しないといえる。

  • どんな指標を入れるかにより、判断は変わってくるが、逆に、どんな指標を入れようが、重要でない指標は選ばれないし、それほど重要でない指標は下のほうに位置づけられる。常に上のほうに位置づけられる指標は、常に重要であると判断される。

  • どんな指標の組み合わせで分析を行うかは、分析の目的しだい。

 スコアをカテゴリー変数とみなして分析しなおしてみる

> jpn.5c <- jpn.4c
> jpn.5c$Score <- as.factor(jpn.5c$Score)
> jpn.DTmodel2 <- rpart(Score ~ ., data = jpn.5c)
> jpn.DTmodel2
n= 285 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

 1) root 285 161 4 (0.007 0.032 0.4 0.44 0.12)  
   2) Token< 262 124  25 3 (0.016 0.073 0.8 0.11 0)  
     4) Token< 163.5 11   5 2 (0.18 0.55 0.27 0 0) *
     5) Token>=163.5 113  17 3 (0 0.027 0.85 0.12 0) *
   3) Token>=262 161  51 4 (0 0 0.099 0.68 0.22)  
     6) Token< 398 124  22 4 (0 0 0.13 0.82 0.048)  
      12) Type< 130.5 32  13 4 (0 0 0.41 0.59 0)  
        24) AWL< 4.229472 19   7 3 (0 0 0.63 0.37 0) *
        25) AWL>=4.229472 13   1 4 (0 0 0.077 0.92 0) *
      13) Type>=130.5 92   9 4 (0 0 0.033 0.9 0.065) *
     7) Token>=398 37   8 5 (0 0 0 0.22 0.78)  
      14) ASL< 13.07619 7   2 4 (0 0 0 0.71 0.29) *
      15) ASL>=13.07619 30   3 5 (0 0 0 0.1 0.9) *
> rpart.plot(jpn.DTmodel2)