首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >splitting::ctree()在选择相同p-值的分裂变量时如何打破领带

splitting::ctree()在选择相同p-值的分裂变量时如何打破领带
EN

Stack Overflow用户
提问于 2020-06-30 22:02:11
回答 2查看 188关注 0票数 1

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

代码语言:javascript
运行
复制
k=info_node(x)
names(k$p.value)

但是,此代码返回的节点的分裂变量与plot创建的树上的变量不同。结果表明,k$criterion中的三列具有最小p值;即

代码语言:javascript
运行
复制
inds=which(k$criterion['p.value',]==k$p.value)
length(inds) #3

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

  1. 多变量具有最小p值,在只选择一个分裂变量时有一种内部方法来打破这种联系。

  1. 可能这三个变量的p值略有不同,但由于k$准则中的p值精度固定,它们的p值似乎是相同的。

任何洞察力都是值得欣赏的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-01 03:14:33

这些比较是在log-p值标度范围内进行的,也就是说,在极小的p-值情况下,比较更可靠。如果p值仍然保持绑定(在机器精度内),则根据相应测试统计量的大小将其断开。

票数 0
EN

Stack Overflow用户

发布于 2020-07-04 03:28:16

以下是一个例子。谢谢!

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62666784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档