Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Modelo de peligros proporcionales de Cox con covariables dependientes del tiempo

Este ejemplo muestra cómo convertir datos de supervivencia en formulario de proceso de recuento y, a continuación, construir un modelo de peligros proporcionales de Cox con covariables dependientes del tiempo.

Paso 1. Compare el diseño estándar y el formulario del proceso de conteo.

Un modelo Cox con covariables dependientes del tiempo requiere que los datos de supervivencia estén en forma de proceso de conteo y no en el diseño estándar. Para ver la diferencia entre los datos de supervivencia en el diseño estándar y en el formulario de proceso de recuento, cargue los siguientes datos de ejemplo.

load simplesurvivaldata

Estos datos de ejemplo contienen dos tablas: y.relapseSrelapseCP Estas dos tablas representan los mismos datos de supervivencia simples en el diseño estándar y en la forma de proceso de recuento, respectivamente.

Visualice los datos en el layout estándar.

relapseS
relapseS=2×5 table
    ID    Time    Censoring    Age    StopTreatment
    __    ____    _________    ___    _____________

    1       5         0        20          NaN     
    2      20         1        30           12     

Estos datos representan a dos pacientes cuyo estado de tratamiento cambia con el tiempo. El paciente 1 no estaba tomando tratamiento para el intervalo de la semana 0 a 5 y recaída al final del intervalo. Paciente 2 estaba tomando tratamiento para el intervalo de la semana 0 a 12, pero no para el intervalo de la semana 12 a 20. El paciente 2 no recayó y abandonó el estudio después de la semana 20.

Ahora muestre los mismos datos en el formulario de proceso de recuento.

relapseCP
relapseCP=3×6 table
    ID    tStart    tStop    Censoring    Age    TreatmentStatus
    __    ______    _____    _________    ___    _______________

    1        0        5          0        20            0       
    2        0       12          1        30            1       
    2       12       20          1        30            0       

En el formulario de proceso de recuento, cada fila representa el intervalo de riesgo en lugar de un valor único de un tiempo de evento. es 0 si el evento se observa al final del intervalo de riesgo, y 1 si no lo es. corresponde a una covariable dependiente del tiempo, que representa la misma información con el layout estándar.(tStart,tStop]CensuraTreatmentStatusStopTreatment Tenga en cuenta que un modelo de Cox asume que las covariables dependientes del tiempo son constantes en cada intervalo de riesgo.

Paso 2. Cargue datos de muestra.

A continuación, cargue los datos de muestra para convertirlos.

load survivaldatacp

Estos datos de ejemplo contienen una tabla, que se simula datos de supervivencia, incluyendo la medición repetida para cada paciente en el diseño estándar.labS

Visualice los datos de supervivencia simulados en el layout estándar.

labS
labS=6×7 table
    ID    Time    Censoring    Sex    Lab_0    Lab_50    Lab_100
    __    ____    _________    ___    _____    ______    _______

    1      46         0         1      0.3       NaN       NaN  
    2     138         1         0      0.2      0.23      0.39  
    3      94         0         1     0.18      0.22       NaN  
    4      50         0         0     0.21       0.2       NaN  
    5     106         0         0     0.25      0.21      0.42  
    6      98         0         0     0.21      0.22       NaN  

En el layout estándar, cada fila de la tabla muestra información para un paciente.

  • indica el ID de un paciente.ID No se incluye como entrada de un modelo de Cox.ID Incluya en un conjunto de datos para confirmar que el conjunto de datos se convierte correctamente al formulario de proceso de recuento.ID

  • representa el tiempo de evento en días, que corresponde a una variable de respuesta.Time

  • tiene la información de censura para cada paciente, donde 1 indica datos censurados y 0 indica que el tiempo exacto para el evento se observa al final del período de observación.Censura

  • es un predictor independiente del tiempo donde 1 indica hembra, y 0 indica macho.Sex

  • , y representan tres resultados de laboratorio consecutivos medidos en el día 0, 50 y 100, que corresponden a un predictor dependiente del tiempo.Lab_0Lab_50Lab_100

Paso 3. Convierta datos de supervivencia a formulario de proceso de conteo.

Para convertir los datos de supervivencia al formulario de proceso de conteo, ejecute el código de abajo.labS Este código se convierte en un intervalo de riesgo y combina tres vectores del predictor dependiente del tiempo, y, en un vector,.Time(tStart,tStop]Lab_0Lab_50Lab_100Lab

