识别party ctree模型中的所有不同变量

时间:2015-02-11 14:29:24

标签: r tree party

我在Party R包中使用ctree函数。我想识别树中使用的所有预测变量,以减少用于进一步分析的data.frame维度。例如:

library(ctree)
data(ozone)
myModel<-ctree(Ozone~., data=na.omit(airquality))
plot(myModel)

我想要一个接收myModel并返回Temp,Wind和Ozone的函数

2 个答案:

答案 0 :(得分:3)

为了完整性:NicE的答案与ctree()包中的party实现有关。如果有人想根据partykit包中的新(和推荐)实现做同样的事情,那么就需要一个不同的函数,因为内部表示完全改变了。

getUsefulPredictors <- function(x) {
  varid <- nodeapply(x, ids = nodeids(x),
    FUN = function(n) split_node(n)$varid)
  varid <- unique(unlist(varid))
  names(data_party(x))[varid]
}

首先从树的每个节点中的每个分割获得变量ID varid。然后获得模型框架的名称,并返回与唯一变量ID有关的名称。在您的示例中:

library("partykit")
myModel <- ctree(Ozone ~ ., data = na.omit(airquality))
getUsefulPredictors(myModel)    
## [1] "Temp" "Wind"

答案 1 :(得分:1)

你可以试试这个:

getUsefulPredictors<-function(x){
  flatTree<-unlist(x@tree)
  pred<-unique(flatTree[grepl("*variableName",names(flatTree))])
  return(pred)
}

它会使树变平并查找名称中包含variableName的元素

在模型上运行它返回:

getUsefulPredictors(myModel)
#[1] "Temp" "Wind"