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值很小的情况下更可靠。如果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,这里是一个例子!