Давайте воспользуемся следующим примером:
генерировать данные о выживании (1000 образцов с 30 переменными)
library(glmnet)
library(survival)
set.seed(10101)
N=1000;p=30
nzc=p/3
x=matrix(rnorm(N*p),N,p)
beta=rnorm(nzc)
fx=x[,seq(nzc)]%*%beta/3
hx=exp(fx)
ty=rexp(N,hx)
tcens=rbinom(n=N,prob=.3,size=1)
y=cbind(time=ty,status=1-tcens)
использовать glmnet для определения переменных, связанных с выживанием
fit=glmnet(x,y,family="cox")
cvfit <- cv.glmnet(x, y, family="cox")
plot(cvfit)
coefficients <- coef(fit, s = cvfit$lambda.min)
active_coefficients <- coefficients[,1] != 0
матрица подмножеств и сохранить только те параметры (n = 17), которые были определены glmnet как релевантные.
x_selected <- x[,active_coefficients]
создать модель Кокса с соответствующими параметрами (n = 17)
summary(coxph(Surv(y[,1],y[,2])~x_selected))
Вопрос, который сейчас возникает передо мной, заключается в том, могу ли и как я могу включить информацию из n = 17 параметров, чтобы получить единую (в идеале бинарную) предикторную переменную для создания графика Каплана-Мейера, который иллюстрирует прогностическую эффективность этого 17-параметра на основе подпись. Я мог бы использовать PCA и бинаризировать главный компонент (а затем использовать это для графика Каплана-Мейера), но я уверен, что должен быть более элегантный способ, поскольку в основном идентичный анализ, который я хотел бы выполнить, недавно был выполнен. другими (см. http://ascopubs.org/doi/pdf/10.1200/JCO.2012.45.5626 & http://ascopubs.org/doi/suppl/10.1200/jco.2012.45.5626/suppl_file/DS2_JCO.2012.45.5626.pdf -> авторы использовали glmnet и определили 20 генов, имеющих отношение к прогнозирование выживания (пока что мой код идентичен) Затем они, однако, также показывают графики Каплана-Мейера, где они объединили эти «20 генных сигнатур» в одну переменную с 3 уровнями [«низкий», «средний», «высокий»] - посмотрите на рисунок 1 C и D. Я не уверен, как я могу воспроизвести это на своем примере.Есть идеи?
Благодарю вас!