Я пытаюсь выяснить, как создать кривую выживания и рассчитать P-значение для конкретной временной точки, а не всей кривой выживания.
Я использую методы surv
и survfit
из пакетов survminer
, survival
для создания объекта выживания и ggsurvplot
для рисования кривой и ее p-значения.
df_surv <- Surv(time = df$diff_in_days, event = df$survivalstat)
df_survfit <- survfit(dat_surv ~ Schedule, data = df)
ggsurvplot(
df_survfit ,
data = df,
pval = TRUE
)
Теперь он вычисляет значение p по всей кривой 2500+ дней. Я также хотел бы рассчитать P-значение с точными интервалами. Допустим, я хотел бы знать вероятность выживания в / до 365 дней.
Я не могу просто отключить все записи, у которых время выживания превышает x (например, 365) дней, как показано ниже. Тогда вероятность выживания падает до 0%, поскольку субъекты, у которых это событие произошло позже 365, не учитываются.
В этом событии нет никого, кроме живого больше, чем x дней.
df <- df[df$diff_in_days <= 365, ]
Как рассчитать P-значение в определенное время по общей кривой?
dput(head(df)
моего кадра данных для воспроизводимого примера.
structure(list(diff_in_days = structure(c(2160, 84, 273, 1245,
2175, 114), class = "difftime", units = "days"), Schedule = c(1,
1, 1, 2, 2, 2), survivalstat = c(0, 1, 1, 0, 1, 1)), row.names = c(12L,
28L, 33L, 38L, 58L, 62L), class = "data.frame")
Мой фрейм данных
- UID (каждая строка является новой записью)
- Событие произошло нет / да (0,1)
- Целочисленное количество дней до события (если событие еще не произошло, вычисляются дни от начала мониторинга до текущего (правая цензура))
EDIT:
, используя следующий код, чтобы установить для каждого события событие 0 через 365 дней.
dat$survivalstat <- ifelse(dat$diff_in_days > 365, 0, dat$survivalstat)
Он вычисляет значение p, но по всей кривой. По истечении 365 дней он остается горизонтальным до конца в течение 2500+ дней (поскольку никаких событий не происходит), и все эти события после 365 дней все еще учитываются, поскольку они все еще находятся на кривой. (Я предполагаю, что даже несмотря на то, что все точки данных после 365 одинаковы, они все равно влияют на значение P?)