R言語を使用して競争力のあるリスクモデルを作成し、ノモグラムを描く方法を教えます

競合リスクモデルとは、臨床イベントで競合するアウトカムイベントを指し、元のアウトカムを変化させるイベントであるため、競合リスクモデルと呼ばれます。たとえば、患者の腫瘍の再発を観察したいのですが、観察期間中に交通事故で急死したり、他の病気で亡くなったりしたため、再発を観察することができません。この場合、欠落しているデータは右打ち切りのみとして扱われます。この場合、データの推定は正しくありません。これは、COX回帰ではなく、データ分析の競合リスクモデルを優先する必要があるということです。競合リスクモデルはデータマイニングでよく使用されます。今後、SEERデータベースマイニングチュートリアルで、データマイニングに競合リスクモデルを使用する方法を紹介します。
ここに画像の説明を挿入
R言語の生存に付属する膀胱がん膀胱1のデータセットを使用します。競合リスクモデルの要件を満たすために、少し並べ替えを行いました。観察したいのは腫瘍の再発であり、死はそのリスク競争要因。
最初に必要なRをインポートし、次にデータをインポートします

library(foreign)
library(survival)
library("cmprsk")
library(rms)
be<-read.csv("E:/r/test/jzfx.csv",sep=',',header=TRUE)

ここに画像の説明を挿入
データがどのように見えるかを見てみましょう。データ
ここに画像の説明を挿入
の名前は次のように解釈されます:
id:患者番号;治療:1。プラセボ2.ビタミンB 6. 3.チオテパ;
番号:腫瘍の初期数サイズ:最大初期腫瘍サイズ(cm)再発:再発の数
開始、停止:開始、停止:各時間間隔の開始時間と終了時間ステータス(結果):1。生存2.再発3.死亡腫瘍:再発rsizeで見つかった腫瘍の数:再発時の最大腫瘍サイズ

## 不同治疗方案的复发率和竞争事件发生率
cum<-cuminc(be$etime,be$status,be$treatment)
plot(cum)

ここに画像の説明を挿入

美化することもできます
ここに画像の説明を挿入

## 多因素竞争风险模型-复发的发生率(或竞争事件的发生率,failcode = 2)
time<-be$etime
status<-be$status
x <- be[, c('treatment', 'number', 'size','recur')]
fit2 <- crr(time,status,x,failcode = 1)#这里failcode = 1代表肿瘤复发
summary(fit2)

ここに画像の説明を挿入
さて、私たちはモデルを手に入れました、今私たちはそれをテストするために1人の患者を連れてきます

fit3<-predict(fit2,c(1,2,1,0)) #对应数据X的4个指标
plot(fit3,lty=1,color="darkcyan",ylab="Cumulative probability of recurrence")

ここに画像の説明を挿入
##次に、ノモグラムを作成しましょう。
まず、データに重みを付ける必要があります。なぜ重みを付ける必要があるのですか?原則は非常に複雑です。競争リスクモデルの原則はわかりませんが、大牛はそれを重み付けする必要があります。

library(mstate)
bc<-be
bc<-bc[-1,]
bc<-bc[-129,]
be.w<-crprep("etime",status = "status",data =bc,trans = c(1,2),cens = 0,id="id",
             keep = c('treatment', 'number', 'size','recur'))#进行加权

ここに画像の説明を挿入

be.w$Time<-be.w$Tstop-be.w$Tstart#添加个时间,好进行COX回归
dd<-datadist(be.w)
options(datadist="dd")
f <- cph(Surv(Tstart,Tstop,status==1) ~ treatment+number+size+recur, x=T, y=T, 
         surv=T, data=be.w, time.inc=36)#建立COX回归
surv<- Survival(f)#生成预测函数
nom <- nomogram(f, fun=list(function(x) surv(36, x),
                            function(x) surv(60, x)),
                funlabel=c("3-year survival Probability", 
                           "5-year survival Probability"))#制作列线图
plot(nom)

ここに画像の説明を挿入
このノモグラムは、主に確率が小さすぎるため、少し醜いです。興味がある場合は、自分で調整できます
###ノモグラムの中央値

med <- Quantile(f) # 计算中位生存时间
nom2 <- nomogram(f, fun=function(x) med(lp=x),funlabel="Median Survival Time")
plot(nom2)

ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/dege857/article/details/112257071