1

对于partykit::ctree对象中的节点 x,我使用以下行来获取节点上的拆分变量:

k=info_node(x)
names(k$p.value)

但是,此代码返回的节点的拆分变量与创建的树上的不同plot。事实证明,其中的三列k$criterion具有最小 p 值;IE

inds=which(k$criterion['p.value',]==k$p.value)
length(inds) #3

似乎将info_node(x)三个变量中的第一个返回为names(k$p.value),但plot选择第三个。我想知道这种差异是否是由两个原因引起的:

  1. 多个变量具有最小 p 值,并且有一种内部方法可以打破这种只选择一个拆分变量的关系。

  2. 也许这三个变量的 p 值略有不同,但是由于 k$criterion 中的固定 p 值精度,它们似乎具有相同的 p 值。

任何见解表示赞赏!

4

2 回答 2

0

比较是在对数 p 值范围内进行的,即在 p 值很小的情况下更可靠。如果 p 值仍然存在关联(在机器精度范围内),则根据相应检验统计量的大小打破关联。

于 2020-07-01T03:14:33.533 回答
0

这是一个例子。谢谢!

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
于 2020-07-04T03:28:16.780 回答