2015-04-23 75 views
0

我是R和rpart软件包的新手。我想使用下面的示例数据创建一棵树。不能通过R中的r创建树

我的数据集与此类似 MYDATA =

"","A","B","C","status" 
"1",TRUE,TRUE,TRUE,"okay" 
"2",TRUE,TRUE,FALSE,"okay" 
"3",TRUE,FALSE,TRUE,"okay" 
"4",TRUE,FALSE,FALSE,"notokay" 
"5",FALSE,TRUE,TRUE,"notokay" 
"6",FALSE,TRUE,FALSE,"notokay" 
"7",FALSE,FALSE,TRUE,"okay" 
"8",FALSE,FALSE,FALSE,"okay" 
fit <- rpart(status ~ A + B + C, data = mydata, method = "class") 

或 我用不同的公式和在此不同的方法尝试。但始终只有根节点生成。没有可能的情节。 其显示

fit 
n= 8 
node), split, n, loss, yval, (yprob) 
* denotes terminal node 
1) root 8 3 okay (0.3750000 0.6250000) * 

如何创建树?我需要在每个节点上显示 “okay”和“notokay”的百分比。我需要指定A,B或C中的一个用于分割并显示统计数据

+0

函数rpart只显示根树,如果其他变量没有添加预测值的模型,换句话说:你不能区分之间使用变量的不同类型的状态,它们是非常不好的预测因子,没有预测能力 – grrgrrbla

回答

1

使用默认设置rpart()根本不考虑分割。 minsplit默认参数为20(请参阅?rpart.control),它是“节点中必须存在的最小观察次数,以便尝试分割”。因此,对于你的8个观察,甚至不考虑分裂。

如果您决定考虑拆分,那么您可以减少参数minbucket和/或minsplit。例如

fit <- rpart(status ~ A + B + C, data = mydata, 
    control = rpart.control(minsplit = 3)) 

产生以下树:

fitted rpart tree

显示由

plot(partykit::as.party(fit), tp_args = list(beside = TRUE)) 

和从rpart输出的打印创建的是:

n= 8 

node), split, n, loss, yval, (yprob) 
     * denotes terminal node 

1) root 8 3 okay (0.3750000 0.6250000) 
    2) A=FALSE 4 2 notokay (0.5000000 0.5000000) 
    4) B=TRUE 2 0 notokay (1.0000000 0.0000000) * 
    5) B=FALSE 2 0 okay (0.0000000 1.0000000) * 
    3) A=TRUE 4 1 okay (0.2500000 0.7500000) * 

这是否特别有用是一个不同的问题,虽然...