对于partykit::ctree
对象中的节点x,我使用以下行获取节点上的拆分变量:
k=info_node(x)
names(k$p.value)
但是,此代码返回的节点的分裂变量与plot
创建的树上的变量不同。结果表明,k$criterion
中的三列具有最小p值;即
inds=which(k$criterion['p.value',]==k$p.value)
length(inds) #3
似乎info_node(x)
将三个变量中的第一个作为names(k$p.value)
返回,但是plot
选择了第三个变量。我不知道这样的差异是否有两个原因:
。
任何洞察力都是值得欣赏的!
发布于 2020-07-01 03:14:33
这些比较是在log-p值标度范围内进行的,也就是说,在极小的p-值情况下,比较更可靠。如果p值仍然保持绑定(在机器精度内),则根据相应测试统计量的大小将其断开。
发布于 2020-07-04 03:28:16
以下是一个例子。谢谢!
library(partykit)
a=rep('N',87)
a[77]='Y'
b=rep(F,87)
b[c(7,10,11,33,56,77)]=T
d=rep(1,87)
d[c(29,38,40,42,65,77)]=0
dfb=data.frame(a=as.factor(a),b=as.factor(b),d=as.factor(d))
tFit=ctree(a ~ ., data=dfb, control = ctree_control(minsplit= 10,minbucket = 5,
maxsurrogate=2, alpha = 0.05))
plot(tFit) #displayed splitting variable is d
tNodes=node_party(tFit)
nodeInfo=info_node(tNodes)
names(nodeInfo$p.value) #b, not d
https://stackoverflow.com/questions/62666784
复制相似问题