Моделирование ускоренного времени отказа: построение вероятностей выживания с помощью CI-s (приведен пример)

Поскольку предположение о пропорциональных рисках нарушается моими реальными данными, я использую модель AFT, пытаясь рассчитать скорректированные вероятности выживания для интересующих групп исследования. Пример ниже относится к почкам. data, и я попытался выполнить ciTools виньетка.

library(tidyverse)
library(ciTools)
library(here)
library(survival)
library(survminer)

#data
kidney

таблица

Модель

fit1 =  survreg(Surv(time, censored) ~ sex + age + disease, data = kidney)


Call:
survreg(formula = Surv(time, censored) ~ sex + age + disease, 
    data = kidney)

Coefficients:
(Intercept)   sexfemale         age   diseaseGN   diseaseAN  diseasePKD 
 8.41830937 -0.93959839 -0.01578812 -0.25274448 -0.38306425 -0.32830433 

Scale= 1.642239 

Loglik(model)= -122.1   Loglik(intercept only)= -122.7
    Chisq= 1.33 on 5 degrees of freedom, p= 0.931 
n= 76 

Добавление вероятности выживания для обоих полов для выживания не менее 365 дней

probs = ciTools::add_probs(kidney, fit1, q = 365,
                        name = c("prob", "lcb", "ucb"),
                        comparison = ">")
probs

введите здесь описание изображения

Пытаетесь построить графики вероятностей выживания в течение одного года для обоих полов, но есть несколько точечных оценок для geom_point?

Мне кажется, что эти точечные оценки даны для каждого значения age. Могу ли я изменить прогноз, чтобы он был сделан для среднего или медианного возраста?

probs %>% ggplot(aes(x = prob, y = sex)) +
    ggtitle("1-year survival probability") +
    xlim(c(0,1)) +
    theme_bw() +
    geom_point(aes(x = prob), alpha = 0.5, colour = "red")+
    geom_linerange(aes(xmin = lcb, xmax = ucb), alpha = 0.5)

введите здесь описание изображения

Однако этот подход работает с простой моделью

fit2 =  survreg(Surv(time, censored) ~ sex, data = kidney)

probs2 = ciTools::add_probs(kidney, fit2, q = 365,
                            name = c("prob", "lcb", "ucb"),
                            comparison = ">")

probs2 %>% ggplot(aes(x = prob, y = sex)) +
    ggtitle("1-year survival probability") +
    xlim(c(0,1)) +
    theme_bw() +
    geom_point(aes(x = prob), alpha = 0.5, colour = "red")+
    geom_linerange(aes(xmin = lcb, xmax = ucb), alpha = 0.5)

введите здесь описание изображения

Вопросы:

  1. Как я могу получить скорректированные вероятности выживания для обоих полов? Или, если это невозможно, какие возможны альтернативы? Код поможет с альтернативами.
  2. Если я хочу получить скорректированные вероятности выживания для обоих полов и для разных моментов времени, должен ли я изменить значение q в функции ciTools::add_probs()? Например: q = 30 на один месяц; q = 90 в течение трех месяцев и т. д. Или мне следует запускать отдельную модель для каждого периода времени?

person st4co4    schedule 03.03.2021    source источник


Ответы (1)


Как вы настроили эти модели, прогнозы возвращаются для каждого человека в наборе данных kidney на основе значений ковариат, включенных в модель.

В вашу первую модель вы включили sex + age + disease, чтобы получить прогноз для каждой комбинации этих трех значений ковариат в вашем наборе данных.

Во второй модели вы включили только sex в качестве предиктора, поэтому вы получаете прогнозы только на основе пола.

Функции прогнозирования модели выживания позволяют указать набор значений ковариат, на основе которых можно прогнозировать в новом фрейме данных. Согласно руководству для add_probs.survreg, вы делаете это, указав новый кадр данных с указанными значениями ковариат в аргументе df функции. Вы использовали фрейм данных kidney, поэтому получили прогнозы для всех этих случаев.

Я не знаком с ciTools::add_probs конкретно, но такое программное обеспечение обычно (без предупреждения) принимает ваши значения для ковариат, которые вы указываете, а затем использует некоторый тип среднего значения для ковариат, которые вы не указываете. Поскольку средние значения не имеют большого значения для категориальных ковариат, таких как disease, обычно лучше указать полный полезный набор значений для всех ковариат самостоятельно.

Функции в rms package в R часто работают лучше. при предоставлении полезных прогнозов, поскольку они выбирают типичные, а не средние значения для неуказанных ковариат, на основе начальной оценки набора данных с помощью функции datadist(), выходные данные которой вы затем указываете в качестве системной опции. Кривая обучения для этого пакета немного крутая, но она того стоит, если вы будете много заниматься моделированием выживания или другим регрессионным моделированием.

person EdM    schedule 04.03.2021