全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
815 2
2023-08-14
我在做一个竞争风险模型,用cph构建模型时,发现构建的cox模型结果与多因素竞争风险分析结果不一致,于是我换用coxph构建模型,多了一步【df_c <- df %>% filter(.,failcode == 1)】,在此之后,cox模型结果和多因素模型结果一致。于是用regplot绘制了列线图,但是我不知如何算每个患者的列线图得分,想请大神帮帮我。以下是我的代码:
library(mstate)
set.seed(1000)

df=crprep("Survival_months","CVD",
          data=train,trans=c(1,2),
          cens=0,id="id",  
          keep=c("Age","Marital","Race","Year_of_diagnosis","Grade"))
df$Time=df$Tstop-df$Tstart

library("dplyr")
df_c <- df %>% filter(.,failcode == 1)
m.crr<- coxph(Surv(Time,status==1)~Grade+Year_of_diagnosis+Race+Marital+Age,
              data=df_c,
              weight=weight.cens,
              subset=failcode==1)
c1=summary(m.crr)
traincindex=data.frame(c1$concordance)
traincindex

library(regplot)
nom_c <- regplot(m.crr,
        failtime = c(36,60,96), prfail = T, droplines=T,points=T,
        plots=c("density","no plot"),
        title = "Nomogram")

nom_c

同时我还有一个问题,如果coxph可以用这个代码【df_c <- df %>% filter(.,failcode == 1)】,那cph也可以用吗,或者coxph用的原理是什么?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-8-23 09:37:25
1. 计算每个患者的列线图得分

可以通过预测每个患者在给定时间点的生存概率,然后转换为得分来实现。示例代码:

```r
# 预测每个患者在36,60,96月的生存概率
surv_prob <- survfit(Surv(failtime, failcode) ~ 1, data = df_c)
p1 <- predict(surv_prob, newdata=data.frame(failtime=36), type='quantile')
p2 <- predict(surv_prob, newdata=data.frame(failtime=60), type='quantile')
p3 <- predict(surv_prob, newdata=data.frame(failtime=96), type='quantile')

# 将生存概率转换为得分(0-100)
df_c$score1 <- 100 * (1 - p1)  
df_c$score2 <- 100 * (1 - p2)
df_c$score3 <- 100 * (1 - p3)
```

然后就可以用这些得分绘列线图了。

2. cph模型

coxph建模使用的是符合PH假设的Cox回归模型,可以进行样本筛选;而cph建模是多状态模型,默认会考虑所有观测和转移,不适合直接筛选样本后建模。

更适当的做法是用msfit建立多状态模型,然后用crs$transitions指定不同转移类型进行风险预测。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-9-18 10:14:12
oliyiyi 发表于 2023-8-23 09:37
1. 计算每个患者的列线图得分

可以通过预测每个患者在给定时间点的生存概率,然后转换为得分来实现。示例 ...
好的,非常感谢!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群