R !!!決定木分析 !サンプルデータとスクリプト サンプルデータ(各指標)から、 1)欠損値を含むデータ2つを除き、 2)ファイル名のカラムを削除したものを、 jpn.4cというデータフレームに入れているものとします。 {{pre > 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して使うデータフレーム名を決めておく。 {{pre > 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) {{ref_image DTmodel.png}} *上から順に、重要な指標と位置づけられる。 +一番重要な指標が Type 131以上あるか、 +次に Token が398 以上あるか +そのうえ、ASL(平均文長)が13以上あれば、評価は 4.9 になる。 *一番下のレベルで、AWL(平均語長)が基準として選ばれている。 *まったく図に表れない指標(各種語彙多様性指標や文の数)はスコアの決定には寄与しないといえる。 *どんな指標を入れるかにより、判断は変わってくるが、逆に、どんな指標を入れようが、重要でない指標は選ばれないし、それほど重要でない指標は下のほうに位置づけられる。常に上のほうに位置づけられる指標は、常に重要であると判断される。 *どんな指標の組み合わせで分析を行うかは、分析の目的しだい。 !!標準化してみる