Модель выживающего конкурирующего риска Кокса - PullRequest
0 голосов
/ 27 апреля 2018

Я использую пакет survival для анализа конкурирующих рисков и хотел бы использовать прогноз для моделирования.

Я планирую выбрать равномерный случайный x из [0, 1], найти время завершения по кривой выживания, которая пересекается с x; а затем выберите еще одну случайную букву y из [0, опасность1 + опасность2], чтобы решить, какое конечное состояние выбрать.

Я могу извлечь кривую выживания, но не знаю, какова опасность для отдельных конкурирующих государств. Я скопировал пример из "Виньетки" "конкурировать" из пакета survival ниже:

data(mgus2)
cfit1 <- coxph(Surv(etime, event=="pcm") ~ age + sex + mspike, mgus2)
etime <- with(mgus2, ifelse(pstat==0, futime, ptime))
event <- with(mgus2, ifelse(pstat==0, 2*death, 1))
event <- factor(event, 0:2, labels=c("censor", "pcm", "death"))
cfit2 <- coxph(Surv(etime, event=="death") ~ age + sex + mspike, mgus2)
cfit1 <- coxph(Surv(etime, event=="pcm") ~ age + sex + mspike, mgus2)
newdata <- expand.grid(sex=c("F", "M"), age=c(60, 80), mspike=1.2)
newdata
temp <- matrix(list(), 3,3)
dimnames(temp) <- list(from=c("Entry", "PCM", "Death"),
to =c("Entry", "PCM", "Death"))
temp[1,2] <- list(survfit(cfit1, newdata, std.err=FALSE))
temp[1,3] <- list(survfit(cfit2, newdata, std.err=FALSE))
csurv <- survfit(temp, p0 =c(1,0,0))

Похоже, что csurv$pstate содержит кривую выживания и совокупные опасности. Но я не понимаю их отношения. Я попытался поддержать выживание, сложив две совокупные опасности и взяв опыт, как показано ниже, но результаты отличаются от кривой выживаемости.

exp(-(csurv$pstate[,2]+csurv$pstate[,3]))
csurv$pstate[,1]

Как они связаны? Как я могу использовать их для моделирования?

1 Ответ

0 голосов
/ 28 апреля 2018

В документации говорится, что в объекте выживания есть элемент prev, который является "распространенностью в состоянии". (Возможно, Терри забыл исправить документацию, когда поменял имя?) Поскольку это вероятность, в любой момент времени сумма вероятностей должна быть равна 1. И поэтому вы не возводите их в степень. Когда я табулирую rowSums компонента pstate, все суммы (три значения в строке) находятся в пределах числовой ошибки 1,0. Таким образом, возведение в степень суммы будет равно e, а не то, что вы ожидали. Я бы бросил операцию exp. Это уже сделано для вас "за кадром".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...