笔者在<<非比例风险的Cox回归模型_分层分析法>>中用到一个例子: 示例:从TCGA(The Cancer Genome Atlas, 癌症基因组图谱,https://portal.gdc./)下载的多发性骨髓瘤CoMMpass研究中的临床资料(2021年9月),数据经过了清理。变量包括id、age(年龄)、gender(性别,0=female;1=male);race(种族:0=white;1=others)、FamHist(家族癌症史:0=No;1=Yes)、stage(病理学分期:1=I期;2=II期;3=III期)、Trt(治疗方案,0=药物联合治疗,1=制剂+干细胞移植),status(状态:0=alive;1=dead)、cause(死亡原因:0=Alive;1=Not Cancer Related;2=Cancer Related);time(确诊后生存时间,days)。治疗多发性骨髓瘤时在药物治疗中加入干细胞移植有助于降低患者的癌症死亡率? 本例删除了缺失值,实际分析631例。由于较早出现了截尾数据,总体中位生存时间无法估计,Ⅲ期中位生存时间1753天。 【生存设置】声明生存时间数据,时间变量选入time,失效变量选入cause,失效值输入2(Cancer Related Dead)。在查看数据信息声明过了此处就不用再额外声明了。 默认结果显示子风险比率SHR,如果想显示系数,可在主对话框中的[报告]选项卡中选择[报告系数,而不是子风险比率]的复选框。 实际分析631例,发生失效事件76个,竞争事件62个,删失293个。伪似然值=-432.41,Chi2=44.39,P<0.001,表明模型是有统计学意义的,至少有一个变量的系数不为0。在校正其他因素的作用后,治疗多发性骨髓瘤时在药物治疗中加入干细胞移植确实有助于降低患者的癌症死亡率(Z=-3.69,P<0.001)。分段模型的逻辑、分界点、PH假定检验等可参考笔者在《非比例风险的Cox回归模型_分段模型》中的介绍,结果详细解读可参考《R笔记:生存分析之竞争风险模型[概念与实操]》,就不再赘述啦。 crr(ftime, fstatus, cov1, cov2, tf, cengroup, failcode=1, cencode=0,subset, na.action=na.omit, gtol=1e-06, maxiter=10, init, variance=TRUE) 几个关键参数说明:cov1指定的是需要分析和校正的因素,cov2指定的是其实就是时变协变量(类似于stata中tvc参数),而tf则是时间变量的函数,该函数与时变协变量的乘积作为时依协变量纳入模型(类似于stata中texp参数);cengroup指定分层变量;failcode指定感兴趣的结局编码, cencode指定删失编码;na.action默认对有缺失值的个案进行删除处理;gtol迭代停止收敛容差;maxiterinit是允许的最大迭代次数;init指定回归参数初始值。 library(readxl) MM<- read_excel("D:/Temp/PCTC20210924.xlsx") MM<-na.omit(MM) MM$stage<-factor(MM$stage) #age、gender、race、FamHist、Trt都是采用0/1赋值的二分类变量,不设为因子不影响结果 library(cmprsk) library(survival) mm<-MM[c("age","gender","race","FamHist","stage","Trt")] cov<-model.matrix(~age+gender+race+FamHist+stage+Trt,data=mm)[,-1] #crr函数要求变量的输入形式是矩阵。model.matrix将为因子编码生成变量0/1哑变量,并保持连续变量不变。最后的[,-1]从model.matrix的输出中删除常数项 head(cov) sdcr<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=MM["stage"], tf=function(uft) uft, failcode=2, cencode=0) #tf构造了一个时间变量函数uft,这个函数是关于失效时间的,该命令中不做任何变换,直接与cov2中指定的变量stage进行相乘来构建进入模型的时依协变量。模型中将包含age、gender、race、FamHist、stage哑变量、Trt以及一个关于stage的时依协变量 #特别注意cov2=MM["stage"] ,而不能使用cov2=cov[,5]。因为cov矩阵中stage被编码成了哑变量,cov[,5]相当于stage2。变量Trt也不再是cov[,6]而是cov[,7] summary(sdcr,conf.int=0.95) 结果中的stage*tf1就是时依协变量,同前面stata的运行结果完全一致。在校正其他因素的作用后,治疗中加入干细胞移植有助于降低多发性骨髓瘤患者的癌症死亡率 (Z=-3.689,P=0.00023)。 sdcr2<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=MM["stage"], tf=function(uft) uft, failcode=1, cencode=0) summary(sdcr2,conf.int=0.95) ##构造age与时间平方的时依协变量age*time+age*time2 sdcr_age2<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=cbind(cov[,1],cov[,1]), tf=function(uft) cbind(uft,uft*uft), failcode=2, cencode=0) sdcr_stage<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=cov2=MM["stage"], tf=function(uft) log(uft), failcode=2, cencode=0) sdcr_gender.Trt<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=cov[,c(2,7)], tf=function(uft) cbind(uft,uft), failcode=2, cencode=0) #sdcr_age.stage.Trt<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=cbind(cov[,1],cov2=MM["stage"],cov[,7]), tf=function(uft) cbind(uft,uft,uft), failcode=2, cencode=0) sdcr.phtest<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=cbind(cov[,-c(5:6)],MM["stage"]), tf=function(uft) cbind(uft,uft,uft,uft,uft,uft), failcode=2, cencode=0) summary(sdcr.phtest) 结果显示stage确实不满足风险比例假定(P=0.026)。 sdcr.segmt<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov, cov2=MM["stage"], tf=function(uft) uft>1000, failcode=2, cencode=0) summary(sdcr.segmt,conf.int=0.95) sdcr.strata<-crr(ftime=MM$time,fstatu=MM$cause,cov1=cov[,-c(5:6)], cengroup=MM$stage, failcode=2, cencode=0) summary(sdcr.strata) |
|
来自: Memo_Cleon > 《待分类》