是否有“anova”(对于lm)与rpart对象的等价?

时间:2010-03-07 18:25:08

标签: r tree regression rpart cart-analysis

使用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对象的等价性是什么?

(我希望我设法让我的问题清楚)

感谢。

1 个答案:

答案 0 :(得分:3)

当然anova是不可能的,因为anova涉及计算响应变量的总变化并将其划分为信息组件(SSA,SSE)。我无法看到如何计算像Kyphosis这样的分类变量的平方和。

我认为你实际谈论的是属性选择(或评估)。例如,我会使用information gain度量。我认为这是用于在树中的每个节点处选择测试属性的内容,并且选择具有最高信息增益(或最大熵减少)的属性作为当前节点的测试属性。此属性最小化了对结果分区中的样本进行分类所需的信息。

我不知道是否存在根据R中的信息增益对属性进行排名的方法,但我知道WEKA中有属性,并且名为InfoGainAttributeEval它评估了属性的价值通过测量关于班级的信息增益。如果您使用Ranker作为Search Method,则会根据各个评估对属性进行排名。

修改 我终于找到了一种使用库CORElearn

在R中执行此操作的方法
estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)