mTime = [0 50 100]; % Measurement time threeLabs = [labS.Lab_0 labS.Lab_50 labS.Lab_100];  nLabMeasure = sum(sum(~isnan(threeLabs))); % Number of lab measurements data = zeros(nLabMeasure,6); % One row for each observation oID = 0; % Observation ID  for i = 1 : size(labS,1)     idx = find(mTime <= labS.Time(i));     for j = 1 : length(idx)-1         oID = oID + 1;         data(oID,:) = [labS.ID(i) mTime(j:j+1) 1 labS.Sex(i) threeLabs(i,j)];     end     oID = oID + 1;     data(oID,:) = [labS.ID(i) mTime(length(idx)) labS.Time(i) ...              labS.Censoring(i) labS.Sex(i) threeLabs(i,length(idx))]; end labCP = table(data(:,1),data(:,2),data(:,3),data(:,4),data(:,5),data(:,6), ...     'VariableNames', {'ID','tStart','tStop','Censoring','Sex','Lab'});

Visualice los datos de supervivencia en el formulario del proceso de conteo.

labCP
labCP=13×6 table
    ID    tStart    tStop    Censoring    Sex    Lab 
    __    ______    _____    _________    ___    ____

    1        0        46         0         1      0.3
    2        0        50         1         0      0.2
    2       50       100         1         0     0.23
    2      100       138         1         0     0.39
    3        0        50         1         1     0.18
    3       50        94         0         1     0.22
    4        0        50         1         0     0.21
    4       50        50         0         0      0.2
    5        0        50         1         0     0.25
    5       50       100         1         0     0.21
    5      100       106         0         0     0.42
    6        0        50         1         0     0.21
    6       50        98         0         0     0.22

En la forma de proceso de conteo, cada fila de tabla muestra información de una observación correspondiente a un intervalo de riesgo.labCP Tenga en cuenta que un modelo de Cox asume que es constante en el intervalo de riesgo.Lab(tStart,tStop] El valor en es 0 si se observa un evento al final del intervalo de riesgo y 1 si no se observa un evento.Censura

Por ejemplo, el paciente 3 tiene dos mediciones de laboratorio en el día 0 y 50, por lo que hay dos filas de datos para el paciente 3 en forma de proceso de conteo. Un modelo Cox asume que los resultados de laboratorio 0,18 y 0,22 son constantes en el intervalo (0, 50) y (50, 94], respectivamente. es 1 en (0, 50) y 0 in (50, 94] porque el tiempo exacto del evento del paciente 3 se observa en el día 94.Censura

Paso 4. Ajuste el intervalo de riesgo de longitud cero.

Encuentre un paciente que tenga un intervalo de riesgo de longitud cero.

idxInvalid = labCP.ID(find(labCP.tStart == labCP.tStop))
idxInvalid = 4 

Revise los datos para el paciente 4.

labCP(find(labCP.ID==idxInvalid),:)
ans=2×6 table
    ID    tStart    tStop    Censoring    Sex    Lab 
    __    ______    _____    _________    ___    ____

    4        0       50          1         0     0.21
    4       50       50          0         0      0.2

El tiempo de evento del paciente 4 coincide con el día de medición 50. Sin embargo, (50, 50] es un intervalo de riesgo no válido para un modelo de Cox porque el modelo no acepta un intervalo de longitud cero. Ajuste el intervalo de riesgo para que sea válido. Puede elegir cualquier valor menor que la unidad de tiempo como un importe de ajuste. La elección de un importe de ajuste es arbitraria y no cambia el resultado.

idxAdjust = find(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 table
    ID    tStart    tStop    Censoring    Sex    Lab 
    __    ______    _____    _________    ___    ____

    4         0     49.5         1         0     0.21
    4      49.5       50         0         0      0.2

Paso 5. Construya un modelo de peligros proporcionales de Cox.

Ajuste un modelo de peligros proporcionales de Cox con la variable independiente del tiempo y la variable dependiente del tiempo.SexLab

X = [labCP.Sex labCP.Lab]; T = [labCP.tStart labCP.tStop]; b = coxphfit(X,T,'Censoring',labCP.Censoring,'Baseline',0)
b = 2×1

    2.0054
   29.7530

Para obtener más información sobre cómo evaluar un modelo de peligros proporcionales de Cox, consulte.Modelo de peligros proporcionales de Cox para datos censurados

Consulte también

Ejemplos relacionados

Más acerca de