Максимальная точность прогноза Кокса ph - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы разработать модель пропорционального риска Кокса с r, использовать ее для прогнозирования ввода и оценки точности модели.Для оценки я хотел бы использовать балл Бриора .

# import various packages, needed at some point of the script
library("survival")
library("survminer")
library("prodlim")
library("randomForestSRC")
library("pec")
library("rpart")
library("mlr")
library("Hmisc")
library("ipred")

# load lung cancer data
data("lung")
head(lung)

# recode status variable 
lung$status <- lung$status-1

# Delete rows with missing values
lung <- na.omit(lung)

# split data into training and testing
## 80% of the sample size
smp_size <- floor(0.8 * nrow(lung))

## set the seed to make your partition reproducible
set.seed(123)
train_ind <- sample(seq_len(nrow(lung)), size = smp_size)

# training and testing data
train.lung <- lung[train_ind, ]
test.lung <- lung[-train_ind, ]

# time and failure event
s <- Surv(train.lung$time, train.lung$status)
# create model
cox.ph2 <- coxph(s~age+meal.cal+wt.loss, data=train.lung)

# predict 
pred <- predict(cox.ph2, newdata = train.lung)

# evaluate 
sbrier(s, pred) 

в качестве результата прогноза, который я ожидал бы (как в «когда этот индивидуальный провал испытывает неудачу).Вместо этого я получаю значения вроде этого

[1]  0.017576359 -0.135928959 -0.347553969  0.112509137 -0.229301199 -0.131861582  0.044589175  0.002634008
[9]  0.345966978  0.209488560  0.002418358  

Что это значит?

Кроме того, sbrier не работает. Очевидно, он не может работать с предсказанием пред (не удивительно)

Как мне решить эту проблему? Как сделать прогноз с помощью cox.ph2? Как я могу оценить модель впоследствии?

1 Ответ

0 голосов
/ 05 июня 2018

Функция predict() не возвращает значение времени, вы должны указать аргумент type = c("lp", "risk","expected","terms","survival") в функции predict().

Если вы хотите получить коэффициенты опасности:

predict(cox.ph2, newdata = test.lung, type = "risk")

Обратите внимание, что вы хотите предсказать значения в наборе тестов, а не в обучающем наборе.

Я прочитал, что вы можете использовать модели AFT в вашем случае: https://stats.stackexchange.com/questions/79362/how-to-get-predictions-in-terms-of-survival-time-from-a-cox-ph-model

Вы также можете прочитать этот пост: Рассчитать прогноз выживания, используя модель пропорционального риска Кокса в R

Надеюсь, это поможет

...