使用 ctree 进行引导和递归分区分析

问题描述 投票:0回答:0

我目前正在努力处理一些数据的递归分区和装袋/引导。由于数据是机密的,我提供了一个使用“GBSG2”数据的可重现示例。 本质上,我目前正在尝试使用我自己关于相同患者群体的数据重现最近发表在《临床肿瘤学杂志》(https://ascopubs.org/doi/abs/10.1200/JCO.22.02222) 上的一篇文章。

我附上了他们的方法部分的印刷品和一个补充表,这基本上是我希望最终得到的

我的问题可以归结为

  • 我想为每个终端节点提取三年生存率,然后为每个患者指定他们属于哪个组——A 组 >70%,B 组; 70-50,摄氏度; 50-25 和 D 小于 25%。
  • 之后对数据进行打包时,需要发生同样的事情,这样我就可以在每个引导程序中看到特定患者被分配到哪个组以及这种情况发生的频率。

这是一些虚拟代码以及我到目前为止所做的

library(partykit)
data("GBSG2", package = "TH.data")

#Dataframe
df <- GBSG2

#Ctree object
stree <- ctree(Surv(time,cens)~., data=df, control= ctree_control(minsplit = 50, alpha = 0.1, multiway = T))

#The following part I hope could be done more efficiently
n <- predict(stree, type="node")
nd <- factor(predict(stree, type="node"))
df$node <- n
fit1 <- survfit(Surv(time,cens)~nd, data=df)
summary(fit1, times=365*3)

#Manual input to each node by reading the transcript
df$grp <- ifelse(df$node==3, "A",NA)
df$grp <- ifelse(df$node==4, "A", df$grp)
df$grp <- ifelse(df$node==7, "C", df$grp)
df$grp <- ifelse(df$node==8, "D", df$grp)
df$grp <- ifelse(df$node==9, "B", df$grp)

我相信在我的 bootstrap/bagging 完成之前需要修复以上问题,以便获得与附加的补充表相匹配的结果(我想做 1000 次,但我做了 10 次直到它起作用) .

    #Bagging
df_bag <- df %>% 
  select(-"node", -"grp")
cf <- cforest(Surv(time,cens)~.,data=df_bag, ntree=10, mtry = Inf)

非常感谢,

托拜厄斯伯格

r recursion partitioning ctree
© www.soinside.com 2019 - 2024. All rights reserved.