Cox пропорциональная модель опасностей с зависящими от времени ковариантами

Этот пример показывает, как преобразовать данные о выживании в подсчет формы процесса и затем создать Cox пропорциональная модель опасностей с зависящими от времени ковариантами.

Шаг 1. Сравните стандартное размещение и подсчет формы процесса.

Модель Cox с зависящими от времени ковариантами требует, чтобы данные о выживании были в подсчете формы процесса а не в стандартном размещении. Чтобы видеть различие между данными о выживании в стандартном размещении и в подсчете формы процесса, загрузите следующие выборочные данные.

load simplesurvivaldata

Эти выборочные данные содержат две таблицы: relapseS и relapseCP. Эти две таблицы представляют те же простые данные о выживании в стандартном размещении и в подсчете формы процесса, соответственно.

Отобразите данные в стандартном размещении.

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

    1       5         0        20          NaN     
    2      20         1        30           12     

Эти данные представляют двух пациентов, состояние обработки которых изменяется в зависимости от времени. Терпеливый 1 не брал обработку для интервала с недели от 0 до 5 и вновь впал в конце интервала. Терпеливые 2 брали обработку для интервала с недели от 0 до 12, но не для интервала с недели 12 - 20. Терпеливые 2 не вновь впали и оставили исследование после недели 20.

Теперь отобразите те же данные в подсчете формы процесса.

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       

В подсчете формы процесса каждая строка представляет интервал риска (tStart,tStop] вместо одного значения времени события. Censoring 0, если событие наблюдается в конце интервала риска, и 1, если это не. TreatmentStatus соответствует зависящему от времени коварианту, который представляет ту же информацию с StopTreatment в стандартном размещении. Обратите внимание на то, что модель Cox принимает зависящие от времени коварианты, чтобы быть постоянной в каждом интервале риска.

Шаг 2. Загрузка демонстрационных данных.

Затем, загрузите выборочные данные, чтобы преобразовать.

load survivaldatacp

Эти выборочные данные содержат таблицу labS, которая является моделируемыми данными о выживании включая повторное измерение для каждого пациента в стандартном размещении.

Отобразите моделируемые данные о выживании в стандартном размещении.

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  

В стандартном размещении каждая строка таблицы показывает информацию для одного пациента.

  • ID указывает на ID пациента. Вы не включаете ID как вход модели Cox. Включайте ID в набор данных, чтобы подтвердить, что набор данных правильно преобразован в подсчет формы процесса.

  • Time представляет время событию в днях, которое соответствует переменной отклика.

  • Censoring имеет информацию о цензуре для каждого пациента, где 1 указывает, что подвергнутые цензуре данные и 0 указывают, что точное время к событию наблюдается в конце периода наблюдения.

  • Sex является независимым от времени предиктором, где 1 указывает, что розетка, и 0 указывает на штекер.

  • Lab_0, Lab_50 и Lab_100 представляют три последовательных лабораторных результата, измеренные в день 0, 50, и 100, которые соответствуют зависящему от времени предиктору.

Шаг 3. Преобразуйте данные о выживании в подсчет формы процесса.

Чтобы преобразовать данные о выживании labS в подсчет формы процесса, выполните код ниже. Этот код преобразовывает Time в интервал риска (tStart,tStop] и комбинирует три вектора зависящего от времени предиктора, Lab_0, Lab_50 и Lab_100, в один вектор, Lab.

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'});

Отобразите данные о выживании в подсчете формы процесса.

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

В подсчете формы процесса каждая строка таблицы labCP показывает информацию одного наблюдения, соответствующего одному интервалу риска. Обратите внимание на то, что модель Cox принимает Lab, чтобы быть постоянной в интервале риска (tStart,tStop]. Значение в Censoring 0, если событие наблюдается в конце интервала риска, и 1, если событие не наблюдается.

Например, терпеливые 3 имеет два лабораторных измерения в день 0 и 50, таким образом, существует две строки данных для терпеливых 3 в подсчете формы процесса. Модель Cox принимает результаты лаборатории 0.18 и 0.22, чтобы быть постоянной в интервале (0,50] и (50,94], соответственно. Censoring 1 в (0,50] и 0 в (50,94], потому что точное время события терпеливых 3 наблюдается в день 94.

Шаг 4. Настройте интервал риска нулевой длины.

Найдите пациента, у которого есть интервал риска нулевой длины.

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

Рассмотрите данные для терпеливых 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

Время к событию терпеливых 4 совпадает со днем измерения 50. Однако (50,50] недопустимый интервал риска для модели Cox, потому что модель не принимает нулевой интервал длины. Настройте интервал риска, чтобы быть допустимыми. Можно выбрать любое значение меньше, чем единица измерения времени как объем корректировки. Выбор объема корректировки произволен, и он не изменяет результат.

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

Шаг 5. Создайте Cox пропорциональная модель опасностей.

Соответствуйте Cox пропорциональная модель опасностей независимой переменной времени Sex и зависящая от времени переменная Lab.

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

Для получения дополнительной информации о том, как оценить Cox пропорциональная модель опасностей, смотрите Cox Пропорциональная Модель Опасностей для Подвергнутых цензуре Данных.

Смотрите также

Связанные примеры

Больше о