「anova」(lm の場合) と rpart オブジェクトと同等のものはありますか?
-
25-09-2019 - |
質問
Rを使用する場合 rpart
機能を使用すると、モデルを簡単にフィットさせることができます。例えば:
# Classification Tree with rpart
library(rpart)
# grow tree
fit <- rpart(Kyphosis ~ Age + Number + Start,
method="class", data=kyphosis)
printcp(fit) # display the results
plotcp(fit)
summary(fit) # detailed summary of splits
# plot tree
plot(fit, uniform=TRUE,
main="Classification Tree for Kyphosis")
text(fit, use.n=TRUE, all=TRUE, cex=.8)
私の質問は、3つの説明変数(年齢、数、開始)のそれぞれの「重要性」をモデルに測定するにはどうすればよいですか?
これが回帰モデルであれば、「分散分析」F 検定の p 値を調べることができたでしょう ( lm
変数ありと変数なしのモデル)。しかし、「分散分析」を使用するのと同等のことは何ですか? lm
に rpart
物体?
(私の質問がうまく伝われば幸いです)
ありがとう。
解決
もちろん、分散分析には応答変数の合計変動を計算し、それを情報成分 (SSA、SSE) に分割することが含まれるため、分散分析は不可能です。Kyphosis のようなカテゴリ変数の平方和を計算する方法がわかりません。
実際に話しているのは属性の選択(または評価)だと思います。私なら使用します information gain
たとえば測定します。これはツリー内の各ノードでテスト属性を選択するために使用され、情報ゲインが最も高い (またはエントロピー削減が最も大きい) 属性が現在のノードのテスト属性として選択されると思います。この属性により、結果として得られるパーティション内のサンプルを分類するために必要な情報が最小限に抑えられます。
R で得られる情報に応じて属性をランク付けする方法があるかどうかは知りませんが、あることは知っています。 ウェカ そして名前が付けられています InfoGainAttributeEval クラスに関する情報利得を測定することによって、属性の価値を評価します。そして、あなたが使用する場合 Ranker
として Search Method
, 、属性は個別の評価によってランク付けされます。
編集ライブラリを使用してRでこれを行う方法をついに見つけました CORElearn
estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)