Ответ таков: это не имеет значения .
По сути, значение согласованности проверяет, для всех сопоставимых пар времени (события и цензоры), насколько вероятно, что более позднее время имеет меньший риск (для действительно хорошей модели, почти всегда). Но поскольку e ^ u является монотонной функцией действительного u, а значение c служит только для проверки сравнений, не имеет значения, указывается ли отношение рисков, e ^ (sum {\ beta_i x_i}) или линейный предиктор , сумма {\ beta_i x_i}.
Поскольку @ 42 побудило меня создать минимальный рабочий пример, мы можем это проверить. Мы сравним значения, которые Est.Cval()
предоставляет, используя один вход с другим; и мы можем сравнить оба значения, которые мы получаем из coxph()
.
(Это последнее значение не будет точно соответствовать, потому что Est.Cval()
использует метод Uno и др. 2011 (Uno, H., Cai, T., Pencina, MJ, D'Agostino, RB & Вэй, Л.Дж. О С-статистике для оценки общей адекватности процедур прогнозирования риска с цензурированными данными о выживаемости.Статист. Мед. 30, 1105–1117 (2011), https://onlinelibrary.wiley.com/doi/full/10.1002/sim.4154), но это может служить проверкой работоспособности, поскольку значения должны быть близки.)
Нижеследующее основано на примере, проработанном в Анализ выживания с R , 2017-09-25, Джозефом Риккертом, https://rviews.rstudio.com/2017/09/25/survival-analysis-with-r/.
library("survival")
library("survC1")
# Load dataset included with survival package
data("veteran")
# The variable `time` records survival time; `status` indicates whether the
# patient’s death was observed (status=1) or that survival time was censored
# (status = 0).
# The model they build in the example:
coxModel <- coxph(Surv(time, status) ~ trt + celltype + karno + diagtime +
age + prior, data=veteran)
# The results
summary(coxModel)
Обратите внимание, с-счет, который он нам дает:
Concordance= 0.736 (se = 0.021 )
Теперь мы вычисляем c-показатель, заданный Est.Cval()
для двух типов значений:
# The value from Est.Cval(), using a risk input
cvalByRisk <- Est.Cval(mydata=cbind(time=veteran$time, event=veteran$status,
predictions=predict(object=coxModel, newdata=veteran, type="risk")),
tau=2000, nofit=TRUE)
# The value from Est.Cval(), using a linear predictor input
cvalByLp <- Est.Cval(mydata=cbind(time=veteran$time, event=veteran$status,
predictions=predict(object=coxModel, newdata=veteran, type="lp")),
tau=2000, nofit=TRUE)
И мы сравним результаты:
cvalByRisk$Dhat
[1] 0.7282348
cvalByLp$Dhat
[1] 0.7282348