使用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)
我的问题是 - 如何衡量我的三个解释变量(年龄,数量,开始)对模型的“重要性”?
如果这是一个回归模型,我可以查看“anova”F检验中的p值(在有{变量和无变量的lm
模型之间)。但是在lm
上使用“anova”与rpart
对象的等价性是什么?
(我希望我设法让我的问题清楚)
感谢。
答案 0 :(得分:3)
当然anova是不可能的,因为anova涉及计算响应变量的总变化并将其划分为信息组件(SSA,SSE)。我无法看到如何计算像Kyphosis这样的分类变量的平方和。
我认为你实际谈论的是属性选择(或评估)。例如,我会使用information gain
度量。我认为这是用于在树中的每个节点处选择测试属性的内容,并且选择具有最高信息增益(或最大熵减少)的属性作为当前节点的测试属性。此属性最小化了对结果分区中的样本进行分类所需的信息。
我不知道是否存在根据R中的信息增益对属性进行排名的方法,但我知道WEKA中有属性,并且名为InfoGainAttributeEval它评估了属性的价值通过测量关于班级的信息增益。如果您使用Ranker
作为Search Method
,则会根据各个评估对属性进行排名。
修改强>
我终于找到了一种使用库CORElearn
estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)