这个例子展示了如何将生存数据转换为计数过程形式,然后构建一个具有时变协变量的Cox比例风险模型。
具有时变协变量的Cox模型要求生存数据为计数过程形式,而不是标准布局。要查看标准布局和计数过程形式的生存数据之间的差异,请加载以下样本数据。
负载simplesurvivaldata
这个示例数据包含两个表:复发
和relapseCP
.这两个表分别以标准布局和计数处理形式表示相同的简单生存数据。
以标准布局显示数据。
复发
复发=2×5表身份证年龄StopTreatment时间审查 __ ____ _________ ___ _____________ 1 5 0 20南2 20 30 12
该数据代表了两名治疗状态随时间变化的患者。患者1在0 - 5周的间隔时间内未接受治疗,间隔时间结束时复发。患者2在0 - 12周期间接受治疗,而在12 - 20周期间不接受治疗。患者2未复发,20周后退出研究。
现在以计数过程的形式显示相同的数据。
relapseCP
relapseCP =3×6表ID tStart tStop审查TreatmentStatus时代 __ ______ _____ _________ ___ _______________ 1 0 5 0 20 0 2 0 12 1 30 1 2 12 20 30 0
在计数过程形式中,每一行表示风险区间(tStart
,tStop
而不是事件时间的单个值。审查
如果在风险间隔的末尾观察到事件,则为0,如果不是,则为1。TreatmentStatus
对应于一个随时间变化的协变量,它表示相同的信息StopTreatment
在标准布局。注意,Cox模型假设时间相关的协变量在每个风险区间都是常数。
接下来,加载要转换的样本数据。
负载survivaldatacp
这个示例数据包含一个表实验室
,这是模拟生存数据,包括在标准布局下对每个患者的重复测量。
以标准布局显示模拟生存数据。
实验室
实验室=6×7表ID时间审查性Lab_0 Lab_50 Lab_100 __ ____ _________ ___ _____ ______ _______ 1 46 0 138 0.3南南2 1 3 0 0.2 0.23 0.39 0.18 - 0.22 94 0 1南4 50 0 0 0.21 0.2南5 106 0 0 6 98 0 0 0.25 0.21 0.42 0.21 0.22南
在标准布局中,表格的每一行显示一个患者的信息。
ID
表示患者的ID。你不包括ID
作为Cox模型的输入。包括ID
在数据集中确认该数据集已正确转换为计数过程形式。
时间
以天为单位表示事件发生的时间,对应响应变量。
审查
有每个患者的审查信息,其中1表示审查数据,0表示观察期结束时观察到事件的确切时间。
性
是一个时间无关的预测器,其中1表示女性,0表示男性。
Lab_0
,Lab_50
,Lab_100
表示在第0、50和100天测量的三个连续的实验室结果,对应于一个时间依赖的预测器。
转换生存数据实验室
要计算进程表单,执行下面的代码。这段代码转换时间
为风险区间(tStart
,tStop
,并结合了三个时间依赖预测器的向量,Lab_0
,Lab_50
,Lab_100
,变成一个向量,实验室
.
mTime = [0 50 100];%的测量时间threeLabs =[实验室。Lab_0实验室。Lab_50实验室.Lab_100]; nLabMeasure = sum(sum(~isnan(threeLabs)));%实验室测量次数data = 0 (nLabMeasure 6);%每个观察对应一行oID = 0;%观察ID为i = 1: size(labS,1) idx = find(mTime <= labS. time (i));为j = 1: length(idx)-1 oID = oID + 1;:数据(oID) = [labS.ID (i) mTime (j: + 1) 1 labS.Sex (i) threeLabs (i, j)];结束oID = oID + 1;data(oID,:) = [labS.ID(i) mTime(length(idx)) labS.Time(i))...labS.Censoring (i) labS.Sex (i) threeLabs(我、长度(idx)));结束labCP =表(数据(:1),数据(:,2),数据(:,3),数据(:,4),数据(:,5),数据(:,6),...“VariableNames”, {“ID”,“tStart”,“tStop”,“审查”,“性”,“实验室”});
以计数过程的形式显示生存数据。
labCP
labCP =13×6表ID tStart tStop审查性实验室 __ ______ _____ _________ ___ ____ 1 50 0 46 0 1 0.3 - 2 0 1 0 2 50 100 1 0 0.23 0.2 0.39 100 138 1 0 3 0 1 1 0.18 3 50 94 0 1 0.22 0.21 4 0 50 1 0 4 50 50 50 0 0 0.2 5 0 1 0 5 50 100 1 0 0.21 0.25 0.42 5 100 106 0 0 6 0 50 1 0 6 50 98 0 0 0.22 0.21
在计数过程形式中,每一行表labCP
显示对应于一个风险区间的一个观察的信息。注意,Cox模型假设实验室
在风险区间内保持不变(tStart
,tStop
].的价值审查
如果在风险间隔的末尾观察到事件,则为0,如果未观察到事件,则为1。
例如,患者3在第0天和第50天有两个实验室测量值,因此在计数过程表单中患者3有两行数据。Cox模型假设实验室结果0.18和0.22分别在区间(0,50]和(50,94)内是常数。审查
是1在(0,50)和0在(50,94),因为患者3的确切事件时间是在第94天观察的。
找一个风险区间为零的病人。
idxInvalid = labCP.ID(找到(labCP。tStart = = labCP.tStop))
idxInvalid = 4
回顾病人4的资料。
labCP(找到(labCP.ID = = idxInvalid):)
ans =2×6表ID tStart tStop审查性实验室 __ ______ _____ _________ ___ ____ 4 0 50 1 0 50 50 0 0 0.2 0.21 - 4
患者4发生事件的时间与测量第50天一致。然而,(50,50)对于Cox模型是无效的风险区间,因为该模型不接受零长度区间。将风险间隔调整为有效。您可以选择任何小于时间单位的值作为调整量。调整量的选择是任意的,它不会改变结果。
idxAdjust =找到(labCP.ID = = idxInvalid);labCP.tStop (idxAdjust (1)) = labCP.tStop (idxAdjust (1)) -0.5;labCP.tStart (idxAdjust (2)) = labCP.tStart (idxAdjust (2)) -0.5;labCP (idxAdjust:)
ans =2×6表ID tStart tStop审查性实验室 __ ______ _____ _________ ___ ____ 4 0 49.5 - 1 0 50 0 0 0.2 49.5 0.21 - 4
拟合具有时间独立变量的Cox比例风险模型性
和时间变量实验室
.
X = [labCP。性labCP.实验室]; T = [labCP.tStart labCP.tStop]; b = coxphfit(X,T,“审查”, labCP。审查,“基线”, 0)
b =2×12.0054 - 29.7530
有关如何评估Cox比例风险模型的详细信息,请参见截尾数数据的Cox比例风险模型.