2015-02-11 58 views
0

我在派對R包中使用了ctree函數。我想確定樹中使用的所有預測變量,以便減少用於進一步分析的data.frame維度。例如:識別派對節點中的所有不同變量1

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

我想一個函數接收基於myModel和返回溫度,風和臭氧

回答

1

您可以嘗試使用此:

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

它展平了樹和查找元素在其名下有variableName

在您的模型上運行它返回:

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

僅爲了完整:NicE的答案與party包中的ctree()實現相關。如果有人想根據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"