ROC 曲線と cindex 曲線は一貫性の指標に属します。背景の一部のファンから、cox 回帰で時間相関 roc 曲線と時間相関 cindex 曲線を描く方法を尋ねられたので、今日はそれを実演しましょう。
まずデータと R パッケージをインポートします
library(survival)
library("survminer")
library(foreign)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)
names(bc)
これは私たちがよく使用する乳がんデータです(公式アカウントからの返信: 乳がん、このデータを入手できます)、age は年齢、pathsize は病理学的腫瘍サイズ (cm)、lnpos は腋窩リンパ節陽性、histgrad は組織病理学的グレードを意味します、er はエストロゲン受容体の状態を示し、pr はプロゲステロン受容体の状態、状態結果イベントが死亡かどうかを示し、pathscat は病理学的腫瘍サイズのカテゴリー (グループ化変数) を示し、ln_yesno はリンパ節腫大があるかどうかを示し、時間は生存を示します。時間、agec は私たちのものです。ご自身で設定してください。心配する必要はありません。
一部の変数はカテゴリ変数です。最初にそれらを因子に変換します。
bc$histgrad<-as.factor(bc$histgrad)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)
まず、カジュアルに構築された 3 つのコックス回帰方程式を確立します。
f1<-coxph(Surv(time,status)~er+histgrad+pr+age+ln_yesno,bc,x=TRUE,y=TRUE)
f2<-coxph(Surv(time,status)~er+histgrad+ln_yesno,bc,x=TRUE,y=TRUE)
f3<-coxph(Surv(time,status)~ln_yesno,bc,x=TRUE,y=TRUE)
多くの R パッケージは時間依存の ROC を実行できますが、今回は RiskRegression パッケージを紹介しますが、興味があれば他のパッケージも次回紹介できます。
library(riskRegression)
f1 の時間相関 roc を理解したいとします。ここで、1 を共変量に変更することが重み付けに等しい場合、formula=Surv(time,status)~1 は重みなしと等しいという事実に注意する必要があります。
A3<- riskRegression::Score(list("f1"=f1),
formula=Surv(time,status)~1,
data=bc,
metrics="auc",
null.model=F,
times=seq(3,132,1))
plotAUC(A3)
このようにして、グラフが生成されますが、これは非常に簡単で、データを抽出して ggplot に配置して描画することもできます。
auc<-plotAUC(A3)
ggplot()+geom_line(data=auc, aes(times,AUC),linetype=1,size=1,alpha = 0.6,colour="red")+
geom_ribbon(data=auc, aes(times,ymin = lower, ymax = upper),alpha = 0.1,fill="red")+
geom_hline(yintercept=1, linetype=2,size=1)+theme_classic()+
labs(title = "时间相关性ROC", x="times", y="AUC")
f1 と f2 の時間相関 roc を知りたいとします。
A3<- riskRegression::Score(list("f1"=f1,"f2"=f2),
formula=Surv(time,status)~1,
data=bc,
metrics="AUC",
null.model=F,
times=seq(3,132,1))
auc<-plotAUC(A3)
ggplot()+geom_line(data=auc, aes(times,AUC,group=model,col=model))+
geom_ribbon(data=auc, aes(times,ymin = lower, ymax = upper,fill=model),alpha = 0.1)+
geom_hline(yintercept=1, linetype=2,size=1)+theme_classic()+
labs(title = "时间相关性ROC", x="times", y="AUC")
時間依存の cindex を導入しましょう。これは pec パッケージを使用する必要があります。最初に f1 を描画します。
library(pec)
A1<-pec::cindex(list("f1"=f1),
formula=Surv(time,status)~er+histgrad+pr+age+ln_yesno,
data=bc,
eval.times=seq(3,132,1))
plot(A1)
f1、f、f3 の cindex を知りたいとします。
A1<-pec::cindex(("f1"=f1,"f2"=f2,"f3"=f3),
formula=Surv(time,status)~er+histgrad+pr+age+ln_yesno,
data=bc,
eval.times=seq(3,132,1))
plot(A1)
色やラベルなどを変更することもできますが、ここでは行いません。