R partykit::ctree()如何在选择相同p值的拆分变量时打破僵局

R partykit::ctree()如何在选择相同p值的拆分变量时打破僵局,r,party,ctree,R,Party,Ctree,对于partykit::ctree对象中的节点x,我使用以下行获取节点上的拆分变量: k=info_node(x) names(k$p.value) 但是,此代码返回的节点的拆分变量与plot创建的树上的拆分变量不同。结果表明,k$criteria中的三列具有最小的p值;i、 e inds=which(k$criterion['p.value',]==k$p.value) length(inds) #3 似乎info\u节点(x)返回三个变量中的第一个,作为名称(k$p.value),但绘图

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

k=info_node(x)
names(k$p.value)
但是,此代码返回的节点的拆分变量与
plot
创建的树上的拆分变量不同。结果表明,
k$criteria
中的三列具有最小的p值;i、 e

inds=which(k$criterion['p.value',]==k$p.value)
length(inds) #3
似乎
info\u节点(x)
返回三个变量中的第一个,作为
名称(k$p.value)
,但
绘图
选择第三个。我想知道造成这种差异的原因有两个:

  • 多个变量的p值最小,有一种内部方法可以打破这种束缚,只选择一个拆分变量

  • 也许这三个变量的p值略有不同,但由于k$标准中的固定p值精度,它们似乎具有相同的p值


  • 任何洞察都将不胜感激

    比较是在对数p值范围内进行的,即在p值很小的情况下更可靠。如果p值仍保持联系(机器精度范围内),则根据相应测试统计数据的大小将其打破。

    在对数p值范围内进行比较,即,在p值很小的情况下,比较更可靠。如果p值仍保持联系(在机器精度范围内),则根据相应测试统计数据的大小将其打破。

    以下是一个示例。谢谢大家!

    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
    

    这里有一个例子。谢谢大家!

    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
    

    谢谢
    名称(k$p.value)
    是如何选择的?是。这是与smalles p值相关的变量的名称-如有必要,在断开连接后。那么为什么
    名称(k$p.value)
    与树上的名称不同,通过
    绘图
    ?请发布一个最小的自包含可复制的示例,然后我们可以查看。hi@AchimZeileis,我发布了一个示例!你能看一下吗?谢谢!
    名称(k$p.value)
    是如何选择的?是。这是与smalles p值相关的变量的名称-如有必要,在断开连接后。那么为什么
    名称(k$p.value)
    与树上的名称不同,通过
    绘图
    ?请发布一个最小的自包含可复制的示例,然后我们可以查看。hi@AchimZeileis,我发布了一个示例!你能看一下吗?嗨@AchimZeileis,这是一个例子!嗨@AchimZeileis,这里是一个例子!